引言
为什么会有这篇文章的出现,这来自于笔者在知乎闲逛之余偶然间看到的一个话题:
Topic: 语义分割该如何走下去?
Link: https://www.zhihu.com/question/390783647/answer/1233078978
回首往昔,一转眼间两年时间过去了,作为一名有幸参与过该方向的一员,当看到此类话题时不禁令人感慨好好的一条路怎么就走不下去了呢,这当中是有什么隐情?该话题目前被知乎圆桌——CVPR 2020 热点收录,里面也有部分先驱者的回答,建议还没看过的同学可以去围观一下。
恰逢举国上下疫情大放开之际,刚好得以抽出点时间整理下笔者对这个问题的一些本质思考。本文将围绕语义分割这一核心表达一些个人的观点与看法,鄙人自知资质平庸,文中难免会出现观点错漏现象,恳请大家批评指导。
什么是图像分割?
首先,考虑下面这张图片:
假设我们有一张图片,我们要解决的问题是图片中出现的是什么?没错,这是一只可爱的小狗狗,我们可以将其表述为图像分类问题。但是,当图像中同时出现两个目标呢?再看下这张图片:
现在我们需要同时在图像中识别多个对象,因此我们的问题会相应地改变,即图像中存在的物体是什么。答案显而易见,是一只狗和一只猫,为此我们可以将其表述为多标签分类问题。
现在,假设我们还关心对象存在的位置,而不仅仅是了解对象是什么应该怎么做?例如下面这张图片:
毫无疑问,这个问题是属于目标检测的范畴。
更进一步的,此时假如我们想了解对象的确切位置信息应该如何解决?换句话说,就是我们不是在对象周围绘制一个粗略的矩形框,而是在对象周围绘制一个多边形,并为该对象的每个像素进行着色,如下图所示:
好了,这便是我们今天要讨论的主角老爸——图像分割。
图像分割是一种根据存在的对象及其语义重要性对图像进行划分的像素级分类预测任务,其致力于为图像中的每一个目标都生成一个像素级别的掩膜,也就是大家耳熟能详的——mask
。
本质上来说,图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在人脑中所形成的印象或认识,照片、绘画、剪贴画、地图、书法作品、手写汉字、传真、卫星云图、影视画面、X光片、脑电图、心电图等都是图像。而在计算机中,图像是一个多维矩阵,矩阵中的每一个数字表示画面中的一个像素。换言之,一张图像就是一个包含许多像素的集合。
对于计算机视觉领域来说,图像分割指的是将数字图像细分为多个图像子区域或称为超像素的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。图像分割通常用于定位图像中的物体和边界(线,曲线等),是对图像中的每个像素加标签的一个过程,这一过程使得具有相同标签的像素具有某种共同视觉特性。
图像分割有什么用?
或许很多人心中都有一个疑问,那便是我们是否需要如此精心的预测一张图像中的目标?其实,对于绝大数CV应用场景来说,仅依赖目标检测是可以解决的。但是,这并不意味图像分割就没有存在的意义。举个简单的例子,比如癌症,大家都知道这个都是由癌细胞扩散所造成的。通常,癌细胞的形状在确定癌症的严重程度中起着至关重要的作用,这时候图像分割便派上用场了。
除了医学成像任务,图像分割还可以应用在许多领域,例如遥感领域:
借助遥感图像分割技术,我们可以轻松的识别出地面的成分,例如该地区的森林覆盖率或发现采矿甚至森林火灾等活动。再举一个比较使用的应用方向就是人像分割,自疫情爆发以来,钉钉和腾讯会议等线上视频会议软件算是妥妥的积累了一大批用户。而在这些软件中,一个比较常用的功能就是虚拟背景,这背后应用的技术便是人像分割技术:
最后,我们再介绍一个最近几年比较火的概念——自动驾驶,借此引申出图像分割包含哪些方向:
图像分割在自动驾驶领域中可用于车道线分割或场景解析等。通过精确预测重要物体(例如道路或行人)的位置,自动驾驶系统可以采取适当的步骤来处理下游任务,例如申请休息时间或让汽车减速。
上图展示了图像分割的三种常见任务,即语义分割
、实例分割
和全景分割
。
- 语义分割
语义分割描述了将每个像素与类标签相关联的过程。很简单,这里我们只关心图像中所有对象的粗略表示。在这里,你可以看到所有以蓝色表示的汽车,以红色表示的行人,以及略带粉红色的街道等。
仔细观察可以发现,属于同一类的所有目标之间并没有明显的区别,这意味着所有的车都是蓝色的。这是定义图像分割问题的最简单方法。不同类的物体产生不同的语义,而语义分割就是要将这些属于不同类别的像素进行归类,把属于同一类的像素归为一起。
- 实例分割
现在,如果你想更进一步以不同的方式表示类的每个实例,这个问题称为实例分割。
与语义分割不同,在图像分割中,我们独立地屏蔽图像中包含的对象的每个实例。所以这意味着,我们将首先关注重要的对象,然后分别识别对象的每个实例。而对于实例分割任务来说,你可以看到图像中的所有对象汽车和人都被突出显示,并且所有目标都被赋予不同的颜色以示区别。
- 全景分割
当我们把语义分割和实例分割结合起来看时,便会得到一种新的任务——全景分割。这是近几年挖的一个新坑,全景分割致力于将图像中的每个像素与分类的语义标签相关联,并识别特定类的实例。
好了,简单介绍到这里,本文将重点围绕语义分割进行介绍,接下来让我们看看它是如何一路磕磕绊绊地走过来。
历史演变
传统图像分割
图像分割最初是从数字图像处理加上优化算法开始的。这些原始算法使用区域生长等方法,在这些方法中设置初始区域,然后算法比较像素值以获得分割图的概念。
这些方法起初是对图像中的特征进行局部观察,并关注像素中的局部差异和梯度。对输入图像进行全局扫描的算法出现得晚得多,在经典图像处理方法中提出了自适应阈值化、Otsu 算法和聚类算法等方法。
基于阈值的分割
阈值化
是最简单的图像分割方法之一,其中设置阈值以将像素分为两类。值大于阈值的像素设置为 1
,而值小于阈值的像素设置为 0
。
对应的图像我们称之为二值图
,而这个过程便是二值化
。图像阈值化在两个目标类之间的像素值差异非常大的情况下非常有用,通常选择平均值作为阈值。
<,
>
阈值分割通常用于图像二值化,可应用于轮廓检测和识别等任务。
基于阈值分割方法的优点是:
- 计算简单
- 效率更高
不过,当图像中灰度值差异不明显或者灰度值出现重叠的情况,它将很难被精确的分割。
基于区域的分割
基于区域的分割算法
通过寻找相邻像素之间的相似性并将它们分组在一个公共类别下来工作。
通常,分割过程从一些像素设置为种子像素开始,算法通过检测种子像素的直接边界并将它们分类为相似或不相似来工作。
然后将直接邻居视为种子并重复这些步骤直到整个图像被分割。类似算法的一个例子是用于分割的流行分水岭算法,它从欧几里得距离图的局部最大值开始工作,并在没有两个种子可以归类为属于同一区域或分割图的约束下增长。
边缘检测分割
在具有不同灰度值的两个相邻区域之间总是存在边缘
。边缘可以被认为是图像的不连续局部特征。我们可以利用这种不连续性来检测边缘,从而定义出对象的边界。
边缘分割
,也称为边缘检测
,是检测图像中边缘的任务。
从基于分割的角度来看,我们可以说边缘检测对应于将图像中的哪些像素分类为边缘像素,并相应地将这些边缘像素挑出一个单独的类别。
边缘检测通常是通过使用特殊的过滤器来执行的,这些过滤器在卷积时为我们提供图像的边缘。这些滤波器由专门的算法计算得出,这些算法用于估计空间平面的 x 和 y 坐标中的图像梯度。
使用 Canny
边缘检测算法的边缘检测示例,最流行的边缘检测算法之一如下所示。
基于聚类的分割
依赖于图像处理技术的现代分割算法通常是使用聚类算法
进行分割。
聚类
,其实就是将具有相似性质的数据点给划分为一组,每一组我们称为一簇。聚类算法的性能优于同类算法,并且可以在短时间内提供相当好的分割效果。像 K-means
聚类算法这样的流行算法是无监督算法,它们通过将具有共同属性的像素聚集在一起作为属于特定片段来工作。
特别是,K 均值聚类考虑了所有像素并将它们分成了多个类。与区域增长方法不同,基于聚类的方法不需要种子点来开始分割。其工作流程如下:
- 随机的选择一个初始化的k值;
- 随机将每个数据点分配给k个簇中的任何一个;
- 计算各个簇之间的中心点;
- 计算每一个数据点离各个簇中心点的距离;
- 按照它们之间的距离将这些数据点分配给离它们最近的簇;
- 重新计算这些簇的中心点;
- 最后,重复步骤4-6,直到各个聚类中心点不再变化或者达到我们设定的迭代次数。
K-means
适用于数据量比较小的情况。当它应用于大型数据集时,该算法会遇到瓶颈,因为它会在每次迭代时查看所有样本,因此所耗费的时间代价很昂贵。 此外,由于K-means
是基于距离
的算法,因此它仅适用于凸数据集,不适合对非凸集群进行聚类。
现代图像分割
现代图像分割主要经历两个阶段,一个是基于传统机器学习的分割,这一块大概是从2009-2015
年期间,伴随着Adaboost
、SVM
、GMM
、C-Means
等算法的兴起,许多研究人员将这些方法应用到分割任务中。不过,大部分方法仍然属于是启发式的工作,基本都要依赖人工设计的特征。
另一个阶段便是基于深度学习的图像分割。自从全卷机神经网络(Fully Convolution Network, FCN)
这个开创性的工作被提出以来,卷积神经网络(Convolution Neural Network, CNN)
在图像分割领域的应用算是正式拉开了序幕。几乎同一时期,另一个代表性的经典工作——U-Net
,也随之诞生。
基于深度学习的分割模型通常会输出一个原图分辨率同等大小的掩码图,这些掩码图通常是 n
通道的,n
是模型的输出类别数。对应到 n
通道中的每一个掩码图本质上都是一张二分类图,存在对象的位置会被填充为 1
,而其余区域则由 0
组成,类的索引从0
到n-1
。
下面大致分几个派系带大家快速过一遍,那些年我们一起追过的语义分割网络。(多图预警)
医学图像分割
U-Net
Paper: 《U-Net: Convolutional Networks for Biomedical Image Segmentation》
Accepted by MICCAI 2016.
文章解读:https://www.zhihu.com/question/269914775/answer/586501606
U-Net
最初是在由 MICCAI
举办的细胞分割挑战比赛中大获全胜,紧接着一路开挂,在场景解析、医学图像分割、显著性检测、遥感图像分割等领域遍地开花,逐渐成为了语义分割领域的新标杆,哪怕今天爆火的 AGI
技术 Diffusion
模型中也应用到了此网络结构。
- 编码器:用于将输入图像编码为多个不同级别的特征表示,通常由一堆卷积和池化组成;
- 解码器:用于将编码器学习到的判别性特征(lower-resolution)语义逐步投影至与原始空间分辨率一致的像素空间(higher-resolution)以进行密集预测分类,通常由上采样模块和卷积组成;
- 长跳跃连接:在网络中进行上采样的同时,将来自编码器网络的更高分辨率的特征图与上采样的特征图拼接(
Concat
)起来,以便更好地学习后续卷积的表征【FCN
中采用Add
操作】。由于上采样是一种稀疏操作,因此引入早期阶段的良好先验可以更好地帮助网络定位到目标。
R2U-Net
Paper: 《Recurrent Residual Convolutional Neural Network based on U-Net (R2U-Net) for Medical Image Segmentation》
Arxiv.
文章解读:https://zhuanlan.zhihu.com/p/114471013
R2U-Net
是早期将循环卷积结构嵌入到 U-Net
的一个工作,在当时比较火,后面作者本人好像没有投稿,一直挂载 arxiv 上。不过这个网络本身精度也是不高,前几年测了下几乎在大部分医学图像分割任务上均比不过 U-Net
,也不失为一个完美的对(当)比(我)方(没)法(说),这里提一下仅留个纪念,不喜勿喷。
DSN
Paper: 《Deeply-Supervised Nets》
Accepted by PMLR 2015
深监督网络 DSN
是一种同时最小化分类错误并提高隐藏层学习过程的直接性和透明度的方法。
Attention U-Net
Paper: 《Attention U-Net: Learning Where to Look for the Pancreas》
Accepted by MIDL 2018.
文章解读:https://zhuanlan.zhihu.com/p/114471013
Attention U-Net
提出了一种应用于医学影像的基于门控注意力 attention gate
的模型,该模型可以抑制背景区域,强调前景区域,自动学习如何区分目标的外形和尺寸。
U-Net++
Paper: 《UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation》
Accepted by TMI 2019.
文章解读:https://zhuanlan.zhihu.com/p/44958351
U-Net++
的第一个优势就是精度的提升,通过整合不同层次的特征加强信息交互;第二个是灵活的网络结构配合深监督,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量。
CE-Net
Paper: 《UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation》
Accepted by TMI 2019.
CE-Net
主要包含三个主要组件,即特征编码器模块、上下文提取器和特征解码器模块。
- 特征编码器模块:使用预训练的 ResNet 块作为固定特征提取器;
- 上下文提取器模块:由密集空洞卷积(DAC)块和残差多核池(RMP)块组成,旨在来捕获更多高级信息并保留空间信息;
- 特征解码器模块:主要包括连续的1×1卷积,3×3转置卷积和1×1卷积,利用转置卷积学习自适应映射以恢复具有更多详细信息的特征。
综合结果表明,所提出的方法在视盘分割、血管检测、肺部分割、细胞轮廓分割和视网膜光学相干断层扫描层分割方面均取得了不错的效果。
nnU-Net
Paper: 《nnU-Net: Self-Adapting Framework for U-Net-Based Medical Image Segmentation》
文章解读:https://medium.com/miccai-educational-initiative/nnu-net-the-no-new-unet-for-automatic-segmentation-8d655f3f6d2a
nnU-Net
是医学图像十项全能比赛的冠军,目前在医学图像分割领域有着不可撼动的地位,相信目前研究该领域的人员应该无人不知,无人不晓。nnU-Net
本身并不侧重于网络结构的创新,更多的是提出一个统一的框架,包括针对医学影响设设计的一系列丰富的预处理、后处理和训练 tricks
等。
MultiResUNet
Paper: 《MultiResUNet : Rethinking the U-Net architecture for multimodal biomedical image segmentation》
Accepted by Neural Networks 2020.
文章解读:https://zhuanlan.zhihu.com/p/57237535
MultiResUNet
主要针对医学图像分割任务普遍存在的两个问题——尺度多样性以及不同层级特征之间融合所存在的语义鸿沟,提出了 MultiRes
模块和 Res Path
进行解决,最终在多模态医学图像分割任务上获得优异的性能。
CPFNet
Paper: 《CPFNet: Context Pyramid Fusion Network for Medical Image Segmentation》
Accepted by TMI 2020.
CPFNet
,即上下文金字塔融合网络,基于U-Net
架构并结合两个金字塔模块来融合全局的多尺度上下文信息。
- 全局金字塔引导(GPG)模块:通过重构跳跃连接为解码器提供不同层次的全局上下文信息;
- 尺度感知金字塔融合(SAPF)模块:实现了多尺度上下文信息的动态高层次融合;
实验结果表明,提出的方法在四个不同的挑战性任务,包括皮肤损伤的分割,视网膜线性损伤的分割,胸部器官的多分类分割和视网膜水肿损伤的分割任务上具有很强的竞争力。
PraNet
Paper: 《PraNet: Parallel Reverse Attention Network for Polyp Segmentation》
Accepted by MICCAI 2020.
文章解读:https://cg.cs.tsinghua.edu.cn/jittor/news/2021-09-17-00-00-PraNet/
PraNet
利用并行的部分解码器在高级层中聚合特征作为初始引导区域,再使用反向注意模块挖掘边界线索,其最大贡献点在于统一了多个结直肠息肉分割任务,为后续息肉分割相关的研究铺垫了基础。
FAT-Net
Paper: 《FAT-Net: Feature Adaptive Transformers for Automated Skin Lesion Segmentation》
Accepted by MIA 2021.
FAT-Net
属于最早期应用 Transformer
架构的经典医学图像图像分割网络,致力于解决皮肤病变分割任务。整个网络基于编解码架构,编码器部分采用 Transformer
+ CNN
的并行双分支架构进行主要的特征提取,以有效地捕获远程依赖关系和全局上下文信息。随后,基于特征重标定
的策略对来自不同架构所提取到的的特征图进行更深层次的融合,通过学习的方式来自动获取到每个特征通道的重要程度,最后再筛选出更加有用的特征图。最后,通过在跳跃连接部分集成了特征自适应模块(FAM)来激活有效通道和抑制不相关的背景噪声,从而增强相邻层特征之间的特征融合。
BA-Net
Paper: 《Boundary-aware context neural network for medical image segmentation》
Accepted by MIA 2022.
BA-Net
是一个针对 2D 医学图像分割并基于编解码结构所设计的边界感知上下文神经网络,可以捕获更丰富的上下文并保留精细的空间信息;其次,通过在编码器子网络的每个阶段,应用金字塔边缘提取模块来获得多粒度边缘信息;最后,一个新设计的迷你多任务学习模块用于联合学习分割对象掩码和检测病变边界,其中引入了一个新的交互式注意层来桥接这两个任务。通过这种方式,实现了不同任务之间的信息互补,有效地利用边界信息为更好的分割预测提供了强有力的线索。最后,交叉特征融合模块用于选择性地聚合来自整个编码器子网络的多级特征。通过级联这三个模块,每个阶段的更丰富的上下文和细粒度特征被编码,然后传递给解码器。
CASTformer
Paper: 《Class-Aware Generative Adversarial Transformers for Medical Image Segmentation》
Accepted by NeuraIPS 2022.
CASTformer
是 CNN + Transformer
组合而成的混合网络结构,通过整合多尺度金字塔结构以捕获丰富的全局空间信息和局部多尺度上下文信息。此外,进一步的应用生成对抗训练
的策略用于提高分割性能,使基于 Transformer
的判别器能够捕获低级解剖特征和高级语义。
Others
《Transunet: Transformers make strong encoders for medical image segmentation》
《CoTr: Efficiently Bridging CNN and Transformer for 3D Medical Image Segmentation》
《Convolution-Free Medical Image Segmentation using Transformers》
《Transfuse: Fusing transformers and cnns for medical image segmentation》
《Medical Transformer: Gated Axial-Attention for Medical Image Segmentation》
《Medical Image Segmentation Using Squeeze-and-Expansion Transformers》
《Multi-Compound Transformer for Accurate Biomedical Image Segmentation》
《UTNet: A Hybrid Transformer Architecture for Medical Image Segmentation》
《Mixed Transformer U-Net For Medical Image Segmentation》
《An Effective Medical Image Segmentation Transformer》
《T-AutoML: Automated Machine Learning for Lesion Segmentation using Transformers in 3D Medical Imaging》
《RTNet: Relation Transformer Network for Diabetic Retinopathy Multi-lesion Segmentation》
Related Repo:https://github.com/junyuchen245/Transformer_for_medical_image_analysis
自然图像分割
DeconvNet
Paper: 《Learning Deconvolution Network for Semantic Segmentation》
Accepted by ICCV 2015.
DeconvNet
提出了深度反卷积结构,并首次应用到语义分割任务上。同时,结合目标检测技术,将训练好的网络应用到每个提议框上以获得实例级的分割结果;最后,再将这些单个分割的结果拼接起来以完成最终的语义分割推理,有效的解决了 FCN
网络无法有效处理细小目标的局限性。
SegNet
Paper: 《SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentationn》
Accepted by TPAMI 2017.
SegNet
是伴随着 U-Net 同时发布的,它首先在深度学习中引入跳跃连接作为典型的下采样层中观察到的信息丢失的解决方案编码器-解码器网络。跳跃连接是从编码器直接到解码器而不经过瓶颈层的连接。 换句话说,在解码器中捕获并连接到编码表示的各个级别的特征图。这有助于通过积极的池化和下采样来减少信息丢失,帮助恢复更精细的物体定位。
DeepLab
继 SegNet
之后,Facebook 提出的 DeepLab
成为一个新的里程碑,提供了语义分割的最先进结果。
DeepLab 前后共发布过四个版本,分别为 v1 - v3+:
DeepLab-v1 整体沿用了 VGG-16 的架构,其贡献点加入引入了空洞卷积,在保持原有特征分辨率的前提下增大网络的感受野,同时应用了条件随机场 CRF 作为后处理去平滑边缘细节。
DeepLab-v2 提出了多尺度的空洞池化金字塔卷积模块——ASPP,以增强网络识别不同尺寸的同一物体的能力。
DeepLab-v3 引入了 Multi-Grid 策略,同时在 v2 提出的 ASPP 模块内融合了 BN 技术;此外,为了更高效的捕获多尺度信息,v3 将全局池化层集成到了 ASPP 模块内。
DeepLab-v3+ 整体架构借鉴了 U-Net 和 SegNet 转换为编解码结构,通过引入适当的 Skip Connection 来获取更好的分割边缘;此外,v3+ 进一步参照了 MobileNet,改用深度可分离卷积,同时集成了优化过后的 Xception 模块。
PSPNet
Paper: 《Pyramid Scene Parsing Network》
Accepted by CVPR 2017.
PSPNet 中提出了金字塔池化模块——SPP,主要围绕多尺度信息和全局上下文建模进行设计,同时借鉴了 GoogleNet 的思路引入了辅助 loss,帮助网络更好的收敛。
RefineNet
Paper: 《RefineNet: Multi-Path Refinement Networks with Identity Mappings for High-Resolution Semantic Segmentation》
Accepted by CVPR 2017.
RefineNet
旨在建模多个层级特征之间的信息交互,同时结合残差思想来帮助网络的梯度回传,使模型整体的训练更加容易收敛;此外,应用 Chained Residual Pooling
模块来捕获更多的上下文信息。
GCN
Paper: 《Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network》
Accepted by CVPR 2017.
语义分割涉及两个任务——分类和定位。分类网络具有平移和旋转不变性,因此不注重位置信息;而定位涉及获取准确的位置细节。因此,这两项任务本质上是矛盾的。大多数分割算法更重视定位,因此忽略了全局上下文。在这项工作中,作者提出了一种在不丢失定位信息的同时也重视分类任务的方法——全局卷积网络,是早期较早验证大卷积核能带性能增益的代表性工作之一。
ExFuse
Paper: 《ExFuse: Enhancing Feature Fusion for Semantic Segmentation》
Accepted by ECCV 2018.
Low-level
的特征具备丰富的细节信息,但缺乏高级语义信息;High-level
的特征则与之相反,具备丰富的高级语义但缺乏空间细节信息。ExFuse
旨在探讨如何更高效的将编码器中的 High-level
特征与解码器中的 Low-level
特征进行深度融合,从而在低层特征中引入更多的语义信息,在高层特征中嵌入更多的空间信息。
DFN
Paper: 《Learning a Discriminative Feature Network for Semantic Segmentation》
Accepted by CVPR 2018.
DFN
主要针对语义分割任务面临的两大挑战:类内不一致(intra-class inconsistency)和类间无差别(inter-class indistinction),提出了对应的特征判别性网络——Discriminative Feature Network,其包含Smooth Network
和Border Network
。
Smooth Network
用于处理类内一致性问题,通过结合通道注意力模块和全局平均池化来选择更有判别性的特征;Border Network
则用于处理边界不清晰问题,借助多层语义边界监督区分边界两边的特征。
PSANet
Paper: 《PSANet: Point-wise Spatial Attention Network for Scene Parsing》
Accepted by ECCV 2018.
PSANet
针对场景解析任务提出了逐点空间注意力机制,通过自适应学习一个注意力掩码,将特征映射上的每个位置与其他位置联系起来,来缓解局部邻域约束。
NonLocal
Paper: 《Non-local Neural Networks》
Accepted by CVPR 2018.
NonLocal
借鉴自注意力机制的思路来完成远距离的上下文建模,整体效果不错,但计算量过大。
DUpsampling
Paper: 《Decoders Matter for Semantic Segmentation:Data-Dependent Decoding Enables Flexible Feature Aggregation》
Accepted by CVPR 2019.
文章解读:https://zhuanlan.zhihu.com/p/62508574
先前绝大多数基于编解码架构的语义分割网络,解码器的上采样层通常依赖双线性插值操作,这种与数据无关的方法无法学习到有效的特征映射。该论文则提出一种数据相关型的上采样方法 DUpsampling
来替代双线性插值,大幅提升了模型的采样重构能力,在降低计算复杂度的同时提升分割精度。
DMNet
Paper: 《Dynamic Multi-scale Filters for Semantic Segmentation》
Accepted by ICCV 2019.
DMNet
从多尺度表示出发,设计了一种动态多尺度网络来自适应捕获多尺度内容以预测像素级语义标,从而解决语义分割中对象和东西的尺度变化。DMNet
主要由多个并行排列的动态卷积模块(DCM)组成,每个模块都利用上下文感知过滤器来估计特定规模的语义表示。最后,多个 DCM
的输出进一步集成以完成分割。
DANet
Paper: 《Dual Attention Network for Scene Segmentation》
Accepted by CVPR 2019.
DANet
包含了两个注意力模块——通道注意力和空间注意力,旨在捕捉空间和通道维度中的全局特征依赖关系。其中,空间注意力模块用于学习特征的空间相互依赖性,通道注意力模块用于模拟通道相互依赖性,通过在局部特征上建模丰富的上下文依赖关系,显著的改善了最终的分割结果。
CCNet
Paper: 《CCNet: Criss-Cross Attention for Semantic Segmentation》
Accepted by ICCV 2019.
CCNet
提出 criss-cross attention module
来捕捉图像周围像素的上下文信息,从而捕获全局信息。CCNet
通过使用两次交叉注意力机制,使较远处的像素点同样可以间接作用于该像素点,相比于 Non-local
模块可以大幅降低计算量。
ANN
Paper: 《Asymmetric Non-local Neural Networks for Semantic Segmentation》
Accepted by ICCV 2019.
ANN
针对 NonLocal
作出了优化,主要解决前者计算量和显存占用量巨大的问题。ANN
设计了一种非对称非局部的神经网络,主要包含非对称金字塔非局部块(APNB)和非对称融合非局部块(AFNB)两个组件。其中,APNB
在非本地块中利用金字塔采样模块,在不牺牲性能的情况下大大减少了计算和内存消耗。另一方面,AFNB
则由 APNB
改编而来,在充分考虑长程依赖性的情况下融合了不同层次的特征,从而显着提高了性能。
Gated-SCNN
Paper: 《Gated-SCNN: Gated Shape CNNs for Semantic Segmentation》
Accepted by ICCV 2019.
Gated-SCNN
是一种基于双流的卷积神经网络架构,通过在常规流之外引入形状流分支额外处理形状信息,有效去除噪声并帮助形状流仅专注于处理相关的边界相关信息。
EMAU
Paper: 《Dual Super-Resolution Learning for Semantic Segmentation》
Accepted by ICCV 2019 (oral).
EMAU
提出了期望最大化注意力机制,摒弃了在全图上计算注意力图的流程,转而通过期望最大化算法迭代出一组紧凑的基,在这组基上运行注意力机制,从而大大降低了复杂度。其中,E
步更新注意力图,M
步更新这组基。E
、M
交替执行,收敛之后用来重建特征图。
DSRL
Paper: 《Dual Super-Resolution Learning for Semantic Segmentation》
Accepted by CVPR 2020.
DSRL
主要讲超分引入了语义分割框架,以指导语义分割如何更好的恢复至原始的空间分辨率。
OCRNet
Paper: 《Object-Contextual Representations for Semantic Segmentation》
Accepted by ECCV 2020.
OCRNet
从 pixel
出发,作者人为每个像素点的类别应该是它所属目标的类别,因此可以通过用相应的对象区域表示来表征每个像素来加强像素表示。具体地,本文结合每一类的类别语义信息给每个像素加权,再和原始的 pixel
特征 concat
组成最终每个像素的特征表示,以此来求出每个像素点和每个类别的相关性,从而对每个像素点的上下文信息进行建模。
值得一提的是,HRNet
结合 OCRNet
的语义分割网络《High-resolution networks and Segmentation Transformer for Semantic Segmentation》也取得了异常优秀的效果,感兴趣的同学可以参考下官方的 Github
—— https://github.com/HRNet/HRNet-Semantic-Segmentation
PointRend
Paper: 《PointRend: Image Segmentation as Rendering》
Accepted by CVPR 2020.
PointRend
将图像分割当做一个渲染问题,整体方案遵循 coarse-to-fine 的迭达式算法,可以在自适应选择的位置执行基于点的分段预测,从而在先前方法过度平滑的区域中输出清晰的对象边界。
DynamicRouting
Paper: 《Learning Dynamic Routing for Semantic Segmentation》
Accepted by CVPR 2020 (oral).
DynamicRouting
是旷视研究院针对语义分割任务提出一个全新的理念。具体而言,动态路径选择会在推理过程中根据输入图像生成前向传播路径,也就是说随着输入数据的不同,网络也会自适应地生成不同的结构进行特征编码。利用该方法,网络可以将不同尺寸的物体(或背景)分配到对应分辨率的层级上,以实现有针对性的特征变换。
SETR
Paper: 《Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspective with Transformers》
Accepted by CVPR 2021.
文章解读:https://zhuanlan.zhihu.com/p/348418189
SETR
记得没错的话应该是当时最早将 ViT
引入语义分割框架的代表型工作之一。
MagNet
Paper: 《Progressive Semantic Segmentation》
Accepted by CVPR 2021.
MagNet
主要贡献在于解决如何在有限硬件资源条件下训练超高分辨率输入的语义分割问题。
UN-EPT
Paper: 《A Unified Efficient Pyramid Transformer for Semantic Segmentation》
Accepted by ICCV 2021.
文章解读:https://mp.weixin.qq.com/s/mDl9I6kh4uamoM9YWtXoQw
UN-EPT
网络统一考虑了上下文信息和 boundary artifacts
来分割对象。首先,应用稀疏采样策略来整合基于 Transformer
的注意力机制,以实现高效的上下文建模。最后,引入了一个单独的空间分支来捕获图像细节以进行边界细化,整个模型可以以端到端的方式进行训练。
PVT
Paper: 《Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction Without Convolutions》
Accepted by ICCV 2021.
PVT
主要的贡献是从多尺度角度出发,将金字塔结构引入到 ViT
中,以更好的完成密集预测任务。
SegFormer
Paper: 《SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers》
Accepted by NeuraIPS 2021.
SegFormer
整体架构上沿用分层特征表示来捕获多尺度特征,同时去掉了原始 ViT
结构中的 position embedding
,避免了测试图像与训练图像尺寸不同而导致模型性能下降的问题。最后,在解码器部分则应用了 MLP
结构来聚合来自编码器输出的不同尺度特征图,以同时融合局部注意力和全局注意力。
Segmenter
Paper: 《Segmenter: Transformer for Semantic Segmentation》
Accepted by ICCV 2021.
Segmenter
是一个依赖纯 Transformer
编解码器所构建的网络结构,可建模全局上下文信息,并使用逐点线性解码器或掩码 Transformer
来获取类标签。
SegNeXt
Paper: 《SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation》
Accepted by NeurIPS 2022.
文章解读:https://zhuanlan.zhihu.com/p/570557325
SegNeXt
是基于 Segmenter
改进的,提倡使用大卷积核来替代 Transformer
中的注意力操作。
实时语义分割
ENet
Paper: 《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》
Accepted by ICLR 2017.
ENet
主要是针对此前 SegNet
等网络参数量大推理时间长以及下采样容易丢失精确边缘空间信息等问题提出了一系列的改进方案。
- 保留最大池化层的最大元素索引,并将其应用在解码器中以生成稀疏的上采样映射;
- 采用
BN
、PReLu
、Dropout
等Tricks
; - 结合原始卷积、空洞卷积、非对称卷积和全卷积来进一步提升网络的多尺度特征捕捉能力。
ICNet
Paper: 《ICNet for Real-Time Semantic Segmentation on High-Resolution Images》
Accepted by ECCV 2018.
ICNet
设计了一种新颖而独特的图像级联网络,充分地建模了低分辨率图的语义信息和高分辨率图的细节信息,实现了图像的实时语义分割所开发的级联特征融合单元与级联标签指导相结合,可以在较低计算量的情况下逐步恢复和细化分割的结果。
CGNet
Paper: 《CGNet: A Light-weight Context Guided Network for Semantic Segmentation》
Accepted by TIP 2020.
CGNet
即轻量化语义分割模型,可以满足移动设备的运行需要,主要由 Context Guided Block
构建而成。CG
块可以学习局部特征和周围环境上下文的联合特征,最后再通过引入全局上下文特征进一步改善联合特征的学习。
BiSeNet
Paper: 《BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation》
Accepted by CVPR 2018.
BiSeNet
系列是实时语义分割网络中的经典工作之一,其围绕丰富的空间信息以及大感受野来设计双分支网络结构,最后再通过特征融合模块FFM
进行信息整合。
Paper: 《BiSeNet V2: Bilateral Network with Guided Aggregation for Real-Time Semantic Segmentation》
Accepted by IJCV 2021.
BiSeNet V2
提出了一种用于实时语义分割的具有引导聚合的双边网络,主要围绕低级空间细节
和高级语义信息
这两个方面进行建模。
Paper: 《BiSeNet V3: Bilateral Segmentation Network with Coordinate Attention for Real-time Semantic Segmentation》
BiSeNet V3
(未正式发表)引入了一个新的特征细化模块来优化特征图和一个特征融合模块来有效地组合特征。此外,借助注意力机制来帮助模型捕获上下文信息,并使用边缘检测来增强边界特征。
Paper: 《Rethinking BiSeNet For Real-time Semantic Segmentation》
Accepted by CVPR 2021.
STDC
是由美团提出的针对 BiSeNet
网络所改进的实时语义分割网络架构,该方法通过逐步降低特征图的维度,并利用聚合信息来表示图像。在解码器中,通过将空间信息的学习以 single-stream
的方式整合到低层,提出一个 Detail Aggregation
模块。最后,再通过融合浅层特征和深层特征输出最终的分割结果。
SSR
Paper: 《Efficient Joint-Dimensional Search with Solution Space Regularization for Real-Time Semantic Segmentation》
Accepted by IJCV 2022.
SSR
是通过神经架构搜索自动搜索出来的一个最优的网络结构,可以实现实时且准确的语义分割。文中提出了一种新颖的解空间正则化(SSR)损失函数,有效地鼓励超网收敛到其离散网络。随后,通过分层渐进解空间收缩策略,进一步提高搜索的效率并减少计算消耗。此外,作者从理论上证明了 SSR
损失在优化上等效于 L0
范数正则化,这解释了缩小的离散化差距。综合实验表明,所提搜索方案可以高效地找到最优的分割网络结构,在保持精度相当的同时,以极小的模型尺寸(1M
)获得极快的分割速度(175 FPS
)。
SenFormer
Paper: 《Efficient Self-Ensemble for Semantic Segmentation》
Accepted by BMVC 2022.
SenFormer
提出了一种自集成方法,通过利用特征金字塔网络方法产生的多尺度特征集来提供独立的解码器,从而在单个模型中创建一个集成,有效的提升了语义分割的性能,同时避免传统集成方法所需的昂贵训练成本。
IncepFormer
Paper: 《IncepFormer: Efficient Inception Transformer with Pyramid Pooling for Semantic Segmentation》
Accepted by NeuraIPS 2022.
IncepFormer
是一种基于金字塔结构的 Transformer
编码器,可同时捕获全局上下文和精细定位特征。此外,借鉴 Inception
模块,该方法为为每个自注意力层嵌入轻量化的前馈模块,更高效的提取到丰富的局部多尺度上下文信息。
统一分割框架
Mask R-CNN
Paper: 《Mask R-CNN》
Accepted by ICCV 2017 (Best paper).
Mask R-CNN
是早期将分类、检测、分割等任务大一统的经典代表性工作,通过在 Faster-RCNN
的基础上添加一个分支网络,在实现目标检测的同时,把目标掩码同时分割出来。
K-Net
Paper: 《K-Net: Towards Unified Image Segmentation》
Accepted by NeurIPS 2021.
文章解读:https://zhuanlan.zhihu.com/p/428280551
K-Net
提出了由一组卷积核生成一组 mask
的思想,每一个 mask
至多只分割图片中的一个物体,且不同的 kernel
负责不同物体的 mask
生成。如此一来,便可以不借助任何额外的组件来完成实例分割任务,在提高推理效率的同时实现端到端的训练优化。
K-Net
是近期大一统分割框架的代表性工作之一,突破 Mask-RCNN
的先检测后分割的范式,统一了语义分割、实例分割以及全景分割任务的解决范式。
MaskFormer
Paper: 《Per-Pixel Classification is Not All You Need for Semantic Segmentation》
Accepted by NeurIPS 2021.
文章解读:https://zhuanlan.zhihu.com/p/389457610
MaskFormer
从语义分割任务本身出发,将语义分割从一个像素级分类问题转换成一个掩码级分割问题,不仅更自然的把语义级分割和实例级分割联系在了一起,并且在语义分割上取得了比像素级分类方法更好的结果。
kMaX-DeepLab
Paper: 《k-means Mask Transformer》
Accepted by ECCV 2022.
kMaX-DeepLab
重新思考像素和对象查询之间的关系,并建议将交叉注意力学习重新定义为聚类过程。受传统 k-means
聚类算法的启发,本文开发了一种用于分割任务的 k-means Mask Xformer
(kMaX-DeepLab),其结构简单优雅,但取得了 SOTA
性能。
Mask2Former
Paper: 《Masked-attention Mask Transformer for Universal Image Segmentation》
Accepted by CVPR 2022.
文章解读:https://blog.csdn.net/bikahuli/article/details/121991697
Mask2Former
旨在构建一个简单的元框架 MaskFormer
和一个新的 Transformer
解码器,其关键组成部分为掩码注意力 Masked-attention
,通过将交叉注意力限制在预测的掩码区域内来提取局部特征,最终在有效节省计算资源的情况下,在全景分割、实例分割和语义分割上均实现了 SOTA
。
OneFormer
Paper: 《OneFormer: An Universal Image Segmentation Framework That Unifies Segmentation With A Multi-Task Train-Once Design》
Accepted by CVPR 2022.
文章解读:https://blog.csdn.net/bikahuli/article/details/121991697
OneFormer
应该是目前截止至笔者收稿为止最强的通用图像分割网络,其基于 Transformer
架构,骨干网络采用ConvNeXt
和DiNAT
,真正意义上统一了语义分割、实例分割或全景分割任务,仅通过训练一遍网络,实现了在三个图像分割任务中实现 SOTA
性能。其次,引入了一种任务token,将该模型限定在手头任务上,使模型具有任务动态性,以支持多任务训练和推理。最后,该方法在训练过程中使用了查询-文本对比损失来更好的区分不同任务和类间的关系。
MasK DINO
Paper: 《Mask DINO: Towards A Unified Transformer-based Framework for Object Detection and Segmentation》
Arxiv 2022.
Mask DINO
是一个简单、高效且可扩展d 统一对象检测和分割框架,通过添加支持所有图像分割任务(实例、全景和语义)的掩码预测分支扩展了 DINO
,利用 DINO
中查询嵌入通过点积生成一个高分辨率的像素点嵌入特征以预测一组二分类掩码,并且可以受益于联合大规模检测和分割数据集。
语义分割扩展
零样本语义分割
Paper: 《Decoupling Zero-Shot Semantic Segmentation》
Accepted by CVPR 2022.
零样本语义分割(Zero-Shot Semantic Segmentation, Z3S)旨在分割出训练中未曾出现的新类别。现有方法将 ZS3
表述为像素级 zeroshot
分类问题,并在仅使用文本进行预训练的语言模型的帮助下,将语义知识从已见类别转移到未见类别。
本文提出将 ZS3
分解为两个子任务:
- 分类不可知分组任务,将像素分组为段;
- 完成段上的零样本分类任务。
前一个任务不涉及类别信息,可以直接转移到未见类的组像素。后一项任务在分段级别执行,并提供了一种自然的方式来利用为ZS3
使用图像文本对(例如CLIP
)预训练的大规模视觉语言模型。
弱监督/样本语义分割
Paper: 《Mining Cross-Image Semantics for Weakly Supervised Semantic Segmentation》
Accepted by ECCV 2020 (oral).
近年来,基于图像标签信息(image-level label)的弱监督语义分割方法大部分都是基于以下步骤:
- 训练一个通用的图像分类器;
- 通过分类器的
CAM
获取每张图像在分类中被激活的区域(物体定位图); - 生成伪标签
mask
作为监督信号训练语义分割模型。
然而,CAM
生成的物体定位图仅关注物体中最具辨识度的区域,而不是物体整体。为了解决这种问题,本方法通过在分类器中引入两种注意力模型来帮助分类器识别更多的物体区域:
- 协同注意力(co-attention): 用于帮助分类器识别一对图像之间共同的语义信息(common semantics),而且能够在物体定位图(object localization maps)的推理过程中利用上下文信息;
- 对比协同注意力(contrastive co-attention): 则用于识别一对图像之间不同的语义信息(unshared semantics)。
Paper: 《Weak-shot Semantic Segmentation via Dual Similarity Transfer》
Accepted by NeuraIPS 2022.
弱样本学习(weak-shot learning)和零样本学习、少样本学习任务相似,均是将所有种类划分成没有交集的基础种类和新种类。不同的是,基础种类有大量强标注的训练样本,而新种类有大量弱标注的训练样本。
对一些基础种类,通常都有完整的像素级别的强标注数据,而针对更为广阔的新种类普遍仅有图片级别的弱标注数据。在该学习模式下,本文提出名为 SimFormer
的方法,旨在从带有强标注数据的基础种类中迁移双重相似度来辅助从弱标注数据中学习新类别。
半监督语义分割
Paper: 《Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels》
Accepted by CVPR 2022.
文章解读:https://zhuanlan.zhihu.com/p/474771549
本文基于 Every Pixel Matters
的理念,有效利用了包括不可靠样本在内的全部无标签数据,大幅提升了算法精度。
域自适应语义分割
域自适应(Domain Adaption),顾名思义就是自适应不同的域
,即不同的场景分布,包括:
- 从一个场合迁移到另一个场合
- 从天气晴朗迁移到雨雪雾
- 从白天迁移到黑夜
通常来说,不同域之间会存在域间隙和标签偏移问题,同时伪标记目标数据包含混合的封闭集和开放集标签噪声。
Paper: 《DANNet: A One-Stage Domain Adaptation Network for Unsupervised Nighttime Semantic Segmentation
》Accepted by CVPR 2021.
在自动驾驶中,夜间图像的语义分割与白天图像具有同样重要的作用,但由于光照差和费力的人工注释,前者更具挑战性。在本文中,作者提出了一种新的域自适应网络用于夜间语义分割,无需使用标记的夜间图像数据。该方法基于对抗性训练,使用一个标记的白天数据集和一个包含粗对齐的昼夜图像对。具体来说,对于未标记的昼夜图像对,使用日间图像上静态对象类别的像素级预测作为伪监督来分割其对应的夜间图像。通过进一步设计了一种重加权策略,以处理昼夜图像对错位和日间图像预测错误所导致的不准确性,并提高小物体的预测精度。DANNet
是第一个用于夜间语义分割的单阶段自适应框架,它没有训练额外的昼夜图像传输模型作为一个单独的预处理阶段。在 Dark Zurich
和 Nighttime Driving
数据集上的大量实验表明,该法实现了最先进的夜间语义分割性能。
Paper: 《SimT: Handling Open-set Noise for Domain Adaptive Semantic Segmentation》
Accepted by CVPR 2022.
在本文中,作者提出了一个单纯形噪声转换矩阵(SimT)来模拟 DA 语义分割
中的混合噪声分布,并将问题表述为 SimT
估计。通过利用计算几何分析和分割特性,设计了三个互补的正则化器,即体积正则化、锚引导、凸保证,以逼近真实的 SimT
。 具体来说,体积正则化最小化由非正方形 SimT 的行形成的单纯形的体积,这确保分割模型的输出适合GT标签分布。此外,为了弥补开放集知识的不足,文中进一步设计了 anchor guidance
和convex guarantee
,以促进开放集噪声分布的建模,并增强封闭集和开放集类之间的判别特征学习。估计的 SimT
进一步用于纠正伪标签中的噪声问题,并提高分割模型对目标域数据的泛化能力。
点云语义分割
Paper: 《2DPASS: 2D Priors Assisted Semantic Segmentation on LiDAR Point Clouds》
Accepted by ECCV 2022.
2DPASS
是基于二维图像先验辅助的激光雷达点云语义分割,不同于先前的多模态方法,即训练和推理阶段均需要成对的图像和点云数据作为输入,该方法仅在训练阶段利用额外的图像数据,从原始相机数据中获取更丰富的语义和结构信息,并将其提炼蒸馏至三维语义分割网络中。在测试阶段,该方法可实现实时感知,无需图像数据输入,即可实现又快又准的三维语义分割,实现 SemanticKITTI
和 NuScenes
双 SOTA
。
扩散语义分割
Paper: 《Label-Efficient Semantic Segmentation with Diffusion Models》
Accepted by ICLR 2022.
去噪扩散概率模型最近受到了很多研究人员的关注,其性能由于以往 GAN
为代表的一众生成式模型,在图像修复、超分辨率、语义编辑等 low-level
领域遍地开发。最近,许多研究工作将 DDPM
引入到了 high-level
任务上,例如目标检测和语义分割等。本方法便是 DDPM
在语义分割领域的一个代表性工作,作者向我们证明了扩散模型也可以用作语义分割的工具,尤其是在标记数据稀缺的情况下。
如果您也对人工智能和计算机视觉全栈领域感兴趣,强烈推荐您关注有料、有趣、有爱的公众号『CVHub』,每日为大家带来精品原创、多领域、有深度的前沿科技论文解读及工业成熟解决方案!欢迎添加小编微信号: cv_huber,备注"CSDN",加入 CVHub 官方学术&技术交流群,一起探讨更多有趣的话题!