论文地址:SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
本文采用了跟U-net差不多的结构,encode(编码)、decode(解码)结构
文章中说道,现在的语义分割网络基本都是在FCN上做改进,对于decode方面也就是上采样方面的改进,因此本文也提出了一种新的上采样方式,对于上采样过程中,我们使用unmaxpooling来操作,也就是在下采样maxpooling的过程中,记住每一层maxpooling向下传递的索引,然后在上采样过程中,使用unmaxpooling也就是按着对应存储的索引进行一个pooling的逆过程
文中提出这么做有几点好处:
1、提高了分割边界的勾画程度
2、能够在end-to-end过程中减少训练参数
3、这样上采样的方法很容易实现在其他网络中
网络结构如上,encode层依旧采用VGG16的前13层卷积层,decode也一样,可以使用tranfer learning来对encode卷积层进行参数初始化。maxpooling使用size2*2,stride=2,并且储存maxpooling(max-pooling indices)的索引(也就是在每个pool window中最大的那个特征值的位置)。文章中提到在下采样(subsampling)过程中损失到边界细节,如果没有内存限制的话,应该把所有的feature map都应该储存下来用来回复边界细节,但是这么做明显是不可取的,因此本文想出了储存maxpooling的索引来记录边界细节,以后后边decode的时候进行恢复。
左图为SegNet提出的decode方式(maxpooling层记录索引),右边为FCN的decode(使用deconv进行上采样)