为什么很多做人脸的Paper会最后加入一个Local Connected Conv?
2017-09-02 09:48
489 查看
Deep face:论文。
a. 人脸检测,使用6个基点
b. 二维剪切,将人脸部分裁剪出来
c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来避免不连续
d. 将三角化后的人脸转换成3D形状
e. 三角化后的人脸变为有深度的3D三角网
f. 将三角网做偏转,使人脸的正面朝前。
g. 最后放正的人脸
h. 一个新角度的人脸(在论文中没有用到)
总体上说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。
经过3D对齐以后,形成的图像都是152×152的图像,输入到上述网络结构中,该结构的参数如下:
Conv:32个11×11×3的卷积核
max-pooling: 3×3, stride=2
Conv: 16个9×9的卷积核
Local-Conv: 16个9×9的卷积核,Local的意思是卷积核的参数不共享
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层用于分类。
a. 人脸检测,使用6个基点
b. 二维剪切,将人脸部分裁剪出来
c. 67个基点,然后Delaunay三角化,在轮廓处添加三角形来避免不连续
d. 将三角化后的人脸转换成3D形状
e. 三角化后的人脸变为有深度的3D三角网
f. 将三角网做偏转,使人脸的正面朝前。
g. 最后放正的人脸
h. 一个新角度的人脸(在论文中没有用到)
总体上说,这一步的作用就是使用3D模型来将人脸对齐,从而使CNN发挥最大的效果。
经过3D对齐以后,形成的图像都是152×152的图像,输入到上述网络结构中,该结构的参数如下:
Conv:32个11×11×3的卷积核
max-pooling: 3×3, stride=2
Conv: 16个9×9的卷积核
Local-Conv: 16个9×9的卷积核,Local的意思是卷积核的参数不共享
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层用于分类。
相关文章推荐
- 为什么一个程序终止会导致程序输出的最后几行消失
- 【原来如此】为什么很多应用都安装在/usr/local目录下?
- params 数组参数的解读 为什么:对于 params 只能在一个参数列表中使用一次 并且要放到最后
- 小明只会花钱,天天花很多钱,可最后却成了百万富翁,为什么?
- oracle下创建新用户,为什么新用户下有很多表,怎么才能建一个空用户
- 分了很多节的word文档,使用尾注插入的参考文献,最后怎么在参考文献之后加入致谢?
- 老板为什么总是最后一个知道坏消息? 推荐
- /etc/rc.local中加入的命令为什么不自动运行呢 - Linux系统管理 - ChinaUnix.net -
- 为什么很多应用都安装在/usr/local目录下
- 为什么 C语言\C++ 源程序最后一行要是一个空行?
- thinkPHP 中为什么刷新验证码要加入一个随机数
- 为什么刷新验证码要加入一个随机数
- 只有一个执行几秒的作业为什么在taskctl中要执行很久且最后自动退出了-释疑
- 只有一个执行几秒的作业为什么在taskctl中要执行很久且最后自动退出了-释疑
- 为什么很多应用都安装在/usr/local目录下?
- 为什么微服务是一个安全问题
- 作为一个程序员为什么要写博客?
- 选择排序与查找数组最大的一个数并移动到数组的最后
- 为什么很多OEM厂商抛弃液晶显示屏青睐OLED呢?
- 给phpcms v9加入一个主题radio无线电button,它可反复使用,以创建不同的专题部分内容编辑器,添加一个主题来定义自己的领域