概述
这篇文章首先引出了作者认为的语义分割中存在的两大问题:类内不一致(intra-class inconsistency)与类间无差别(inter-class indistinction)问题。针对这两大问题,这篇文章一个新的网络架构,称为Discriminative Feature Network(DFN),这个网络架构氛围两个子网络,分别命名为Border Network和Smooth Network,分别改善这两大问题。
DFN使用pre-trained的ResNet作为一个base network,在此基础上,引入两个子网络,Border Network和Smooth Network。DFN根据特征图的尺寸分为五个stage。DFN描述图如下。
1. Smooth Network
类内不一致问题主要原因在于上下文的缺失,为了解决这个问题,这篇文章使用了global average pooling。然后,使用多尺寸的感受野以及上下文来提炼spatial information。网络的浅层有更丰富的空间信息然而缺少语义一致性。而在深层,有更精确的语义一致性然而缺乏丰富的空间信息。因此,这篇文章使用类似SE Block(可参考本人上一篇博文)的模块利用高层的信息来引导低层特征的学习,以通道为单位改变各个特征图的权重从而将attention放在更为有用的特征上。
Smooth Network主要引入了两个block,分别为Channel attention block(CAB)以及Refinement residual Block(RRB)。
- Channel attention block(CAB)
CAB与SE Block非常相似,最大的不同之处SE Block的输入是global average pooling的输出(维度为1 * 1 * C),而CAB的输入首先将相邻两侧的输出进行concate(在第四层的CAB中,第五个stage的输出(global average pooling)经过上采样与第四层的第一个RRB的输出进行concate),然后进行一系列的操作(见本文第一个图),最后形成一个Weight Vector(1*1 * C),然后与low stage的输出(H * W * C)进行相乘,相当于给特征图各个通道乘上一个权重,放大作用大的特征图的重要性。最后,加上high stage的输出。 - RRB
RRB模块与Res非常相似,用于增强网络学习能力(大概)。
2. Border Network
Border Network主要用于解决类间无差别的问题。这篇文章利用语义边界指导学习(边界上的像素点更加容易被错误分类),采用了focal loss作为损失函数。
pk为正确的类标被预测的概率,当pk越小,损失值放大越多(边界上被错误预测时pk一般更大)。
focal loss为
alpha用来平衡正负样本的重要性,gamma用来解决预测困难的成本问题。
3. DFN损失函数
DFN损失函数为Border network与Smooth Network的损失函数加权相加。