upsampling的方法有三种:
1.shift and stitch
2.decrease subsampling
3.deconvolution
shift and stitch是什么意思?
其实和FlowNet中计算第二张图片中关于第一张图片的像素点周围的区域的相似性很像。
https://www.jianshu.com/p/e534e2be5d7d这里说的很清楚了
设输出和输入尺寸相差 f,则将原始输入图像向右下移动 (x,y) 其中 [0,f),由此得到 个 coarse output。然后交错每个 coarse output 合并成大的 output,使得输出单元的感受野能够覆盖到每个输入像素。但是SAS不仅计算量大,而且比不上加了skip的fully convolution
decrease subsampling 和SAS有什么区别?
因为SAS的计算量太大,所以减少subsampling,即pooling的时候设置stride为1,效果没SAS好。因为这样卷积核只能看到原来的上采样结果的一部分,所以之后再稀疏化卷积核,即扩大感受野。但是这是一个tradeoff,因为感受野变小了,filter看到了fine information,所以计算量加大了。同时SAS是另外一种tradeoff,它的output变深,感受野没有降低,但是他不能得到比原始图片更fine的output。
deconvolution为什么好?
因为他只是将原来的卷积过程的正向和反向传播颠倒了,所以它拥有end to end的pixelwise loss。
patchwise training和full convolutional training的区别是什么?
patchwise的重复率太高了,即使有随机采样,还是重复率还是很高。但是patchwise的training可以改变class的不平衡,缓解空间的相关性,但是FCN也能通过weight the loss来达到这个效果。patch
https://stackoverflow.com/questions/42636685/patch-wise-training-and-fully-convolutional-training-in-fcn,
前面不是很懂,这里写的比较清楚了。patchwise是因为图片信息有冗余,所以在每个batch中截取不同的含有目标的小图片,就能减少冗余信息。因为你是对每个像素的语义分割,所以你对loss进行sampling也能够达到一样的效果。这也是为什么作者的标题里中写的是 Patchwise training is loss sampling。后来作者发现sampling并没有比不sampling收敛的更多,而且迭代的次数却增加了很多,因此就不采用sampling了。
文章中的skip是什么意思?
以FCN-16s为例,加了一层1*1的卷积层在pool4之后得到prediction1,之后将conv7通过双线性插值进行两次上采样得到的prediction2与prediction1融合,融合之后再通过上采样得到图片。这样做可以让得到的结果更local(这里不是很懂)。
最后作者发现,更多的training data提高了3.4的精度,其他的patch sampling, class balancing,图片的augmentation都没什么大用处。
网友评论