3.1 DeepID 系列人脸识别算法
DeepID 系列人脸识别算法包括DeepID[7]、DeepID 2、DeepID 2+[8]和DeepID 3。DeepID 系列人脸识别算法的本质思想是对人脸的不同区域提取卷积特征,旨在做人脸验证。
如图3-1所示是DeepID 系列人脸识别算法的神经网络结构[7],它包含4个卷积层、3个池化层、1个全连接层和1个Softmax 分类层。全连接层(最后一个隐含层)和第4个卷积层、第3个卷积层(池化后)进行全连接,以便从图像获取多尺度的特征。该全连接层(最后一个隐含层)的神经单元个数限定为160个。
DeepID 系列人脸识别算法的关键之一是对人脸图像的预处理。首先,对人脸区域的5个人脸关键点进行定位,包括2个眼睛中心、1个鼻尖和2个嘴角。然后,以每个人脸关键点为中心,提取如图3-2所示的10张脸部切片(patch)。对每张人脸切片,选取3种不同分辨率、2种不同色彩(彩色图和灰度图)的图像,进行翻转处理(flip),因此一张人脸图像最终将提取120个切片图像[9]。使用如图3-1所示的神经网络,对每张切片图像提取160维的全连接层特征,因此,一张人脸图像最终将得到160维×120个=19200个特征,直接用于后续的基于联合贝叶斯分类算法的人脸验证步骤。在LFW 数据集上,DeepID 系列人脸识别算法的人脸验证准确率达到97.45%。本书的后续章节将详解DeepID 系列人脸识别算法的原理和应用实践(基于Caffe)。
图3-1 DeepID 系列人脸识别算法的神经网络结构[7]
图3-2 DeepID 系列人脸识别算法对人脸的不同区域提取卷积特征[7]
DeepID 2、DeepID 2+和DeepID 3改进了DeepID 系列人脸识别算法的损失函数或使用更深的神经网络结构(在VGG 和GooLeNet 的基础上构建合适的结构)[10]。GitHub 上有DeepID 系列人脸识别算法的开源实现(基于Python/TensorFlow),有兴趣的读者可以通过文献[11]和文献[12]中的源代码进行DeepID 系列人脸识别算法的理解和应用实践。