论文笔记《Fully Convolutional Networks for Semantic Segmentation》

版权声明:转载请注明作者与网址,谢谢 https://blog.csdn.net/zsx1713366249/article/details/85091631

FCN 的全称是Fully Convolutional Networks,即全卷积网络。通常的CNN是在若干个卷积层之连接上若干个全连接层,将卷积层产生的特征图映射成一个固定长度的特征向量。例如,AlexNet就是五个卷积层后面连接三个全连接层,它在Imagenet数据集上的输出就是一个1000维的向量,表示图像属于每一类的概率(通过softmax产生最后的预测)。

       FCN的出现最早是用于解决语义级别的图像分割问题。FCN与CNN的直接区别就是,将CNN后面的全连接层全都换成卷积层,就是FCN。如下图所示。

图1 CNN与FCN

       CNN的强大之处在于它的多层结构能自动学习特征,并且可以学习到多个层次的特征:这些抽象特征对物体的大小、位置和方向等敏感性更低,可以很好地判断出一幅图像中包含什么类别的物体,但是因为丢失了一些物体的细节,不能很好地给出物体的具体轮廓、指出每个像素具体属于哪个物体,因此做到精确的分割就很有难度。

       全连接层和卷积层之间唯一的不同就是卷积层中的神经元只与输入数据中的一个局部区域连接,并且在卷积列中的神经元共享参数。然而在两类层中,神经元都是计算点积,所以它们的函数形式是一样的。因此,将此两者相互转化是可能的。

       全连接层转化为卷积层:在两种变换中,将全连接层转化为卷积层在实际运用中更加有用。假设一个卷积神经网络的输入是 224x224x3 的图像,一系列的卷积层和下采样层将图像数据变为尺寸为 7x7x512 的激活数据体。AlexNet使用了两个尺寸为4096的全连接层,最后一个有1000个神经元的全连接层用于计算分类评分。我们可以将这3个全连接层中的任意一个转化为卷积层:

       1)针对第一个连接区域是[7x7x512]的全连接层,令其滤波器尺寸为F=7,这样输出数据体就为[1x1x4096]了。

       2)针对第二个全连接层,令其滤波器尺寸为F=1,这样输出数据体为[1x1x4096]。

       3)对最后一个全连接层也做类似的,令其F=1,最终输出为[1x1x1000]

       实际操作中,每次这样的变换都需要把全连接层的权重W重塑成卷积层的滤波器。这样的转化在下面的情况下可以更高效:让卷积网络在一张更大的输入图片上滑动,得到多个输出,这样的转化可以让我们在单个向前传播的过程中完成上述的操作。而这就是传统的CNN网络用于图像分割时需要进行的操作。

扫描二维码关注公众号,回复: 4568452 查看本文章

       比如,如果我们想让224×224尺寸的浮窗,以步长为32在384×384的图片上滑动,把每个经停的位置都带入卷积网络,最后得到6×6个位置的类别得分。上述的把全连接层转换成卷积层的做法会更简便。如果224×224的输入图片经过卷积层和下采样层之后得到了[7x7x512]的数组,那么,384×384的大图片直接经过同样的卷积层和下采样层之后会得到[12x12x512]的数组。然后再经过上面由3个全连接层转化得到的3个卷积层,最终得到[6x6x1000]的输出((12 – 7)/1 + 1 = 6)。这个结果正是浮窗在原图经停的6×6个位置的得分。

       下图是一个全卷积层,FCN输入的图像是H*W大小,第一层pooling后变为原图大小的1/4,第二层变为原图大小的1/8,第五层变为原图大小的1/16,第八层变为原图大小的1/32。

图2 全卷积网络的图像尺寸

       文章采用的网络经过5次卷积+池化后,图像尺寸依次缩小了 2、4、8、16、32倍,对最后一层做32倍上采样,就可以得到与原图一样的大小。作者发现,仅对第5层做32倍反卷积(deconvolution),得到的结果不太精确。于是将第 4 层和第 3 层的输出也依次反卷积。如下图为上采样过程。

图3 分别做 8、16、32倍上采样,双线性插值输出3个不同尺度的结果

      

       关于将FCN网络用于细粒度分类的文章之后再看。

 

参考网址:

Long J, Shelhamer E, Darrell T. Fully convolutional networks for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 3431-3440.

代码初学者 全卷积网络FCN详解(主要参考)

 

猜你喜欢

转载自blog.csdn.net/zsx1713366249/article/details/85091631