4 种语义分割数据集 Cityscapes 上 SOTA 方法总结
摘要:当前语义分割方法面临 3 个挑战。
本文分享自华为云社区《语义分割数据集Cityscapes上SOTA方法总结》,原文作者:fdafad。
1 Cityscapes 数据集介绍
Cityscapes 评测数据集即城市景观数据集,在 2015 年由奔驰公司推动发布,是目前公认的机器视觉领域内最具权威性和专业性的图像分割数据集之一。Cityscapes 拥有 5000 张精细标注的在城市环境中驾驶场景的图像(2975train,500 val,1525test)。它具有 19 个类别的密集像素标注(97%coverage),其中 8 个具有实例级分割。具体类别名称见于下表 1。
表 1 Cityscapes 数据集中的类别名称
2 Deep High-Resolution Representation Learning for Visual Recognition(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 中的机构由 4 个 stage 组成,每一个蓝底色块为一个 stage。在 SOTA 方法中,采用的是 HRNet-W48,其
结构图如图 3 所示。
图 3 HRNet-W48 结构图
HRNet V2-W48 是在 4 个 stage(图 3 中蓝、绿、红、黄 4 种底色区域)的头部加上 stem net(图 3 中白色底色区域),尾部加上 segment head 后(图中未画出)组成。下面按照先后顺序依次对 stem net、4 个 stage 以及 segment head 进行介绍。
(1)stem net
stem net 由两个 Bottelneck 组成,与 Resnet 的结构一样,经过两个 Bottelneck 以后,输入图像的维度由 H*W*3 变成了(H/4)*(W/4)*256
(2)4 个 stage
每个 stage 上的各个组件配置如下表 2,以 hrnet_48 为例
stage 之间通过 transition_layer 连接,stage 内由重复的基本单元 HighResolutionModule 组成。
HighResolutionModule 由分支以及分支末尾的 fuse_layers 组成。
每条分支内由重复的 basicblock 组成,具体数量见表 2
表 2 HRNet-W48 模型配置表
A:stage 间的 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 Object-Contextual Representations for Semantic Segmentation(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 进行矩阵乘:
Tensor1:pixel representation,骨干网络最后一层 FM,维度为 b×c×h×w->b×c×hw
Tensor2:soft object region,FM 经过 softmax 后的结果,维度为 b×k×h×w->b×k×hw
将 Tensor1 和 tensor2 相乘后的输出结果为 b×k×c,b×k×c 便是图 9 中对象区域特征的表示。
图 10 对象区域特征计算代码
STEP3:获得 pixel-region relation。
结合图 9 中可知,该步骤需要两个分支的 tensor 进行矩阵乘:
Tensor1:pixel representation,骨干网络最后一层 FM,维度为 b×c×h×w->b×c×hw
Tensor2:STEP2 中的对象区域特征,维度为 b×k×c
代码中将两个 tensor 的维度进行了转化,转化两个 tensor 的维度分别为 b×key×hw 和 b×key×k。两个 tensor 相乘后得到 pixel-region relation 的表达式为 b×k×h×w。
STEP4:计算最终对象特征上下文表示。
结合图 9 中可知,该步骤需要两个分支的 tensor 进行矩阵乘:
Tensor1:STEP3 中获得的 pixel-region relation,维度为 b×k×h×w
Tensor2:STEP2 中的对象区域特征,维度为 b×k×c
两个特征相乘后便得到对象上下文特征,即图 10 中的红色块。
图 11 step2-step4 中相关代码
4 SegFix: Model-Agnostic Boundary Refinement for Segmentation(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 for Semantic Segmentation
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.5 和 r= 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.0,1.5,1.0,0.5}
6 论文链接
1.HRNet:https://arxiv.org/abs/1908.07919
2.OCR:https://arxiv.org/abs/1909.11065
3.SegFix:https://arxiv.org/abs/2007.04269
4.Hierarchical Multi-Scale Attention:https://arxiv.org/abs/2005.10821
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/daef5069860bc6fb5b2c6a150】。文章转载请联系作者。
评论