这是一篇semantic segmentation的文章,与之前的segmentation最大的区别在于作者运用没有使用ASPP()结构去提取特征,而采用了FPA(Feature Pyramid Attention)和GAU(Global attention upsample),即在卷积的同时引入了attention的机制(作者认为高层的信息可以对低层的信息进行指导)。个人认为attention必须发生在不同的层之间的,如果在同一层的话难以取得好的效果。
1.introduction
作者提出了分割中常见的两个问题:(1)同个物体可能存在不同的size导致了分类的困难(对于存在多种物体,轮廓是正确的但是分类错误,即把猫圈出来但是认为是狗),而PSPnet和Deeplab系列都是使用ASPP的结构来试图解决这个问题,而认为DeepLab系列使用空洞卷积会导致grid artifacts【28】的问题,而pspnet使用global average pooling则可能失去像素级别的位置信息。因此,作者提出根据高层的特征来得到pixel-level的attention来帮助低层的特征,从而增加感觉野以及更好地分类小物体。(2)高层的特征对于分类很有作用,但是却不利于像素级别的分类,即判断某个像素点属于某个类。所以作者采用对高层的特征进行pool得到一个vector(vector的长度对应通道数),相当于对低层信息的通道进行加权。
2.related work
作者指出segmentation的研究重点在于更好地利用contextual information,
(1)encoder-decoder:利用unet的结果将不同层的信息concatenate起来,但是这样没有考虑不同层之间不同的表达以及全局的context information。
(2)global context attention:以ParseNet为代表(以后补充)
(3)SPatialPyramid:这种的不足之处在于会大大地增加计算量。
3.网络结构
上图为整个网络的整体结构,下面详细讲解GAU和FPA。
(1)FPA: Feature Pyramid Attention
作者认为像SENet和EncNet这样对通道加attention是不够的,我们需要对pixel加attention,同时采纳了PSPnet的global pooling的思想,将pooling的结果与加了attention的卷积的结果相加。由于作者的方法会造成计算量的大量增加,为了减少计算量,作者再使用FPA之前减少通道数(PSPnet或者Deeplab则是之后再减少通道数)。
中间的通道提供attention的信息,下面部分采用不同的卷积核提取不同层的信息并相加起来,上面部分通过pooling得到全局信息。
(2)GAU:Global Attention Upsample
作者首先指出PSPnet和Deeplab中使用的bilinear以及DUC中使用多通道小特征图压缩成低通道大特征图会难以恢复空间的位置。现在相对流行的多阶段缓慢增加特征图的大小效果会相对更好,但是需要更大的计算量。
作者指出decoder的主要作用在于恢复类别的位置信息,而高层的特征带有充足的分类信息可以作为attention去指导低层的信息。
这里的high-level Feature在文章中就是upsample之间的特征,而low-level则是upsample之后的特征。
4.实验
4.1FPA部分的实验
(1)使用avg pooling的效果好于使用max pooling。
(2)使用FPA将结果从72.6%提高到77.54%,这个算是一个大的飞跃。
(3)在FPA中使用3*3,5*5,7*7代替三个3*3使得结果从77.54%提高到78.19%。
(4)在FPA中加上上面那部分的pooling从78.19%提高到78.37%。
4.2GAU部分的实验
作者主要比较了降低通道数采用两个不同的卷积核的效果。
4.3各个模型的实验比较