语义分割:Hierarchical multi-Scale attention+HROCR+SegFix

主要内容可分为:

1Cityscapes数据集介绍

2HRNet的动机、结构以及核心代码

3OCR的动机、结构以及核心代码

4SegFix的动机、结构以及核心代码

5)分层多尺度注意力的动机、结构

1 Cityscapes数据集介绍

Cityscapes评测数据集即城市景观数据集,在2015年由奔驰公司推动发布,是目前公认的机器视觉领域内最具权威性和专业性的图像分割数据集之一。Cityscapes拥有5000张精细标注的在城市环境中驾驶场景的图像(2975train500 val,1525test)。它具有19个类别的密集像素标注(97coverage),其中8个具有实例级分割。具体类别名称见于下表1

                                                                                 

                                                                                                表1 Cityscapes数据集中的类别名称


2 HRNet的动机、结构及核心代码

2.1动机

当前语义分割方法面临3个挑战,其中第一个挑战是基于FCN的分辨率由高到低会损失信息。

语义分割方法需要高分辨率特征,图中1展示了几种基于FCN的经典方法的,它们的共同点通过一个网络得到 低分辨 feature map,然后通过上采样或反卷积恢复到高分辨率。


图1 基于FCN方法的几种经典结构

这些看起来不同,但本质核心思路是差不多的。这些方法存在一个缺点,分辨率由高到低会损失信息

2.2 模型结构与核心代码

为了解决2.1中的问题,作者团队(MSRA和中科院)提出一个方法,核心思路是“不恢复高分辨率,而是保持分辨率”。如下图2中是一个基本的高分辨率保持网络结构,该结构把不同分辨率的feature map并联,相同分辨率的占一条分支,不同分辨率的占不同分支。并在不同分支之间添加通路(图中的斜线),形成high-resolution network

图2 基本的high-resolution network结构

2中的机构由4stage组成,每一个蓝底色块为一个stage。在SOTA方法中,采用的是HRNet-W48,其结构图如图3所示。

图3  HRNet-W48结构图

HRNet V2-W48是在4stage(图3中蓝、绿、红、黄4种底色区域)的头部加上stem net(图3中白色底色区域),尾部加上segment head后(图中未画出)组成。下面按照先后顺序依次对stem net4stage以及segment head进行介绍。

1stem net

