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

近来,人工智能十分火热,各类应用也越来越多。人工智能APP

人工智能需要大量数据作为燃料,还需要大量运算,会给人一种高深莫测的感觉。

实际上,AI也不是可望不可即的,因为很多企业都提供了API,多层的处理他们都解决了,我们需要只是调用结果,对人工智能的运用也是可以实现普及化的。

我们也可以利用APP Inventor结合各类API或插件(aix)的运用,使APP更聪明,是值得我们探究的!

人脸识别Face Detection        aia源码与素材     aix扩展组件

主要是利用插件中的FaceDetection组件,将选择的图像上传到服务器中进行检测,并返回结果(JSON数据)。

再APP中利用返回的JSON数据,进行绘制识别结果的线条等等。

在AI2平台中导入项目A_SimpleFaceDetect1_0.aia,查看分析程序设计。

1、插件的应用

将下载解压得到的aix扩展组件 cn.edu.scut.cs.mlx.aix导入到app inventor的项目中。

  

2、组件方法一览

3、上传图片

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

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

如果不满足条件,可以用画布转换格式,或TaifunImage等图像处理插件将图像缩小。

4、处理检测结果

(1) 索引值index从1开始。
(2)GetDetectionBox返回的是一个四项的列表,包含物体包围框的左上角坐标(xmin, ymin)和右下角坐标(xmax, ymax)。四个数字范围都在[0, 1]之间。
(3) GetDetectionEncoding返回一个128维向量,可用于比较人脸的相似度。
(4)GetDetectionLandmarkPositions返回坐标(x, y)的列表, 范围在[0, 1]之间。

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为人脸包围框的坐标数据。


按顺序为左上坐标和右下坐标。
坐标0.4280155642023346等是归一化后的结果,可以分别乘上
图像的宽和高,得到以像素为单位的实际坐标。

(3)landmark为器官位置坐标数据,每一个器官有坐标列表:

"landmark": {
    "top_lip": [
        [0.47470817120622566, 0.4850187265917603],
        [0.48378728923476005, 0.4794007490636704],
        ...
    ],
    "nose_tip": [...],
    "nose_bridge": [...],
    ...
},

坐标0.47470817120622566, 0.4850187265917603等是归一化后的结果,可以分别乘上图像的宽和高,得到以像素为单位的实际坐标。

6、将相应的数据在画布上画线,绘制出检测的结果

绘制五官轮廓效果

绘制人脸位置方框

练习任务:

理解程序逻辑设计代码,尝试修改实现:在下方的画布2显示绘制人脸的轮廓线条。

猜你喜欢

转载自www.cnblogs.com/eduit/p/12111950.html