14

杨二凯 · 2019年11月29日

基于EAIDK的人脸算法应用(一)

1 产品介绍

1.1 EAIDK-310

EAIDK(Embedded Artificial Intelligence Development Kit)- 嵌入式人工智能开发套件,是全球首个采用Arm架构的人工智能开发平台,是OPEN AI LAB专为 AI 开发者精心打造,面向边缘计算的人工智能开发套件。硬件平台具备语音、视觉等传感器数据采集能力,及适用于多场景的运动控制接口;智能软件平台支持视觉处理与分析、语音识别、语义分析、SLAM等应用的基础平台和主流开源算法,满足端侧AI教育、算法应用开发、产品原型开发验证等需求。

EAIDK-310作为EAIDK产品系列中的一款套件,该套件硬件平台使用的是含有4核A53 CPU的高性能Arm SoC(瑞芯微rk3228H),通过搭载OPEN AI LAB开发的嵌入式深度学习框架Tengine,为AI应用提供简洁、高效、统一的API接口,加速终端AI产品的场景化应用落地实现。同时,使用自建的源服务器,便于用户快速上手使用。

EAIDK平台,配置专有更新源文档内容服务,该源服务器支持Tengine/Blade CV以及其他标准第三方软件安装和更新。
image.png

图表1 EAIDK-310 实物图
表格1 EAIDK-310 硬件规格

image.png

表格2 EAIDK-310 软件规格

image.png

1.2 人脸识别Vision.Face介绍

Vision.Face使用领先的人脸识别算法,优秀的人脸检测算法,独创的人脸质量评价算法、基于RGB+IR双目/双摄像头的活体防伪功能以及双摄像头可视区域校准算法。使用Tengine带来的算力提升的同时需要更小的内存,可在低成本、高性价比的智能终端提供优质的用户体验,可在低功耗、低成本高性价比的嵌入式终端上进行高效部署。

Vision.Face SDK提供友好、简洁、通用的API,可快速部署到目标硬件平台,加速人脸识别终端块速产品化落地,作为商用人脸解决方案提供商用级别的人脸识别算法、以及应用实例源代码,其中包含人脸检测、跟踪、识别、以及比对算法,提供基于嵌入式、离线模式的的高精度高速人脸识别能力。

Vision.Face SDK能够实现人脸识别、真/假人检测,配以抗逆光、抗模糊的图像优化算法来应对复杂光线环境,适用于门禁、考勤、迎宾、闸机等通行准入场景,有助于实现智能化安全管控。
人脸识别系统基本架构.png

图表2 Vision.Face业务框图

Vision.Face支持人脸检测、关键点检测、人脸属性提取等。

表格3  Vision.Face功能列表

image.png

表格4  Vision.Face算法规格

image.png

2 人脸识别应用案例功能介绍

本案例中人脸算法应用主要包括四个组成部分,分别为:人脸检测与跟踪人脸属性人脸特征提取以及人脸识别

人脸检测与跟踪:不同的人脸图像都能通过摄像头采集下来。人脸检测,即在图像中定位人脸位置的过程。在这个过程中,系统的输入是一张可能含有人脸的图片,输出是人脸位置的矩形框。而人脸跟踪,就是在人脸检测的前提下,在后续帧中持续捕获人脸的位置及其大小等信息。

人脸属性:检测到人脸后,可对人脸进行分析,获得眼、口、鼻轮廓等72个关键点定位,准确识别多种人脸属性,如性别、年龄、表情等信息。该技术可适应大角度侧脸、遮挡、模糊、表情变化等各种实际环境。人脸属性识别算法的输入是“一张人脸图”和“人脸五官关键点坐标”,输出是人脸相应的属性值。

人脸特征提取:人脸识别系统可使用的特征通常分为视觉特征、像素统计特征、人脸图像变换系数特征、人脸图像代数特征等。人脸特征提取就是针对人脸的某些特征进行的。人脸特征提取,也称人脸表征,它是对人脸进行特征建模的过程。

人脸识别:即识别出输入人脸图对应身份的过程。提取的人脸图像的特征数据与数据库中存储的特征模板进行搜索匹配,预先设定一个阈值,当相似度超过这一阈值,则把匹配得到的结果输出。人脸识别就是将待识别的人脸特征与已得到的人脸特征模板进行比较,根据相似程度对人脸的身份信息进行判断。
image.png

图表3 人脸识别系统基本架构

3人脸识别案例过程

本案例基于EAIDK-310开发套件,展示人脸算法的实际功能应用,供开发者进行二次开发参考。

3.1 获取源码

源码下载链接:ftp://ftp.eaidk.net/EAIDK310\_Source/eaidk310\_face\_package/
把下载好的源码包拷贝到U盘,把U盘插入eaidk310设备usb口,系统会自动检测U盘,截图显示如下:
image.png

图表4 插入U盘

点击“OK”,系统会自动打开U盘目录
image.png

图表5 打开U盘目录

将源码包拷贝到板子目录下

cp /run/media/openailab/3D5B-C0CF/eaidk310_face_package.zip ~

解压源码包eaidk310_face_package.zip