stem net由两个Bottelneck组成,与Resnet的结构一样,经过两个Bottelneck以后,输入图像的维度由H*W*3变成了(H/4*W/4*256

24stage

  • 每个 stage 上的各个组件配置如下表2,以 hrnet_48 为例
  • stage之间通过transition_layer连接,stage内由重复的基本单元HighResolutionModule组成。
  • HighResolutionModule由分支以及分支末尾的fuse_layers组成。
  • 每条分支内由重复的basicblock组成,具体数量见表2                                                                                   

表2 HRNet-W48模型配置表


Astage间的transition layer:完成 stage之间通道转换和尺寸下采样,即图3中不同底色之间连接的直线和斜线stage之间的斜线,指向不做任何处理。



图4  stage间的transition layer构建代码

B:构建stage

每个stag均是有若干重复的HighResolutionModule组成,因此构架stage的核心在与构建HighResolutionModule。构建HighResolutionModule分两步:构建分支、构建分支末尾的fuse_layers

构建分支:图3种的4个连续的basicblock即一个分支。

                                                                       

图5 HighResolutionModule内分支构建代码

构建fuselayer:

以下图中蓝色框为例说明fuselayer层的处理过程:

                                                                     


图6 fuselayer层



图6 HighResolutionModule内fuselayer层构建代码

3 OCR的动机、结构及核心代码

3.1 动机

当前语义分割方法面临3个挑战中第二个挑战是没有解决好物体上下文信息。

上下文特征:图像中的每一个像素点不可能是孤立的,一个像素一定和周围像素是有一定的关系的,大量像素的互相联系才产生了图像中的各种物体,所以上下文特征就指像素以及周边像素的某种联系。具体到图像语义分割,就是在判断某一个位置上的像素属于哪种类别的时候,不仅考察到该像素的灰度值,还充分考虑和它临近的像素。

当前方法分析上下文信息如下图7所示,比如说红色点是我们关注的点,周围绿色几个点是采样出来的,可以看到,绿色点分为两部分,一部分是属于车的,还有一部分是属于背景的。当前方法并没有进行区分。


图7 上下文信息图

那我们该怎么办?我们找这个物体,要通过周围物体的象素表征来帮助。因此,我们需要把红色像素周围属于 object pixel取出来做为上下文,如下图8所示:


图8 对象区域上下文信息图

3.2 模型结构与核心代码

核心思路:OCR提出了一种新的关系上下文方法,该方法根据粗分割结果学习像素与对象区域特征之间的关系来增强像素特征的描述。模型结构如下图所示。

                                                                   

图9 OCR模型结构图

计算步骤:

STEP1:获得粗分割结果。

backbone最后输出的FM,在接上一组conv的操作,然后计算cross-entropy loss

STEP2:获得对象区域特征。

结合图9中可知,该步骤需要两个分支的tensor进行矩阵乘:

Tensor1pixel representation,骨干网络最后一层FM,维度为b×c×h×w->b×c×hw

Tensor2soft object regionFM经过softmax后的结果,维度为b×k×h×w->b×k×hw

Tensor1tensor2相乘后的输出结果为b×k×cb×k×c便是图9中对象区域特征的表示。


图10 对象区域特征计算代码

STEP3:获得pixel-region relation

结合图9中可知,该步骤需要两个分支的tensor进行矩阵乘:

Tensor1pixel representation,骨干网络最后一层FM,维度为b×c×h×w->b×c×hw

Tensor2STEP2中的对象区域特征,维度为b×k×c

代码中将两个tensor的维度进行了转化,转化两个tensor的维度分别为b×key×hwb×key×k。两个tensor相乘后得到pixel-region relation的表达式为b×k×h×w

STEP4:计算最终对象特征上下文表示。

结合图9中可知,该步骤需要两个分支的tensor进行矩阵乘:

Tensor1STEP3中获得的pixel-region relation,维度为b×k×h×w

Tensor2STEP2中的对象区域特征,维度为b×k×c

两个特征相乘后便得到对象上下文特征,即图10中的红色块。



图11 step2-step4中相关代码

4 SegFix的动机、结构及核心代码

4.1SegFix的动机

基于FCN的方法面临的第三个挑战是边缘分割不准确。下图12显示了分割结果的误差图。下图12中的第一列显示了分割GT图,第二列/第三/ 第四列分别显示了DeepLabv3 / HRNet / Gated-SCNN的误差图。 这些示例是从Cityscapes val set中裁剪的。 我们可以看到,对于这三种方法,在细边界上都存在许多错误。


图12 模型分割结果误差图

基于经验观察的结果,即内部像素的标签预测更加可靠,因此用内部像素的预测代替边界像素的最初不可靠的预测,可能提高模型对边缘的分割效果。提出了一种新颖的模型无关的后处理机制,通过将边界像素的标签替换为对应内部像素的标签来减少分割结果,从而减少了边界误差。

4.2模型结构与核心代码

根据4.1中的描述,理所当然的会牵引出两个问题:(1)如何确定边缘(2)如何关联边缘像素与内部像素。这里借助于一个边缘预测分支和一个方向预测分支来完成。在获得良好的边界和方向预测之后,就可以直接拿来优化现有方法预测的分割图了。所以另一问题在于,如何将现有的针对边缘的关联方向的预测应用到实际的预测优化上。这主要借助于一个坐标偏移分支。这三个分支构成了SegFix的主要结构,其结构图如图13所示。

                                                                       

图13 SegFix模型结构图

边缘预测分支


方向预测分支


获取真值:



坐标偏移分支:


5 Hierarchical multi-Scale attention

5.1动机

大尺度物体在较小分辨率的特征图上会分割的更好,而小尺度物体则需要精细的细节去推理分割结果,所以在较高分辨率的特征图上进行预测结果会更好。且论文也举例分析了此情况的缘由,如下图所示。


图12  不同尺寸物体在不同分辨率上的分割表现

因此本文采用注意力机制的方法让网络去学习如何最好地组合多个尺度的推理预测。非常直观的做法就是输入不同分辨率的图片,让网络学习一下,什么样的物体应该用什么样的分辨率。

5.2模型结构


图13 分层多尺度注意力机制

训练阶段:

本文提出的attention机制与之前的某个方法类似(Attention to scale: Scale-aware semantic image segmentation,图13中左侧方法),对于每个尺度学习一个密集的mask,然后不同尺度的预测再结合起来,这些多尺度预测通过在mask之间进行像素相乘,然后在不同尺度之间进行像素求和,从而得到最终结果。

在本文的分层方法中,学习相邻尺度之间的相对attention掩码,而不是学习每个固定尺度集的所有attention掩码。在训练网络时,只训练相邻尺度对。如上图13所示,给出一组来自lower scale的特征图,预测一个两个图像尺度之间的密集的相关attention。在实验中,为了得到scaled图像对,使用一个输入图像然后将其下采样两倍利用scale尺度2,这样,就有一个1x的输入和一个0.5x的缩放输入,当然其他scale-down尺度也可以选择。需要注意的是,网络输入本身是原始训练图像的重新缩放版本,因为我们在训练时使用图像缩放增强。这使得网络学会预测一个范围内的图像尺度的相对注意力。

在训练过程中,给定的输入图像按因子r进行缩放,其中r= 0.5表示向下采样按因子2进行,r= 2.0表示向上采样按因子2进行,r= 1表示不进行操作。对于训练过程,选择r= 0.5r= 1.0。因此,对于两种尺度的训练和推断,以U为双线性上采样操作,将∗和+分别作为像素级的乘法和加法,方程可以形式化为:


上式中注意力权重α的计算步骤:

1)获得OCR模块输出的augmentations,即图9中的正蓝色块。

2)见过若干次连续的conv-bn-relu后,获得维度为b×1的向量

3)对b×1的向量进行sogmoid后,便获得一个batch上的注意力权重α。

推理阶段:

在推理阶段,分层的应用学到的注意力来结合N个不同的scale预测。关于各尺度的组合优先考虑较低的scale,然后逐步上升到较高的scale,因为,它们具有更多的全局上下文信息,对于需要改进的scale可以使用更高scale的预测。

多尺度推理时,各尺度组合先后顺序:{2.01.51.00.5}


 

6参考链接

1.HRNethttps://www.jianshu.com/p/7e55b80614a7

2.OCRhttps://zhuanlan.zhihu.com/p/145465507

4.分层多尺度注意力:https://www.freesion.com/article/2571779332/

(完)