CNStream demo---人脸识别 wuhao2019-12-26 12:24:29 回复 16 查看 video流处理工具 CNStream
CNStream demo---人脸识别

1.概述

人脸识别主要分为两个步骤:

  • 人脸检测:定位人脸. demo中使用mtcnn人脸检测网络,并定位landmark.

  • 人脸对齐:矫正人脸图像.demo中通过landmark确定旋转角度,对人脸做仿射变换.

  • 人脸特征提取:对人脸图像进行特征提取,demo中使用vggface.

  • 人脸特征匹配: 将提取出的特征和人脸模板库中的人脸特征进行匹配,demo中使用修正的余弦相似度.

 

2.代码复现

下载源代码

git clone https://github.com/Cambricon/CNStream.git

编译

mkdir buld 
cd build
cmake ..
make -j8

进入demo目录

cd /cnstream/apps/face_recognition

运行demo

./run.sh


注: run.sh将首先到https://github.com/Cambricon/models下载需要的mtcnn和vggface的离线模型,在运行程序前需要保证在face_recognition目录下已经生成mtcnn_model 和 vggface_model两个目录,并且目录中有对应的离线模型.

 

3.实现细节

人脸检测

人脸检测模块使用级联网络mtcnn,这一部分介绍可以参考:

http://forum.cambricon.com/index.php?m=content&c=index&a=show&catid=83&id=169

 


人脸识别

人脸识别使用vggface网络,使用vggface最后的全脸层输出的4096维向量做为人脸的特征,通过计算修正的余弦相似度做为人脸匹配的标准.

余弦相似度仅仅考虑向量在各维度方向上差异而忽略其在各维度上的值,而修正的余弦相似度通过计算各维度的均值,并将特征向量各维度减去均值,使余弦相似度评估具备了1定的判断各维度值大小差异的能力.增强了相似度评估的准确度.采用修正的余弦相似度后,人脸识别最终的置信度整体变低,但识别的准确率大大提高了.

 

 

 

4.结果展示

demo中通过json文件保存了"武林外传"主要人物的人脸模板库.

 

 

5.后期改进

vggface最后的全连接层输出4096维向量,在人脸库较多的情况下将导致人脸匹配较慢.后期可以进行PCA降维提高匹配效率,或者重训练模型,如cosface,arcface.

在非配合人脸情况下,面临侧脸,遮掩,光线不均匀等问题将导致人脸识别率较低.

热门帖子

精华帖子

官方微博 官方微信
版权所有 © 2019 寒武纪 Cambricon 备案/许可证号:京ICP备17003415
关闭