FCN网络结构详解(语义分割)

FCN(Fully Convolutional Networks,全卷积网络)是首个端对端的针对像素级预测的全卷积网络

FCN网络结构详解(语义分割)_第1张图片

非常的简单有效

inference time是推理时间

FCN网络结构详解(语义分割)_第2张图片

FCN对图像进行像素级的分类,与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全连接层+softmax输出)不同,FCN提出可以把后面几个全连接都换成卷积(这样就可以接受任意尺寸的输入图像),这样就可以获得一张2维的feature map,然后采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上使用softmax进行逐像素分类。

输入图像经过卷积和池化之后,得到的 feature map 宽高相对原图缩小了32倍,提取特征之后"特征长方体"的宽高为原图像的 1/32,为了得到与原图大小一致的输出结果,需要对其进行上采样(upsampling),(图中最终输出的"厚度"是 21,因为类别数是 21,每一层可以看做是原图像中的每个像素属于某类别的概率)。

简单的来说,FCN与CNN的区别在于把于FCN将CNN最后的全连接层换成卷积层,然后再进行上采样,得到与与输入大小相同的图像,然后使用softmax获得每个像素点的分类信息,从而解决了分割问题。

在FCN中,使用了vgg16的卷积部分作为backbone,并将vgg16的最后三个全连接层也改为卷积层。除此之外,还增加了上采样部分,这里是使用转置卷积进行上采样

convolutionalization

FCN网络结构详解(语义分割)_第3张图片

FCN-32

FCN网络结构详解(语义分割)_第4张图片

它使用了vgg16的卷边部分作为backbone,并将vgg16的最后三个全连接层也改为卷积层。在上采样部分,它使

用步长为32的转置卷积将特征图上采样32倍,还原成原图大小。注意,在原论文对应的源代码中,使用双线性插

值的参数来初始化转置卷积参数。

缺点:

在上采样的过程中,一次性将最后的特征图上采样32倍,此时由于最后一层的特征图太小,所以在上采样的过程

中会损失很多细节。

FCN-16S

FCN网络结构详解(语义分割)_第5张图片

它在FCN-32S的基础上增加了一个分支,这个分支的输入部分是vgg16中的第四个池化层的输出特征图。最后将两

个分支的输出相加,然后进行16倍上采样,还原到原图大小。

FCN-8S

FCN网络结构详解(语义分割)_第6张图片

它在FCN-16S的基础上增加了一个分支,这个分支的输入部分是vgg16中的第3个池化层的输出特征图。最后将三个分支的输出相加,然后进行8倍上采样,还原到原图大小。

总结:

如果只利用反卷积对最后一层的特征图进行上采样得到原图大小的分割,由于最后一层的特征图太小,会损失很多

细节。因而提出增加Skips(跳层连接结构)将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细

节)的预测结合起来。

。因而提出增加Skips(跳层连接结构)将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细

节)的预测结合起来。

你可能感兴趣的:(深度学习,计算机视觉,cnn)