Gated-SCNN是ICCV2019的文章,以往的语义分割最新方法在单个神经网络中处理 包括颜色、形状、纹理特征的密集特征表示,然而这种方法可能并不理想,因为他们包含了与识别相关的不同信息,所以本文提出了一种双流CNN结构,将形状信息放在另外一个分支中单独处理,即形状流,与经典流并行处理。
这种构架的关键在于连接两种流中间的gates,使用经典流中高级别的激活来控制形状流中低级别的激活,从而让有效地消除噪声,并帮助形状流处理边界相关的信息,这让我们可以在形状流上使用非常浅的结构,实验表明这种结构可以在物体边缘产生更清晰的预测,并且对小物体和瘦物体由更好的性能。
作者提出将颜色、形状、纹理信息一起处理会造成一个固有的无效性,因为这些信息差别很大,比如形状信息在网络后面(感受野很大时)才能表示,而颜色和纹理信息却是低级特征,这也解释了为什么跳跃连接(skip connection)和密集连接(dense connection)有效,合并其他连接有助于是不同类型的信息跨过不同规模的网络深度流动,所以,如果通过设计结构区分这些表示信息可能会得到更自热和更有效的识别流程。
这是设计出Gated-SCNN的出发点,设计的双流cnn明确的将形状信息设立为一个单独的处理分支,并且形状流和经典流在顶层之前不允许融合,在这之前新性的Gate起到让两个分支相互作用的作用,特别是用经典流中包含的高级信息来小除形状流早期的激活,使形状流在以完整的图像分辨率计算时,专注于形状信息。对于形状流,使用语义边界损失函数进行监督,在之后使用新性的损失函数,鼓励预测的语义分割与ground truth对齐,从而进一步鼓励融合层利用来自形状流的信息。
常规流也就是之前说的经典流可以由任何一个基于ResNet或者VGG的语义分割网络组长城,输入为3xHxW的图片,输出为C x H/m x W/m的特征图,m为Regular Stream的stride。中间的特征图用r表示。
形状流将Regular Stream的第一个卷积层的输出和图像梯度作为输入,输出为语义边界。网络结构由几个门控卷积层(gated convolution layers, GCL)的残差块构成,GCL确保形状流只处理边界相关的信息,输出二进制的形状mask,分辨率与原图相同,所以使用二进制交叉熵损失函数来监督形状流。中间的特征图用t表示。
混合模块以保留多尺度上下文信息的方式将前两个流的输出相结合,它将区域特征与边界特征相结合,输出精细的语义分割结果。对于K个语义分割的分类,它输出每个像素属于每个类别的概率,空间为KxHxW,其中K通道表示的是该点像素属于K类别的概率分布。具体来说使用空洞空间金字塔(ASPP)将前两个流的输出合并,这保留了多尺度上下文信息。
GCL是整个网络的关键,它通过过滤掉其他部分使得形状流只处理形状相关信息。 形状流中不包含常规流中的特征,常规流中的特征只是通过GCL 使得形状流中与常规流中包含的高级别信息不相关的激活停止。(Regular Stream中的特征停止Shape Stream 中与Regular Stream高级语义信息不相关的激活,也就是停止Shape Stream 的低级别激活,这些低级别激活一般是颜色与纹理特征,停用这些激活后Shape Stream中只剩形状特征,这样Shape Stream就更专注于形状提取)。这样可以使Shape Stream以很浅的结构、很高的分辨率运行。
设在这两个流之间一共有m个点互相作用,t ∈ 0,1,··· ,m ,其中rt(Regular Stream)和st(Shape Stream)是这两个流在这些点的特征表示,首先将rt和st concat在一起,然后用1x1的卷积层以及sigmoid函数处理得到一个注意力特征图at ∈ RH×W,公式:
其中||表示concat操作
得到at注意力特征图(attention maps)之后,GCL操作将 at点乘到st上,再加上原本的st作为残差连接,然后乘上通道权重wt,整个计算过程:
^st继续在shape stream中向后传递,整个GCL的计算过程都可导,所以可以端到端训练,在本文的实验中使用了三个GCL连接到regular stream中的第三个、第四个、最后一层上,在rt和st特征图分辨率不匹配时对rt使用双线性插值进行上采样,使其分辨率与shape stream中的st相匹配。
对于shape streams 的二进制输出边界结果,采用二进制交叉熵(BCE)损失,对于混合模型最后的输出结果,使用标准的交叉熵(CE)损失函数,总体的损失函数表达式为:
其中λ1,λ2是两个控制权重的超参数。
由结构图可见,BCEloss在s送进fusion module之前就更新了regular stream和shape stream中的参数,最后的CE loss更新了整个网络的参数。
baseline选择的是deeplabv3+,backbone选择了 ResNet-50, ResNet-101 and WideResNet
在MIoU衡量标准中,整体MIoU提高了两个点,细看物体得分可以发现在小物体方面(摩托车、交通牌,信号灯,电线杆)GSCNN有较大提升。可见加入形状流可以有效改善小物体的形状。
将误差可视化之后,可以看到在人口密集区域,deeplabv3+没有办法捕获电线杆并且把它归类为人,而在GSCNN中能够分辨出来,并且人的误差也变少了
而将GCL层的attention map可视化之后可以看出,第一个gate表示非常低级的边缘信息,而第二第三个gate则专注于物体对象的边缘,生成与类别无关的边界送入融合模块中。