DeepFace: 结构化图片的特殊处理

Taigman Y, Yang M, Ranzato M A, et al. Deepface: Closing the gap to human-level performance in face verification

由 Facebook 提出。广义的人脸识别是说看到这个人脸,确定它是谁,而落在应用/产品层面,更多的是 verification,先拿到别人的照片,做一个 model,再拿一张新的照片,来判断是不是这个人,也就是人脸身份确认。

先来看一下人脸图片的数据特点:

  • 结构化:所有人脸的组成相似,理论上可以实现对齐
  • 差异化:相同的位置,形貌(appearance)不同

DeepFace 在训练神经网络前,使用了对齐(frontalization),论文认为神经网络能够 work 的原因在于一旦人脸经过对齐后,人脸区域的特征就固定在某些像素上了,所以就可以用卷积神经网络来学习特征。之后的 DeepID 和 FaceNet 并没有对齐这个步骤。

传统 CNN 用同一个卷积核对整张图片进行卷积运算,卷积核参数共享,不同局部特性对参数影响相互削弱,达不到最优的效果,对应的解决方法是局部卷积,不同的区域用不同参数。

人脸识别的基本流程

     
     
1
     
     
detect -> aligh -> represent -> classify

结构:

14

经过 3D 对齐后,形成的图像都是 152×152 的图像,输入到上述网络结构中,该结构的参数如下:

     
     
1
2
3
4
5
6
7
8
     
     
- Conv:32 个 11×11×3 的卷积核
- max-pooling: 3×3, stride=2
- Conv: 16个9×9 的卷积核
- Local-Conv: 16 个 9×9 的卷积核,参数不共享
- Local-Conv: 16 个 7×7 的卷积核,参数不共享
- Local-Conv: 16 个 5×5 的卷积核,参数不共享
- Fully-connected: 4096 维
- Softmax: 4030 维

前三层的目的在于提取低层次的特征,比如简单的边和纹理。其中 Max-pooling 层使得卷积的输出对微小的偏移情况更加鲁棒。但没有用太多的 Max-pooling 层,因为太多的 Max-pooling 层会使得网络损失图像信息。

后面三层都是使用参数不共享的卷积核,之所以使用参数不共享,有如下原因:

  • 对齐的人脸图片中,不同的区域会有不同的统计特征,卷积的局部稳定性假设并不存在,所以使用相同的卷积核会导致信息的丢失
  • 不共享的卷积核并不增加抽取特征时的计算量,而会增加训练时的计算量
  • 使用不共享的卷积核,需要训练的参数量大大增加,因而需要很大的数据量,然而这个条件本文刚好满足。

全连接层将上一层的每个单元和本层的所有单元相连,用来捕捉人脸图像不同位置的特征之间的相关性。其中,第7层(4096-d)被用来表示人脸。

全连接层的输出可以用于Softmax的输入,Softmax层用于分类。

全局部卷积连接的缺陷:

  • 预处理:大量对准,对对准要求高,原始信息可能丢失
  • 卷积参数数量很大,模型收敛难度大,需要大量数据

  • 模型可扩展性差,基本限于人脸计算


转载:http://www.shuang0420.com/2017/04/25/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%20CNN%20%E7%AC%94%E8%AE%B0(%E9%AB%98%E7%BA%A7%E7%AF%87)/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值