在美颜api接口这种涉及娱乐的软件项目接入中,2D人脸识别的应用相对还是比较广泛的。那么2D人脸识别一般是怎么实现的? 2D人脸识别因为研究的时间较长,开源数据集也比较多,因此诞生了一批准确率较高的人脸识别算法,如deepface、facenet、arcface等,这些算法的流程基本都可以按照前面说的四个大步骤(图像数据采集、人脸检测、特征提取、信息比对)进行、下面对这些2D人脸识别的实现步骤进行分析。 一、图像数据采集 图像采集主要是获取目标(这里主要是人脸)的RGB彩色图像,2D图像的获取相对简单,只需要获取到RGB的图像信息,不需要深度信息。获取图像数据的方式只需要一个普通摄像头模组即可,简单方便。 图像采集完毕之后需要对图像进行预处理,如滤波、亮度调整、去噪等,保证输出图片的质量达到要求,减少干扰。预处理是比较重要的一个环节,预处理做好了能提高后面识别步骤的准确度。常用的预处理算法有均值滤波、高斯滤波等线性滤波;中值滤波、双边滤波等非线性滤波;腐蚀、膨胀、开运算、闭运算等形态学滤波;还有伽马矫正、亮度调整、基于直方图统计的图像增强等。 二、人脸检测 人脸检测的目的是找到人脸的区域,并且将人脸的区域输出给后面的特征提取模块,完成人脸的特征提取。人脸检测步骤是一个很关键的步骤,获取人脸的boundingbox不仅只能包含人脸部分而且还要包含全部的人脸区域。如果boundingbox的大小或者坐标不准,就会使后面的特征提取步骤提取的特征不准,最后导致识别准确率下降,出现误识别。 2D人脸检测研究的时间比较长,所以相对更成熟,检测方法有传统的haar方法、还有神经网络实现的方式,而且速度很快。 1、基于haar特征 该算法灵感来源与haar小波变换,捕抓图像中的边缘、变化等信息,从而检测出人脸的位置。其检测速度及精度都达到了不错的水平,基本图片中的正脸都能检测出来,但是对侧脸检测的精度没有mtcnn高,该算法已经在opencv中实现,使用方便。 2、Face R-CNN 基于Faster R-CNN框架针对人脸检测做了专门的优化。引入了更好的center loss使得类内的差异性更小,提高了负样本在特征空间的差异性从而提高了算法的性能。 3、MTCNN 多任务的人脸检测方法,将人脸区域的检测跟人脸的关键点检测放到一起,基于cascade框架,总体上分为PNet、RNet、ONet三部分。MTCNN的准确度很高,侧脸、正脸、模糊的脸基本都能检测的比较准,运算速度都比较快。 三、特征提取 特征提取阶段是人脸识别最重要的阶段,这个阶段设计的网络模型的好坏直接决定了人脸识别准确率的高低。2D的人脸数据只有RGB,2D人脸特征提取的方法就很多了,传统算法有SURF、SIFT等,基于神经网络的有Inception、VGG、ResNet、Inception-ResNet等。 基于CNN神经网络的特征提取模型是目前的主流。CNN神经网络特征提取的实现分为四个步骤:神经网络设计、损失函数设计、训练、推理。 以上就是美颜api中2D人脸识别的技术流程简介。