FCN

作者: 徐振杰 | 来源:发表于2018-10-27 16:36 被阅读0次

    upsampling的方法有三种:
    1.shift and stitch
    2.decrease subsampling
    3.deconvolution

    shift and stitch是什么意思?

    其实和FlowNet中计算第二张图片中关于第一张图片的像素点周围的d * d区域的相似性很像。
    https://www.jianshu.com/p/e534e2be5d7d这里说的很清楚了
    设输出和输入尺寸相差 f,则将原始输入图像向右下移动 (x,y) 其中 [0,f),由此得到f * 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都没什么大用处。

    https://zhuanlan.zhihu.com/p/22976342

    相关文章

      网友评论

          本文标题:FCN

          本文链接:https://www.haomeiwen.com/subject/htvktqtx.html