关于FCN 论文中的 Shift-and-stitch 的详尽解释

本篇属于转载,原文出自:点击打开链接点击打开链接

首先思考一个问题:

当网络最后一层输出的 prediciton map size 和 label map size 不匹配时,除了 cropping, resize 等暴力措施,且不采取 bilinear , uppooling, deconvolution 等decoder 结构, 为了实现 dense prediction , 该怎么做呢?

在论文 《Fully Convolutional Networks for Semantic Segmentation》 "3.2 Shift-sttch is filter rarefaction"这一节,作者指出: 为了实现dense prediction ,他们比较了三种不同方案,分别是 shift and stitch, deceasing subsampling,deconvolution

我们首先看一下FCN作者对 shift and stitch 是怎样描述的:

弄明白之后,再去看,觉得作者描述的已经很清晰了,但是当时怎么也看不懂什么意思。网上关于这一段的翻译更是千篇一律,不知所云,所以很多博客就是搬运工的工作,互相抄来抄去。

网上的关于shift-and-stitch的解释:设原图与FCN所得输出图之间的降采样因子是f,那么对于原图的每个fxf 的区域(不重叠),“shift the input x pixels to the right and y pixels down for every (x,y) ,0 < x,y < f." 把这个f x f区域对应的output作为此时区域中心点像素对应的output,这样就对每个 fxf 的区域得到了 f2 个output,也就是每个像素都能对应一个output,所以成为了dense prediction

啥??啥???这都是些啥???? 黑人问号脸 ?????

其实 shift and stitch的做法是这样的:

设降采样因子是f , 通过 shift pixels (平移像素)的方式,产生 f2 个version 的 input ,输入网络后相应地产生 f2 个output, 然后 stitch(这个词不好翻译,先翻译成串联)所有 output 就实现了 dense prediciton。

在另一篇论文中找到了对shift and stitch 更详尽的描述 :

我们举一个简单的例子来直观地说明 shift and stitch 的做法:

 

设网络只有一层 2x2 的maxpooling 层,所以下采样因子 f =2, 我们需要对input imagepixels 平移 (x,y)个单位,即将 image 向左平移 xpixels , 再向上平移y个单位,整幅图像表现向左上方向平移,空出来的右下角就以0 padding 。我们当然可以采取 FCN论文中的做法,将图像向右下角平移,空出来的左上角用 0 padding ,这两种做法产生的结果是一致的,没有本质区别。(x,y) 取(0,0), (0,1),(1,0),(1,1) 后,就产生了 f^2^ = 4input。(回答一个读者的问题:图中的数字表示像素值,不是索引值 )

4input分别进行 2x2 的maxpooling 操作后,共产生了4output

最后,stitch the 4 different output 获得 dense prediction :

那么问题来了,是怎样进行 stitch的呢?FCN 作者的说法是:

Process each of these f2 inputs, and interlace the outputs so that the predictions correspond to the pixels at the centers of their receptive fields

说的很明白了,output 中的每个pixel都对应 original image 的不同 receptive field,将receptive field 的中心c填上这个来自outputpixel值,就是网络对original image 中像素 cprediction

为表述简洁,我用 “ 像素 i ” 表示“ 值为 i 的像素 ”

  • 红色 output中的像素1对应shifted input``(0,0) 的红色部分, 而对应 original image 的部分,也即receptive field仅仅为像素[1], 所以 receptive field 的中心为像素[1], 该位置填上红色output中像素 1 的值。

  • 黄色 output 中的像素4 对应 shifted input (1,0)的黄色部分, 而对应 original image 的部分,也即receptive field为像素 [3,4] , 所以 receptive field 的中心为像素[4], 该位置填上黄色output中像素 4 的值。

  • 以此类推..

  • 注意: 我们注意到黄色 output 中的像素 5 与红色 output 中的像素5对应的receptive field 中心是重叠的,所以将黄色 output 中的像素 5 标为灰色,表示不予考虑。同理其他ouput 中的灰色区域也代表 receptive field中心重叠的像素。

感谢作者:月牙眼的楼下小黑 ,写的这么详细,分享给大家,做优秀的博客搬运工 ~~~
再次附上链接:https://www.jianshu.com/p/e534e2be5d7d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值