最近做了些人脸识别和车牌识别的商用项目的一些尝试,目前把过程中涉及的一些技术点记录下来,方便后面进行回忆以及感兴趣伙伴的交流:
一、人脸识别
人脸识别可以简单的分为下面几个阶段:
1. 人脸检测
现在基于深度学习的人脸检测的方式有很多,比较常用的有mtcnn、retinanet、nano等,一般可以用来用来进行物体检测的方法,都可以用来进行用来人脸检测,但鉴于人脸中的一些关键点的要求,在一些场景中,不仅仅需要检测出图片中有没有人脸(几个人脸),有时还需要知道人脸上的关键点,其中比较简易版的关键点可以只包含两只眼睛、一个鼻子、嘴的两角,比较复杂点的就可以把脸的轮廓、眉毛的轮廓等都可以预测出来,可以进一步满足场景需求,最后返回矫正好的人脸图片有效区域;
2. 活体检测
在得到人脸检测的结果之后,这个人脸块还不能直接送入到人脸比对模块进行比对,因为在这个阶段,存在很大的风险,不少别有用心的人,可能使用别人电子照片或者打印的照片进行图片输入,如果此用户也进行了当前人脸识别服务的注册,这个使用如果没有活体检测,就很容易能够顺利的完成人脸的相似性的比对,进一步进行后续操作;
3. 人脸比对
人脸比对是将输入设备提供的人脸数据和数据库中已经保存的用户人脸模版数据进行比对,如果两者的相似性满足场景的要求,就算用户通过了人脸比对,否则则比对失败;
注意:在这个过程中实际上就是图片通过网络进行特征提取,这个提取的过程往往是计算密集型的,如果是服务器模式的话,这个过程往往是在服务器端完成(通常服务器中使用GPU进行计算),即使是GPU,当大批量的用户来进行比对的话,QPS也不会很高,所以很多情况下,特征的提取部分,放在终端设备上完成,而后端服务器就只完成特征的比对工作,但这样的话,就涉及到了模型的移动化部署,现在的神经网络框架有些都提供了移动版的,类似于tensorflow-lite,ncnn、mnn等;
目前人脸的整个过程正确率能达到99%+(针对国内人脸场景),个人认为能够满足商用的基本需求;
二、车牌识别
车牌识别整体的流程有车牌定位、车牌分类、车牌识别
1. 车牌定位
车牌定位可以将所有品类的车牌放在一起训练(绿牌、蓝牌、黄牌等),在训练的过程中加入车牌的品类信息,这样在车牌完成定位的同时,还能对车牌的品类进行分类,这样在后续的车牌识别中进行更加精细化;
2. 车牌识别
车牌识别目前只针对蓝牌和绿牌,由于训练集的限制,目前的效果能达到95%+(针对国内车牌)
后面会陆续放出适用版的服务,供感兴趣的伙伴玩耍
感兴趣的伙伴可以一起交流: