美文网首页
FCN论文笔记

FCN论文笔记

作者: Alan_Ty | 来源:发表于2017-09-19 23:52 被阅读0次

    这篇文章的作者是Jonathan Long,于2015年发表于XXXX。

    这篇文章的主要贡献是:提出了一种全卷积网络,即FCN,并在图像语义分割上做出了很好的效果。

    网络框架如下:

    1. 整体的网络框架基于正常的CNN,将最后的全连接网络改为了卷积。
      这样做的效果是:
      1)网络得以接受任意维度的输入,不需要变成224x224了;
      2)最后本该是1000x1x1维的特征变成了1000xWxH维,这个w和h就是热点图的尺寸。关于这个热点图,应该是有1000张热点图,可以看出整张图片的不同区域都激活了哪种分类的输出。

    2. 在上述结构的基础上,将1000维变成21维(20种分类+背景类),再接一个反卷积层。
      这样做的效果就是:
      1)输出了21张热点图,然后通过反卷积网络变成了21张大小等于原图的Mask;
      2)21张Mask出来之后就可以和真实数据做逐像素的损失函数了,进行训练。
      这样做还有一些缺点:
      1)先得到的热点图的尺寸和最后一层卷积的特征图尺寸是相当的,在作者采用的VGG16中,尺寸为原图的1/32,这就让一层反卷积网络实现32倍的放大,结果可想而知是粗糙(coarse)的。作者后来采用了skip的方法做了精细化,但或许直接采用多层的反卷积就可以有不错的效果。
      2)这一段写的过程中被删掉了,因为写着写着发现了问题,我把删掉的放到后面,可以作为思路记录。训练的时候每个点的预测值就是一个21维的向量,做交叉熵损失函数。最后预测结果采用max算法。嗯这是一个提醒自己训练和测试不同的好例子。
      其实21张Mask出来之后他有采用一个最大值算法,使得最后输出的MAsk就一张,包括了每个点最可能的预测。这种方式有个缺陷就是它相当于把每个点的非极大预测值变成了0。之后loss具体是交叉熵还是单纯的3-2(这个不太可能)不太清楚,就以交叉熵来说,他的损失函数就是不合理的,因为可能本身该点像素预测第二名就是对的,但这下又要推倒重来。

    3. 接下来是Skip结构,是将pool3和pool4层的特征引到输出。
      具体来说,pool3和pool4层特征图的大小是pool5层的4、2倍,所以最后的热点图要先反卷积扩大为2倍、4倍再相加,然后再反卷积扩大为16倍、8倍。得到原图尺寸。
      这样做是为了让Mask更加精细,之前说过这个方法或许可以被替代

    接下来是训练过程:

    其实上面说的比较清楚了,就是利用FCN得到图像的热点图,然后通过反卷积的方式得到与原图像尺寸相同的Mask,每个像素均包含21类的预测值,然后利用这个进行训练。测试方式是取21预测值的最大为结果。
    但是还有一些细节需要说明:

    1. 作者采用了VGG网络,默认大小是224x224,在pool5层后输出尺寸变为1/32,为7x7,之后进行7x7的卷积,可以得出,最后热点图的大小并不是原图尺寸/32,而是$h_1 = (h-192)/32$。这就有2个问题:
      1)图像尺寸不能小于224,否则输出不足1.
      2)skip结构中,fc7与pool4层之间不是2倍关系。
      对于这一问题的解决方式是:
      1)图像在输入过程中被pad了100,最终尺寸变为$h_1 = (h+6)/32$,从而可以接受任意尺寸图像。
      2)对fc7反卷积x2后进行crop裁剪。(因为他多了6)
    2. 好像没了。

    总结

    这篇文章提出了一种FCN,但重点实际上在反卷积的效果上。

    相关文章

      网友评论

          本文标题:FCN论文笔记

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