人工智能APP-人脸识别Face Detection

幽沉谢世事,俯默窥唐虞。这篇文章主要讲述人工智能APP-人脸识别Face Detection相关的知识,希望能为你提供帮助。
近来,人工智能十分火热,各类应用也越来越多。人工智能APP
人工智能需要大量数据作为燃料,还需要大量运算,会给人一种高深莫测的感觉。
实际上,AI也不是可望不可即的,因为很多企业都提供了API,多层的处理他们都解决了,我们需要只是调用结果,对人工智能的运用也是可以实现普及化的。
我们也可以利用APP Inventor结合各类API或插件(aix)的运用,使APP更聪明,是值得我们探究的!
人脸识别Face Detection          aia源码与素材      aix扩展组件

人工智能APP-人脸识别Face Detection

文章图片
主要是利用插件中的FaceDetection组件,将选择的图像上传到服务器中进行检测,并返回结果(JSON数据)。
再APP中利用返回的JSON数据,进行绘制识别结果的线条等等。
在AI2平台中导入项目A_SimpleFaceDetect1_0.aia,查看分析程序设计。
1、插件的应用
将下载解压得到的aix扩展组件  cn.edu.scut.cs.mlx.aix导入到app inventor的项目中。
人工智能APP-人脸识别Face Detection

文章图片
   
人工智能APP-人脸识别Face Detection

文章图片

 
2、组件方法一览
人工智能APP-人脸识别Face Detection

文章图片

3、上传图片
1. 使用图像选择框等组件获取JPG格式图像文件的路径
2. 调用UploadAndUseImage, 将图像上传到服务器
3. 上传结束后, 产生ImageUploadFinished事件,此时可以通过GetUploadedImageURL获取图像的URL。如果URL为空,则表示上传失败。
人工智能APP-人脸识别Face Detection

文章图片

注意:上传的图像必须为JPG格式,且大小< 5MB。

如果不满足条件,可以用画布转换格式,或TaifunImage等图像处理插件将图像缩小。
4、处理检测结果
(1) 索引值index从1开始。
(2)GetDetectionBox返回的是一个四项的列表,包含物体包围框的左上角坐标(xmin, ymin)和右下角坐标(xmax, ymax)。四个数字范围都在[0, 1]之间。
(3) GetDetectionEncoding返回一个128维向量,可用于比较人脸的相似度。
(4)GetDetectionLandmarkPositions返回坐标(x, y)的列表, 范围在[0, 1]之间。
人工智能APP-人脸识别Face Detection

文章图片

5、获得的原始JSON数据
(1)使用RawJSONData方法获取原始JSON数据。每一张检测到的人脸都有location, landmark和encoding数据。
 
[
      {
              "location": [
                      0.4280155642023346,
                      0.350187265917603,
                      0.5680933852140078,
                      0.552434456928839
              ],
              "landmark": {
                      "top_lip":[
                              [0.47470817120622566,0.4850187265917603],
                              [0.48378728923476005,0.4794007490636704],
                              ...
                      ],
                      "nose_tip":[...],
                      "nose_bridge":[...],
                      ...
              },
              "encoding": [
                      -0.09882616251707077,
                      0.03372788056731224,
                      0.0321364663541317,
                      -0.04331062361598015,
                      -0.15623915195465088,
                      -0.031561896204948425,
                      -0.021884676069021225,
                      -0.051772814244031906,
                      0.17310640215873718,
                      -0.16299796104431152,
                      0.10914535820484161,
                      ...
              ]
      },
      ...
]
 
(2)location为人脸包围框的坐标数据。
人工智能APP-人脸识别Face Detection

文章图片

按顺序为左上坐标和右下坐标。
坐标0.4280155642023346等是归一化后的结果,可以分别乘上
图像的宽和高,得到以像素为单位的实际坐标。
(3)landmark为器官位置坐标数据,每一个器官有坐标列表:
"landmark": {
    "top_lip": [
        [0.47470817120622566, 0.4850187265917603],
        [0.48378728923476005, 0.4794007490636704],
        ...
    ],
    "nose_tip": [...],
    "nose_bridge": [...],
    ...
},
坐标0.47470817120622566, 0.4850187265917603等是归一化后的结果,可以分别乘上图像的宽和高,得到以像素为单位的实际坐标。
6、将相应的数据在画布上画线,绘制出检测的结果
人工智能APP-人脸识别Face Detection

文章图片

绘制五官轮廓效果
人工智能APP-人脸识别Face Detection

文章图片

人工智能APP-人脸识别Face Detection

文章图片

人工智能APP-人脸识别Face Detection

文章图片

绘制人脸位置方框
人工智能APP-人脸识别Face Detection

文章图片

练习任务:
理解程序逻辑设计代码,尝试修改实现:在下方的画布2显示绘制人脸的轮廓线条。
【人工智能APP-人脸识别Face Detection】
人工智能APP-人脸识别Face Detection

文章图片


    推荐阅读