摘要:当前语义分割方法面临3个挑战。

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

本文分享自华为云社区《语义分割数据集Cityscapes上SOTA方法总结》,原文作者:fdafad。

点击关注,第一时间了解华为云新鲜技术~

4种语义分割数据集Cityscapes上SOTA方法总结的更多相关文章

  1. 笔记:基于DCNN的图像语义分割综述

    写在前面:一篇魏云超博士的综述论文,完整题目为<基于DCNN的图像语义分割综述>,在这里选择性摘抄和理解,以加深自己印象,同时达到对近年来图像语义分割历史学习和了解的目的,博古才能通今!感 ...

  2. [论文笔记][半监督语义分割]Universal Semi-Supervised Semantic Segmentation

    论文原文原文地址 Motivations 传统的训练方式需要针对不同 domain 的数据分别设计模型,十分繁琐(deploy costs) 语义分割数据集标注十分昂贵,费时费力 Contributi ...

  3. 使用LabVIEW实现基于pytorch的DeepLabv3图像语义分割

    前言 今天我们一起来看一下如何使用LabVIEW实现语义分割. 一.什么是语义分割 图像语义分割(semantic segmentation),从字面意思上理解就是让计算机根据图像的语义来进行分割,例 ...

  4. 自动网络搜索(NAS)在语义分割上的应用(一)

    [摘要]本文简单介绍了NAS的发展现况和在语义分割中的应用,并且详细解读了两篇流行的work:DARTS和Auto-DeepLab. 自动网络搜索 多数神经网络结构都是基于一些成熟的backbone, ...

  5. 比较语义分割的几种结构:FCN,UNET,SegNet,PSPNet和Deeplab

    简介 语义分割:给图像的每个像素点标注类别.通常认为这个类别与邻近像素类别有关,同时也和这个像素点归属的整体类别有关.利用图像分类的网络结构,可以利用不同层次的特征向量来满足判定需求.现有算法的主要区 ...

  6. 自动网络搜索(NAS)在语义分割上的应用(二)

    前言: 本文将介绍如何基于ProxylessNAS搜索semantic segmentation模型,最终搜索得到的模型结构可在CPU上达到36 fps的测试结果,展示自动网络搜索(NAS)在语义分割 ...

  7. PyTorch中的MIT ADE20K数据集的语义分割

    PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...

  8. Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图

    Android上掌纹识别第一步:基于OpenCV的6种肤色分割 源码和效果图 分类: OpenCV图像处理2013-02-21 21:35 6459人阅读 评论(8) 收藏 举报   原文链接  ht ...

  9. 多篇开源CVPR 2020 语义分割论文

    多篇开源CVPR 2020 语义分割论文 前言 1. DynamicRouting:针对语义分割的动态路径选择网络 Learning Dynamic Routing for Semantic Segm ...

  10. 【Semantic segmentation Overview】一文概览主要语义分割网络(转)

    文章来源:https://www.tinymind.cn/articles/410 本文来自 CSDN 网站,译者蓝三金 图像的语义分割是将输入图像中的每个像素分配一个语义类别,以得到像素化的密集分类 ...

随机推荐

  1. HttpWebResponse获取DOM数据注意之ContentEncoding

    public string GetKaiJ(string type = "ssq") { /*1.通过WebBrowser控件&HttpWebRequest获得网站信息*/ ...

  2. Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

    中午时候,在技术交流群里聊起关于Redis创始人的一些趣事,比如离开Redis之后,去写科幻小说之类的. 因为好奇科幻小说,TJ君就去搜索了一下.结果一搜,发现Redis作者最近居然又搞了个新活儿! ...

  3. 数据库系列:InnoDB下实现高并发控制

    数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库 ...

  4. Java 基础学习第二弹

    1. HashMap和HashT able的区别 HashMap和Hashtable是两种常见的哈希表数据结构,它们在实现上有一些区别. 线程安全性:Hashtable是线程安全的,而HashMap不 ...

  5. 手撕Vue-Router-提取路由信息

    前言 好了经过上一篇的学习,我们已经知道了如何监听 Hash 的变化,如何监听路径的一个变化,本篇我们就可以来实现我们自己的 VueRouter 了, 那么怎么实现呢,在实现之前我们先来回顾一下官方的 ...

  6. React、Umi、RN 整体理解

    可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么? React 1. React 起源和发展(是什么?) React 是用于构建用户界面的 Jav ...

  7. 微盟&致远OA&聚水潭&YonSuite系统对接集成整体解决方案

    前言:大部分的企业都可能只用一套系统组织架构复杂,业务流程繁琐,内部同时有OA系统.BI系统.ERP系统......且各个系统都需要独立登陆,造成IT部门数据监管困难!如何在同一套中台系统上关联多管理 ...

  8. 一文秒懂|Linux字符设备驱动

    1.前言 众所周知,Linux内核主要包括三种驱动模型,字符设备驱动,块设备驱动以及网络设备驱动. 其中,Linux字符设备驱动,可以说是Linux驱动开发中最常见的一种驱动模型. 我们该系列文章,主 ...

  9. 为什么MySQL不建议使用delete删除数据?

    MySQL并不直接建议禁止使用DELETE语句删除数据,但是在某些情况下,使用DELETE可能会带来一些潜在的问题,特别是在大型数据库中. 下面我将详细介绍为什么在某些情况下MySQL不建议过度使用D ...

  10. [cnn]cnn训练MINST数据集demo

    [cnn]cnn训练MINST数据集demo tips: 在文件路径进入conda 输入 jupyter nbconvert --to markdown test.ipynb 将ipynb文件转化成m ...