Author | wonderseen
Univ. | Xiamen University
忙里偷闲做天池图像定位竞赛,看了一些论文,几个关键结构Hourglass、PoseMachine、Deepfashion。也厚着脸皮请教了几位排名前几的大佬,后来听使用Hourglass的神仙调baseline到了5%,CPM的baseline也在10%左右Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields。除了智商压制外,还有硬件和时间成本问题,这么大的网络自己的电脑实在跑不动,只能结合其特点优化自己的小网络。要准备实习等事项,暂时停下比赛,零散地记点小心得。
![](https://i-blog.csdnimg.cn/blog_migrate/34eee7fbbd3a692e033201c36e990dd8.png)
老调重弹FCN
比赛开头几天,参考个别论文采取全连接层-编码-采样方式获得global heatmap做pose estimation,我尝试写了比较冗长的网络,以期获得稳定的效果:512*512的多通道图,20多张heatmap。直接后果是:
- 首先,模型偏大,动辄生成几百m;
- 其次,如果是one stage训练,后期收敛困难。
- 往近的想,模型太大,电脑硬盘压力大;
- 往远的想,这样的网络完全不利于嵌入移动设备,模型缩减方面任重道远。
缩减网络
大致分析下为什么上述模型会变得臃肿:
出问题最大的就是feature map-dense-upsample的操作。
- 通过一个大强度的pool或者全连接层来提取特征,浪费了空间位置,使得模型丢失了重要位置信息,难以提取稳定的特征。
- 为了弥补这个问题,需要额外加深隐藏层,提升模型特征提取能力,才能弥补信息的丢失,达到原来应有的效果。如vgg更朝换代中,不断加深网络,特征提取能力成正相关变化。纵向思考:理论上,在合适的深度范围内,网络层数越深越稳定,网络模型越大。
那么,首先为了缩减模型,我们可以想到的是:
- 在横向处理上,利用deepwise和squeeze shuffle net等处理方法,用更少的滤波器、更细粒度的卷积算子,适当的BN层,形成更身、更细、更有效的特征提取网络,有效缩减模型规模。
- 不过,做法1治标不治本。最有效的方式,应该是放弃高强度的池化过程或者全连接层,而采取全图upsample的方式。
开工:
参考3月新推的关于街景图像分割的新论文。
论文主要思想:建立多层次(大类、粗分割分割->小类、细分割)训练过程,是比较典型的multi-stage的u-net结构,模型中多次喂给分割的参考信息(多个FCN网络结合成一个)。参考它的结构,并参考deepFashion和另外一篇新作《What Catches the Eye? 》,我放弃了大强度池化层,全用2d的卷积层,包括上下采样。"街景"论文模型截图如下:
优点:
- 全用con2d增加了空间的位置信息,弥补了全连接层在这个意义上的不足,使网络可以不需要设计得那么深。
- 神经元数目大大减小了,对硬盘的压力也小得多。原来模型是400m,改善后模型只有7m。
- 层间混合了更多的参考信息,弥补模型缩小而带来的泛化性能的降低。
缺点:
- multi-stage模型的出现,原因之一是为了改善收敛的效果,对于网络性能是友好的,但是对于调参师不怎么友好,因为分阶段的训练带来的工作量成倍增加。如果把该网络改成one-stage,由于参数之间耦合性增大,很难调整出合适的dropout等。亲身试验一下午,收敛很慢,收敛很慢,收敛很慢。当然也可以不像作者那样层次那么多,这个还得取决于实验和你有多少时间。我尝试附加一层降采样的参考信息,手势项目的RDH数据集误差从1.5个像素距离提升了1.4个像素距离。
- 调参工作量比较大。
2018.04.20补:
一个月没管这个比赛,再查看排名已经掉到100开外,神仙们的游戏,作为普通玩家,游戏体验极差。