图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)

首先说下什么是语义分割,语义分割是从像素的水平上来理解识别图像,相当于知道每一个像素是什么东西。可用于自动驾驶和医学上的。早先是利用手工特征加图模型。随着深度网络的发展,也引入的CNN,传统的CNN是有问题的:a.网络的后半段空间信息的缺失;b.输入的图片的尺寸固定。为了改进这个FCN到来了,FCN(Fully Convolutional Networks)又全卷积网络,如它的名字一样,它的所有层都是卷积层,很好的解决了降采样后的低分辨率问题。


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第1张图片
对每一个像素进行预测

FCN有三个重要的东西:卷积化;反卷积;跳层结构。

卷积化:全连接层(6,7,8)都变成卷积层,适应任意尺寸输入,输出低分辨率的分割图片。开始的5个卷积层,使图像的分辨率下降了32倍,每层降低2倍。降主要是因为Pooling池化层,相当于扫描四个像素选一个,扫描的步长是2。后面的三层是没有降采样的。我自己有画一个卷积的降纬的图解。如下第二个图:


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第2张图片


反卷积:低分辨率的图像进行上采样,输出同分辨率的分割图片。有两点注意的反卷积的卷积核是不变的。对于偶输出,有外围全部补0的反卷积,对于奇输出,有插空补0的反卷积。如下图:


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第3张图片
输入是2X2卷积的偶的,反卷积输出是上面4X4的,卷积核3X3,步长是1,补零是补了两层


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第4张图片
输入是卷积后的3X3的,反卷积的结果是5X5的,卷积核3X3,步长是2,补零是间隔补一个

跳层结构:32倍反卷积得到的分割结果粗糙,使用前面的2个卷积层的输出做融合,就是pool3和pool4后增加一个1X1的卷积层做预测,对于为何选前面两个卷积层的结果,因为较浅的网络的结果精细,较深的网络结果鲁棒,至于什么是鲁棒可以认为你灵活抗干扰罗。


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第5张图片
跳层结构图例,第一个是直接32倍上采样,第二个融合后再16倍上采样,第三个是融合后再8倍上采样

最后说下FCN网络的构架,我画了一张图:


图片语义分割-FCN(Fully Convolutional Networks for Semantic Segmentation)_第6张图片
pool池化层会导致图像下采样,前面的几层基本不变,就是6,7,8的卷积化,然后加上反卷积和跳层操作,融合是和pool4第四个池化层数据融合。

论文引用:

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(Fully Convolutional Networks for Semantic Segmentation))