论文分析
论文提出了一种类似级联的神经网络结构。这一点上很遗憾,我在一个月之前也想到了这种模式。因为对于实时 Landmark 的跟踪,其实可以利用上一帧的预测结果来预测下一帧 Landmark 的位置。但现代大部分的 CNN 结构没办法办到。在与朋友的讨论中可以仿照RNN来建立时间线上的联系,解决在实时跟踪中的效率及时间稳定性。当时想动手设计并实现一个这样的网络,后来因为公司原因并没有动手,想法搁置。结果今天就看到 CVPR2017 上的这篇论文。看来以后有想法还是直接撸吧!
初窥网络架构
我自己原有的想法是,在测试阶段:对于一个输入 I ,给定一个初始形状。每一级神经网络输出的是根据输入图像得到的偏移估计 ,那么每一级都会更准确的预测脸上 Landmark 的位置:
那么我们来看论文,论文作者还是比我想的要复杂的多。哈哈哈,毕竟能在目前达到 stage of art,我那样的构想还是太简单了。
每一个 connection layers,连接了本次 STAGE 和 下一个 STAGE,并根据本次 STAGE 的数据生成了三个东西:Landmark HeatMap H,特征 Image F , 和一个变换 T(用来把图像做仿射变换到标准的Pose)。
Deep Alignment Network
DAN思想来源于Cascade Shape Regression框架,于之前我自己实现的3000fps一样。他会给定一个初始估计。但与原始框架最大的不同在于,CSR 框架基本都基于一个局部的特征,或者由粗到精的级联。但 DAN 提取的特征都是全部 image 的特征。而作者就是通过提取额外的特征输入解决这个问题–Heatmap。
一个连接层由Transform Estimation layer、Image Transform layer、Landmark Transform layer、Heatmap Generation layer、Feature Generation layer 组成。
细化结构
论文出已经给出了非常详细的网络结构,在这里就不再赘述了。详细实现请参考我的github。
zjjMaiMai/Deep-Alignment-Network-A-convolutional-neural-network-for-robust-face-alignment
实现了paper所有内容,效率能够达到实时性。在错误率上,因为数据增强的原因,比原paper结果略低但基本无影响。