人脸对齐:TCNN人脸关键点检测算法2015

TCNN,全名Tweaked Convolutional Neural Networks, 
其中,Tweaking implies fine-tuning the final layers for particular head pose

创新点: 
1.对CNN提取的特征进行聚类,将各簇对应的样本进行分析,最后发现同一簇表现出“相同属性”(姿态,微笑,性别)的人脸。对此,设计了K个FC5和K个FC6层,用以对不同“面部属性”的人脸进行关键点检测。 
—————————————-分割线————————————————- 
PS:总感觉这个有点trick,输入的图片有相似之处(面部属性相似),那提取到的特征自然相似啊(只要网络训练得正常),所以从提取到的特征出发去聚类,和用图像直接聚类,我认为结果肯定是一样的,但是为什么不直接从图像聚类,然后按照各簇再进行FC5,FC6的训练呢?我觉得如果直接对图像聚类,岂不是太没新意了,审稿人直接拒掉。。。 
还有就是,TCNN相当于按照姿态的不同,细分了K个“子模型”,只不过K个“子模型”共用卷积层用以提取特征,然后对应的有自己的FC5,FC6层。感觉这个模型的鲁棒性和泛化性大打折扣啊,对标准数据集可以用,工业商用场景不知如何。 
———————————正文—————————————-

2016年,Wu等人研究了CNN在人脸关键点定位任务中到底学习到的是什么样的特征,在采用GMM(Gaussian Mixture Model, 混合高斯模型)对不同层的特征进行聚类分析,发现网络进行的是层次的,由粗到精的特征定位,越深层提取到的特征越能反应出人脸关键点的位置。针对这一发现,提出了TCNN(Tweaked Convolutional Neural Networks),其网络结构如图所示:这里写图片描述这里写图片描述 
上图为Vanilla CNN(PS:Vanilla 英文翻译:香子草,香草味的。所以VCNN就是香草味的CNN 。才不是呢!vanilla还有 “普通的”意思,所以Vanilla CNN 就等于CNN !),针对FC5得到的特征进行K个类别聚类,将训练图像按照所分类别进行划分,用以训练所对应的FC6K 。测试时,图片首先经过Vanilla CNN提取特征,即FC5的输出。将FC5输出的特征与K个聚类中心进行比较,将FC5输出的特征划分至相应的类别中,然后选择与之相应的FC6进行连接,最终得到输出。 
作者通过对Vanilla CNN中间层特征聚类分析得出的结论是什么呢?又是如何通过中间层聚类分析得出灵感从而设计TCNN呢? 
作者对Vanilla CNN中间各层特征进行聚类分析,并统计出关键点在各层之间的变化程度,如图所示: 
这里写图片描述 
从图中可知,越深层提取到的特征越紧密,因此越深层提取到的特征越能反应出人脸关键点的位置。作者在采用K=64时,对所划分簇的样本进行平均后绘图如下:这里写图片描述 
从图上可发现,每一个簇的样本反应了头部的某种姿态,甚至出现了表情和性别的差异。因此可推知,人脸关键点的位置常常和人脸的属性相关联。因此为了得到更准确的关键点定位,作者使用具有相似特征的图片训练对应的回归器,最终在人脸关键点检测数据集AFLW,AFW和300W上均获得当时最佳效果。

参考博客: 
http://blog.csdn.net/tinyzhao/article/details/53559373 
http://blog.csdn.net/qq_28618765/article/details/78044098

猜你喜欢

转载自blog.csdn.net/wfei101/article/details/80543102