FCN全卷积神经网络是图像分割的基础网络
FCN实现了端到端的网络,输入mxm图像,输出为mxmxc的图像,其中c代表种类。
1思想概述
FCN叫做全卷积神经网络,顾名思义所有曾都是卷积层!也就是抛掉了全连接层,这是第一个改变;再者卷积神经网络卷到最后特征图尺寸越来越少,分辨率比较小,不适合我们做图像分割,好,这里引入一个上采样的做法,卷积完之后再上采样到大尺寸图;网络又考虑层数不断叠加后原图的信息丢失的比较多,那么我们这里引入一个跳层结构,把前面的第四层、第三层特征引过来叠加一下。有种resnet思想。
2FCN网络图
我们再看一下下面这个图网络的主题,从左到右卷积、池化一顿操作猛如虎(蓝色卷积,绿色池化),到了最右边16*16*4096,全连接层丢了,先给他弄到21通道再上采样到34*34*21然后合并featuremap4后再上采样,最后经过一系列得到最后500*500*21的特征图。之后怎么做?很多人没有说好,我们平时做分类是得到全连接的1*21这样对他进行softmax,21类,每类有个分数存在1*21的向量中,好我们这500*500*21是像素级别的分类,总共有500*500个像素,每个像素属于21个类别的分别得分是啥,这样用softmax计算损失。所以我们看那些标注图是每个像素有个颜色代表它所属于的类别。端到端!伟大!
端到端学习是一种解决问题的思路,与之对应的是多步骤解决问题,也就是将一个问题拆分为多个步骤分步解决,而端到端是由输入端的数据直接得到输出端的结果。
那么接下来就要解决细节问题,上采样怎么实现?怎么合并数据?
3上采样
对于低分辨率的特征图,我们常常采用上采样的方式将它还原高分辨率,这里陈述三种方法。
3.1双线性插值上采样
首先线形插值是什么?线形插值就是知道两个点的值,连一条直线,来确定中间的点的值,具体怎么做,我们找(x1,y1)、(x2,y2)连成一条直线,[x1,x2]中的点就可以用线上的点表示。
双线性插值是一个三维的坐标系,我们找到四个点来确定中心点坐标,如下图为网上找的一个例子。
这种方法计算简单,无需训练。
3.2反卷积上采样
3.2.1 怎样上采样
普通的卷积操作,会使得分辨率降低,如下图3*3的卷积核去卷积4*4得到2*2的输出。上采样的过程也是卷积,那么怎么会得到分辨率提高呢?之前我们看卷积时有个保持输出与输入同分辨率的方法就是周围补0,嗯嗯。那么你是否灵机一动,那要是让分辨率提高呢?是不是再多补一些0,对的看看图2。
图1 常规卷积操作
图2 上采样操作(四周补0)
其实呢作者在这又换了个方法,你想一下,只在四周补0会导致最边上的信息不太好,那我们把这个信息平均下,在每个像素与像素之间补0呢,看图3就是这么操作的。
图3 反卷积插零3.2.2 反卷积补多少零?
然后我们看一下参数的计算,先看一下四周补0的情况。下图给出了发卷积的参数,我们要保持转置卷积的输出核卷积的输入相同也就是i=o’,转置卷积就是反卷积。这里主要算出p为多少就是补多少个0,看我图5给出了计算。
图4 四周补零反卷积
图5 四周补0计算
再看一下反卷积间隙补0的计算如图6所示。其中插零输入是先往里面插入i‘-1个0。再计算p’
图6 间隙补0反卷积
图7 间隙补零反卷积计算
3.3反池化上采样
反池化可以用下图来理解,再池化时需要记录下池化的位置,反池化时把池化的位置直接还原,其他位置填0。
3.4 小结
三种方法各有优缺,双线性插值方法实现简单,无需训练;反卷积上采样需要训练,但能更好的还原特征图;
4跳层结构Skip-Layer
跳层结构是啥呢,就是把第四层的featuremap考虑进来和最后一层得到的featuremap上采样合并信息再进行上采样。这个结构叫做跳层。那么实际你可以再结合第三层featuremap这样上次样倍数就需要提高,考虑的源信息就越多。
5再看FCN网络
之后我们再看FCN这个网络,如果你只考虑最后一层信息,进行上采样,得到下图,这是在ALEXnet上做了修改,把最后的全连接层去掉改为卷积操作,最后卷出来16*16*21的featuremap进行了一个步长为32的双线性插值上采样得到500*500*21的图,可想而知这家伙肯定差太多了,中间这么多点都是插值插出来的!
继续,改一下,这里把那个上采样改为2倍的反卷积采样,上采样到34*34*21,然后考虑第四层featuremap对他进行1*1*21卷积得到34*34*21的图,之后再合并两个信息,直接对应元素相加,得到34*34*21然后进行步长16的上采样。在这之后考虑还不行就在考虑第三个特征层加进去!
6实验结果
实验分别对FCN32、16、8的结构做了实验,可以看出考虑浅层的信息越多,实验效果越好!
7小结
FCN给我们提供了一个上采样的思路来解决图像分辨率低的问题,以及跳层结构来考虑浅层网络的特征来考虑多图像信息。
参考文献
[1]FCN中反卷积、上采样、双线性插值之间的关系