unzip eaidk310_face_package.zip

进入eaidk310_face_package目录

cd eaidk310_face_package/

解压eaidk310_face_demo.zip

unzip eaidk310_face_demo.zip

3.2 安装依赖

安装qt5qtcreator,及其它依赖库。

sudo dnf install qt5 qt-creator qt5-qtmultimedia-devel
sudo dnf install protobuf-devel

3.3 运行指引

在编译的目录build-eaidk_visual_embeded-Desktop-Debug,已预编译好生成eaidk_visual_embeded文件。
eaidk_visual_embeded文件添加执行权限

chmod +x eaidk_visual_embeded

执行./eaidk_visual_embeded

./eaidk_visual_embeded

系统会自动弹出FACE-SDK DEMO窗口
image.png

图表6 程序运行效果图

3.4 编译指引

如需自行编译运行,参数如下步骤:

(1) EAIDK310 DDR规格是1G,可能会碰到本地编译内存不够的情况。
可以用物理磁盘扩大一点swap内存,操作内容如下:

可以在build-eaidk_visual_embeded-Desktop-Debug目录执行已写好的脚本:

dos2unix make_swap.sh
sh make_swap.sh

脚本实际内容如下:

sudo dd if=/dev/zero of=/swapfile bs=64M count=16
sudo mkswap /swapfile
sudo chmod 600 /swapfile
sudo swapon /swapfile

执行上述脚本后,相应的flash的空间会减少1G,编译完成后,可通过以下命令恢复flash空间:

sudo swapoff /swapfile
sudo rm /swapfile

可以通过free -m查看swap内存大小。

(2) 编译依赖tengine,不过默认情况下EAIDK-310已安装tengine1.7.1版本,如必要,可以输入如下命令安装:

sudo dnf install tengine-1.7.1_EAIDK310

(默认可以忽略该步骤)

(3)开发板不带RTC电池,第一次上电开机时,系统时间会是默认时间2018-05-11,如果不修改时间,makefile文件的生成时间晚于当前系统时间,编译会提示错误。因此需要手动设置一下当前系统时间,参考命令如下:

sudo date -s "2019-11-29 09:16:30"

(该时间是当前北京时间)

(4)解压源码包,进入build-eaidk_visual_embeded-Desktop-Debug,直接输入make命令即可进行编译。

4演示使用介绍

打开软件,左侧显示人脸算法的三个示例功能:人脸跟踪、人脸属性、人脸识别,界面如下。
image.png

图表7 程序启动界面

下面是分别实测下人脸跟踪、人脸属性和人脸识别效果。

4.1 人脸跟踪

调整摄像头角度,人脸区域出现绿色的检测框,表示检测到了人脸。
image.png

图表8 人脸跟踪界面

随着人脸在画面中上下左右移动,人脸框会跟随人脸移动;右边区域显示检测到的人脸位置坐标和宽高等信息。

Position:          //人脸坐标大小信息
                   // x、y:人脸左上角位置坐标
                   // w、h:人脸宽高

4.2 人脸属性

image.png

图表9 人脸属性界面

人脸属性信息包含年龄、性别、表情、人脸质量等信息。

Age:            //年龄
Gender:         //性别    0:男性;1:女性
Emotion:        //表情    0:平静;1:高兴
Position:       //人脸坐标大小信息
                 // x、y:人脸左上角位置坐标
                 // w、h:人脸宽高
Quality:        //人脸质量

4.3 人脸识别

image.png

图表10 人脸识别界面

相比较人脸属性结果,人脸识别结果中多了两项

Score:            //相似度分值
Name:             //姓名

检测到的人脸跟人脸底库识别比对后,如果相似度超过70%,系统会显示识别结果,name即为注册人脸的姓名。
上图中由于光线、角度原因,比对结果相似度为96%,效果还是非常不错的。

4.4 性能数据

表格5 Vision.Face SDK在EAIDK-310上性能数据

image.png

EAIDK开发套件配合Vision.Face SDK,可广泛应用于写字楼、园区、学校、企事业单位等行业领域,帮助用户快速部署到目标软硬件平台,加速人脸识别终端快速产品化落地。

4 注意&FAQ

notice 1:
本次硬件配置是EAIDK310+USB单目摄像头即可,程序默认/dev/video0是USB摄像头的设备节点,暂时没有做自动探测。

notice 2:
A. 当前案例测试的USB摄像头型号是HD1080P logitech usb摄像头。

B. 后续规划会加上双目摄像头的调试。

notice 3:
案例源码中调用Face-SDK的接口,请参照源码包/eaidk310_face_package/doc目录下的Face-SDK手册和Q&A手册。

notice 4:
当修改mainwindow.ui时,重新在build-eaidk_visual_embeded-Desktop-Debug目录通过命令

qmake-qt5 ../eaidk_visual_embeded/eaidk_visual_embeded.pro -o Makefile

然后再执行make

如有疑问或想要了解更多关于EAIDK开发平台方面的内容,欢迎加入EAIDK开发者大本营,QQ群:625546458。

image.png

推荐阅读
关注数
3510
内容数
57
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息