论文出处:http://arxiv.org/abs/1411.4038
估计是用来投CVPR15的,个人觉得应该至少是oral的节奏。
概述
如上图,直观地说,将所有层都变“胖”,然后就可以直接生成spatial output map了,之后可以做pixelwise的分割问题。
如何变“胖”
这里可以参考这个帖子:
http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb
上面例子讲述了怎么改写训练好的AlexNet,通过将fc6改成6x6x256x4096的conv6,fc7改成1x1x4096x4096的conv7,fc8改成1x1x4096x1000的conv8。输出从227x227改成451x451,这样就能够生成8x8的spatial output了
overfeat的trick
这里讲overfeat是怎么形成dense output的,个人有点忘了,等看回之后补充。
另一种trick,对feature map直接做upsample
这里是作者实际用的trick,本质上,就是对feature map做一个bilinear的上采样。作者还提到其实这样的上采样参数也是可以学习的,实现上基本就是对conv的FP和BP反过来。
结果
自然是state-of-the-art
coarse to fine
由于输出空间的map的步长大概是32,所以边缘很不好。于是作者想到一种方法来refine。
过程大致如上图,本质上,是认为较低层的步长比较短,感受野也比较小,能够得到更加fine的结果。于是分别作了几个heatmap,然后fusion。