IDL内部分享的人脸识别技术。
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。
卷积神经网络(CNN)
局部连接
传统的神经网络是全连接,即一层的神经元与上一层的所有神经元都建立连接,这样导致参数非常多,计算量非常大,而CNN是局部连接,一层的神经元只与上一层的部分神经元建立连接,这样可以减少参数和计算量。
权值共享
给一张输入图片,用一个filter去扫时,filter里面的数就叫权重。用该filter对整个图片进行了某个特征的扫描,例如Edge detection,这个过程就是权值共享,因为权重不变。
人脸识别
多个CNN加其他层,遍历而成的人脸识别处理结构:
层提取到的信息的演进:
人脸检测
传统算法
识别:滑动窗口+分类器
用一个固定大小的窗口去滑动扫描图像,并通过分类器去分辨是否是人脸。有时候人脸在图片中过小,所以还要通过放大图片来扫描。
训练:特征+Adaboost
传统特征:LBP/HOG/Harr
图片原始的RGB信息,维度太高,计算量过大,且不具备鲁棒性,即光照和旋转,对RGB信息影响非常大。
利用LBP得到二进制值,再转换成十进制:
效果图:
Adaboost
由于移动设备对计算速度有一定要求,所以用多个弱分类器加权叠加来完成一个强分类器,从而保证速度。
深度学习
特征的选取是比较复杂的,可能需要大量的统计学和生物学知识积累,而深度学习不需要选择特征,这是其很大优势,另外通过GPU代替CPU等方式,可以得到一个更好的效果。
关键点检测、跟踪
传统算法
Cascade regression/ESR/SDM
传统算法步骤:
- 根据人脸检测的框位置,先初始化初始脸部轮廓位置;
- 进行上一步位置和图形特征检测下一步位置(一般是迭代残差);
- 进行迭代,最终得到相对准确的轮廓位置。
深度学习
深度学习算法步骤:
- 对图像进行轮廓定位态校正;
- 全局粗定位;
- 局部精细定位。
典型应用:
人脸语义分割
人脸语义分割:自定确定人脸每个pixel的所属类别(哪个器官)。
基于CDNN训练一个直接model输入图像到输出概率map的模型,然后将图像输入,即可得出pixel-level的分类概率输出。
典型应用:
属性识别
人脸属性识别:自动估计人脸的属性,比如性别、年龄、表情、人种、是否佩戴眼镜、美丑等。
传统算法
步骤:
- 基于特征点定位结果进行几何矫正;
- 手工特征提取(HOG\LBP\GABOR)
- 分类器/回归(SVM\BOOSTRING)
深度学习
基于CDNN,直接在一个网络中学习并识别出多个属性。
典型应用:
活体检测
活体检测:确定识别的物体是活物,而非死物。
人脸识别
人脸识别:根据人脸的表观特征自动识别人的身份。
深度学习
通过深度学习来进学习特征,让同一个人在特征空间中距离非常近,而不同人则非常远,且必须具备不受光照等影响的鲁棒性。
基本步骤
- 人脸检测;
- 关键点定位;
- 人脸表示。
人脸切割
将人脸切割成小块,每块去学习Model。
特征融合
将每一块学习到的特征,进行特征融合。
训练过程
- 训练分类;
- 对于两张照片的比较,用pairwise模式进行训练,得到两张图的特征,并计算特征间的距离,小于阈值时,则判断为同一个人;
- 对于三张照片的比较,用triplet模式进行训练,得到三张图之间的关系,而不是关注于距离值。