FCN算法详解

时间:2024-05-22 17:17:49

                                     基于全卷积网络的语义分割

1. 摘要

      卷积网络是一种强大的视觉模型,可产生特征的层次结构。卷积网络在语义分割方面的应用已超过了最先进的水平。本文关键是建立“全卷积”网络,它接受任意大小的输入,并通过有效的前向传播产生相应大小的输出。本文定义并详细描述了全卷积网络的空间,解释了它们在空间稠密预测任务中的应用,并与先验模型建立了联系。本文首先将分类网络(AlexNet、VGG和GoogLeNet)调整为全卷积网络,并通过微调初始化分割任务;然后,定义一个跳跃结构,它将来自深层、粗糙的语义信息与来自浅层、细致的外观信息结合起来,从而生成精确而详细的分割信息。全卷积网络在Pascal VOC、NYUD、SIFT-flow数据集实现了最好的预测效果,对于一幅典型图像的预测时间不到五分之一秒。

2. 算法框架

       卷积网络正在推动着图像识别方面的进步,其不仅改进了整体图像的分类效果,而且在具有结构化输出的局部任务上也取得了进步,包括边界框目标检测,关键点预测等。

       自然下一步是改进在像素级别上的预测。其实,以前的方法已经使用卷积网络进行语义分割任务,其中每个像素都被标记为属于目标或属于其他区域,但让具有缺点。

       FCN和CNN的区别:CNN卷积层之后连接的是全连接层;FCN卷积层之后仍连接卷积层,输出的是与输入大小相同的特征图。

本文提出一个端到端,像素对像素的全卷积网络用于语义分割任务,超过了目前最先进的结论。据我们所知,这是首次将FCNs端到端用于像素预测和有监督的预训练。

FCN算法详解

       上图将网络学习将粗糙的、高层信息与细致的、低层信息结合起来。池化层和预测层显示为显示相对空间粗细的网格,而中间层显示为垂直线。第一行(FCN-32s):上采样步长为32,一步将预测大小恢复为原图像大小,这样做导致损失信息过多的信息,结果不够精细,为了解决此问题,作者引入了跳级连接的策略;第二行(FCN-16s):首先将最后一层上采样,然后和池4层的预测结合起来,最后再上采样恢复为原图大小,使网络能够更好地预测细节,同时保留高级别的语义信息;第三行(FCN-8s):同样的,先上采样再结合高层信息,最后上采样为原图大小,可获得更高的精度。预测结果如下图所示:

FCN算法详解

3. 损失函数

       卷积网络中的每一层数据都是尺寸为h*w*d的三维数组,其中h和w是空间维数,d是通道数。第一层是图像,图像大小为h*w,d个颜色通道。

        卷积网络是建立在平移不变性的基础上的。它们的基本组成部分卷积、池化和**函数是在局部输入区域上运算的,并且只依赖于相关的空间坐标。特定层中位置(i,j)的向量为xij,为计算之后为yij:

FCN算法详解

       其中,k为卷积核大小,s是步长,fks决定层类型:卷积、平均值池化、最大值池化、**函数等等。

       FCN网络的训练损失为最后一层中每个像素的softmax损失之和。

4. 卷积运算

       卷积运算可划分为三种:Same卷积、Valid卷积、Full卷积(反卷积)。

4.1 Same卷积

       通过Padding填充0运算保证卷积前后特征图大小不变,即W1=W2、H1=H2。公式为:(W1-F+2P)/S+1 = W2

若令W1=W2则可计算填充0的P的值为多少。如,令F=3,S=1,W1=5,则计算P=1.

FCN算法详解

4.2 Valid卷积

    不加入Padding运算,直接进行卷积运算,特征图会变小。公式为:(W1-F)/S+1=W2

    如,令W1=5,F=3,S=1,则W2=3

FCN算法详解

4.3 Full卷积

      实现反卷积运算的核心步骤是在特征图中padding 0,然后进行卷积运算使得特征图变大。公式为:(W1-F+2P)/S+1 = W2

      如,令W1=5,F=3,P=2,S=1,则W2=7

FCN算法详解

    虽然在卷积图中padding0,但是反卷积后的

4.4 FCN反卷积

        而本文使用的反卷积运算方式则不同于以上的Full卷积方式,而是首先对特征图各神经元之间进行0填充,即上池化;然后再进行卷积运算。计算公式为:(W11)×S-2×P+F=W2

FCN算法详解

        如,令W1=3,S=2,P=1,F=3,则W2=5

5. 训练过程

         以对Pascal VOC数据集进行语义分割为例,则基于AlexNet特征提取的FCN网络的结构为:

FCN算法详解

        其中,输入图像大小为500*500*3,预测输出维度为500*500*21(20类+背景),蓝色竖线表示卷积运算,绿色竖线表示池化运算,灰色竖线表示crop运算;

5.1 微调(权重初始化)

FCN算法详解

      将在ImageNet数据集中训练的网络参数初始化FCN网络的参数,不使用红色部分的参数。

5.2 FCN-32s

FCN算法详解

输入图像大小为500*500*3,卷积网络阶段获得的特征图为16*16*21;然后反卷积运算的步长为32直接获得最终的预测结果;

5.3 FCN-16s

FCN算法详解

    输入图像大小为500*500*3,卷积网络阶段获得的特征图为16*16*21;然后第一次反卷积运算的步长为2获得34*34*21的特征图,并将其与pool4的特征图进行连接;最后进行第二次反卷积运算,步长为16获得最终的预测结果;

5.4 FCN-8s

FCN算法详解

       输入图像大小为500*500*3,卷积网络阶段获得的特征图为16*16*21;然后第一次反卷积运算的步长为2获得34*34*21的特征图,并将其与pool4的特征图进行连接;接着进行第二次反卷积运算,步长为2获得70*70*21的特征图,并将其与pool3的特征图进行连接;最后进行第三次反卷积运算,步长为8,获得最终的预测结果;

6. 模型的评价指标

        本文使用了四种常用于语义分割场景下的评价方式

FCN算法详解

FCN算法详解

      其中,nij表示将本属于第i类的像素预测为属于第j类的像素数量;ncl表示像素的类别总数;ti表示属于第i类的像素总数。