来源:
什么是图像分割?
图像分割是一种根据存在的对象及其语义重要性对图像进行划分的像素级分类预测任务,其致力于为图像中的每一个目标都生成一个像素级别的掩膜,也就是大家耳熟能详的——mask
。
本质上来说,图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在人脑中所形成的印象或认识,照片、绘画、剪贴画、地图、书法作品、手写汉字、传真、卫星云图、影视画面、X光片、脑电图、心电图等都是图像。而在计算机中,图像是一个多维矩阵,矩阵中的每一个数字表示画面中的一个像素。换言之,一张图像就是一个包含许多像素的集合。
对于计算机视觉领域来说,图像分割指的是将数字图像细分为多个图像子区域或称为超像素的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。图像分割通常用于定位图像中的物体和边界(线,曲线等),是对图像中的每个像素加标签的一个过程,这一过程使得具有相同标签的像素具有某种共同视觉特性。
图像分割包含哪些方向:
图像分割在自动驾驶领域中可用于车道线分割或场景解析等。通过精确预测重要物体(例如道路或行人)的位置,自动驾驶系统可以采取适当的步骤来处理下游任务,例如申请休息时间或让汽车减速。
上图展示了图像分割的三种常见任务,即语义分割
、实例分割
和全景分割
。
-
语义分割
语义分割描述了将每个像素与类标签相关联的过程。很简单,这里我们只关心图像中所有对象的粗略表示。在这里,你可以看到所有以蓝色表示的汽车,以红色表示的行人,以及略带粉红色的街道等。
仔细观察可以发现,属于同一类的所有目标之间并没有明显的区别,这意味着所有的车都是蓝色的。这是定义图像分割问题的最简单方法。不同类的物体产生不同的语义,而语义分割就是要将这些属于不同类别的像素进行归类,把属于同一类的像素归为一起。
-
实例分割
现在,如果你想更进一步以不同的方式表示类的每个实例,这个问题称为实例分割。
与语义分割不同,在图像分割中,我们独立地屏蔽图像中包含的对象的每个实例。所以这意味着,我们将首先关注重要的对象,然后分别识别对象的每个实例。而对于实例分割任务来说,你可以看到图像中的所有对象汽车和人都被突出显示,并且所有目标都被赋予不同的颜色以示区别。
-
全景分割
当我们把语义分割和实例分割结合起来看时,便会得到一种新的任务——全景分割。这是近几年挖的一个新坑,全景分割致力于将图像中的每个像素与分类的语义标签相关联,并识别特定类的实例。
历史演变
传统图像分割
图像分割最初是从数字图像处理加上优化算法开始的。这些原始算法使用区域生长等方法,在这些方法中设置初始区域,然后算法比较像素值以获得分割图的概念。
这些方法起初是对图像中的特征进行局部观察,并关注像素中的局部差异和梯度。对输入图像进行全局扫描的算法出现得晚得多,在经典图像处理方法中提出了自适应阈值化、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
,也随之诞生。
FCN
基于深度学习的分割模型通常会输出一个原图分辨率同等大小的掩码图,这些掩码图通常是 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
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
深监督网络 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 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++
U-Net++
的第一个优势就是精度的提升,通过整合不同层次的特征加强信息交互;第二个是灵活的网络结构配合深监督,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量。
CE-Net
Paper: 《UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation》
Accepted by TMI 2019.
CE-Net
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 pipeline
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
MultiResUNet
主要针对医学图像分割任务普遍存在的两个问题——尺度多样性以及不同层级特征之间融合所存在的语义鸿沟,提出了 MultiRes
模块和 Res Path
进行解决,最终在多模态医学图像分割任务上获得优异的性能。
CPFNet
Paper: 《CPFNet: Context Pyramid Fusion Network for Medical Image Segmentation》
Accepted by TMI 2020.
CPFNet
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
PraNet
利用并行的部分解码器在高级层中聚合特征作为初始引导区域,再使用反向注意模块挖掘边界线索,其最大贡献点在于统一了多个结直肠息肉分割任务,为后续息肉分割相关的研究铺垫了基础。
FAT-Net
Paper: 《FAT-Net: Feature Adaptive Transformers for Automated Skin Lesion Segmentation》
Accepted by MIA 2021.
FAT-Net
FAT-Net
属于最早期应用 Transformer
架构的经典医学图像图像分割网络,致力于解决皮肤病变分割任务。整个网络基于编解码架构,编码器部分采用 Transformer
+ CNN
的并行双分支架构进行主要的特征提取,以有效地捕获远程依赖关系和全局上下文信息。随后,基于特征重标定
的策略对来自不同架构所提取到的的特征图进行更深层次的融合,通过学习的方式来自动获取到每个特征通道的重要程度,最后再筛选出更加有用的特征图。最后,通过在跳跃连接部分集成了特征自适应模块(FAM)来激活有效通道和抑制不相关的背景噪声,从而增强相邻层特征之间的特征融合。
BA-Net
Paper: 《Boundary-aware context neural network for medical image segmentation》
Accepted by MIA 2022.
BA-Net
BA-Net
是一个针对 2D 医学图像分割并基于编解码结构所设计的边界感知上下文神经网络,可以捕获更丰富的上下文并保留精细的空间信息;其次,通过在编码器子网络的每个阶段,应用金字塔边缘提取模块来获得多粒度边缘信息;最后,一个新设计的迷你多任务学习模块用于联合学习分割对象掩码和检测病变边界,其中引入了一个新的交互式注意层来桥接这两个任务。通过这种方式,实现了不同任务之间的信息互补,有效地利用边界信息为更好的分割预测提供了强有力的线索。最后,交叉特征融合模块用于选择性地聚合来自整个编码器子网络的多级特征。通过级联这三个模块,每个阶段的更丰富的上下文和细粒度特征被编码,然后传递给解码器。
CASTformer
Paper: 《Class-Aware Generative Adversarial Transformers for Medical Image Segmentation》
Accepted by NeuraIPS 2022.
CASTformer
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》
MT-UNet
《An Effective Medical Image Segmentation Transformer》
MISSFormer
《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
DeconvNet
提出了深度反卷积结构,并首次应用到语义分割任务上。同时,结合目标检测技术,将训练好的网络应用到每个提议框上以获得实例级的分割结果;最后,再将这些单个分割的结果拼接起来以完成最终的语义分割推理,有效的解决了 FCN
网络无法有效处理细小目标的局限性。
SegNet
Paper: 《SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentationn》
Accepted by TPAMI 2017.
SegNet
SegNet
是伴随着 U-Net 同时发布的,它首先在深度学习中引入跳跃连接作为典型的下采样层中观察到的信息丢失的解决方案编码器-解码器网络。跳跃连接是从编码器直接到解码器而不经过瓶颈层的连接。换句话说,在解码器中捕获并连接到编码表示的各个级别的特征图。这有助于通过积极的池化和下采样来减少信息丢失,帮助恢复更精细的物体定位。
DeepLab
继 SegNet
之后,Facebook 提出的 DeepLab
成为一个新的里程碑,提供了语义分割的最先进结果。
DeepLab 前后共发布过四个版本,分别为 v1 - v3+:
DeepLab-v1
DeepLab-v1 整体沿用了 VGG-16 的架构,其贡献点加入引入了空洞卷积,在保持原有特征分辨率的前提下增大网络的感受野,同时应用了条件随机场 CRF 作为后处理去平滑边缘细节。
DeepLab-v2
DeepLab-v2 提出了多尺度的空洞池化金字塔卷积模块——ASPP,以增强网络识别不同尺寸的同一物体的能力。
DeepLab-v3
DeepLab-v3 引入了 Multi-Grid 策略,同时在 v2 提出的 ASPP 模块内融合了 BN 技术;此外,为了更高效的捕获多尺度信息,v3 将全局池化层集成到了 ASPP 模块内。
DeepLab-v3+
DeepLab-v3+ 整体架构借鉴了 U-Net 和 SegNet 转换为编解码结构,通过引入适当的 Skip Connection 来获取更好的分割边缘;此外,v3+ 进一步参照了 MobileNet,改用深度可分离卷积,同时集成了优化过后的 Xception 模块。
PSPNet
Paper: 《Pyramid Scene Parsing Network》
Accepted by CVPR 2017.
PSPNet
PSPNet 中提出了金字塔池化模块——SPP,主要围绕多尺度信息和全局上下文建模进行设计,同时借鉴了 GoogleNet 的思路引入了辅助 loss,帮助网络更好的收敛。
RefineNet
Paper: 《RefineNet: Multi-Path Refinement Networks with Identity Mappings for High-Resolution Semantic Segmentation》
Accepted by CVPR 2017.
RefineNet
RefineNet
旨在建模多个层级特征之间的信息交互,同时结合残差思想来帮助网络的梯度回传,使模型整体的训练更加容易收敛;此外,应用 Chained Residual Pooling
模块来捕获更多的上下文信息。
GCN
Paper: 《Large Kernel Matters —— Improve Semantic Segmentation by Global Convolutional Network》
Accepted by CVPR 2017.
GCN
语义分割涉及两个任务——分类和定位。分类网络具有平移和旋转不变性,因此不注重位置信息;而定位涉及获取准确的位置细节。因此,这两项任务本质上是矛盾的。大多数分割算法更重视定位,因此忽略了全局上下文。在这项工作中,作者提出了一种在不丢失定位信息的同时也重视分类任务的方法——全局卷积网络,是早期较早验证大卷积核能带性能增益的代表性工作之一。
ExFuse
Paper: 《ExFuse: Enhancing Feature Fusion for Semantic Segmentation》
Accepted by ECCV 2018.
ExFuse
Low-level
的特征具备丰富的细节信息,但缺乏高级语义信息;High-level
的特征则与之相反,具备丰富的高级语义但缺乏空间细节信息。ExFuse
旨在探讨如何更高效的将编码器中的 High-level
特征与解码器中的 Low-level
特征进行深度融合,从而在低层特征中引入更多的语义信息,在高层特征中嵌入更多的空间信息。
DFN
Paper: 《Learning a Discriminative Feature Network for Semantic Segmentation》
Accepted by CVPR 2018.
DFN
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
PSANet
针对场景解析任务提出了逐点空间注意力机制,通过自适应学习一个注意力掩码,将特征映射上的每个位置与其他位置联系起来,来缓解局部邻域约束。
NonLocal
Paper: 《Non-local Neural Networks》
Accepted by CVPR 2018.
NonLocal
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
先前绝大多数基于编解码架构的语义分割网络,解码器的上采样层通常依赖双线性插值操作,这种与数据无关的方法无法学习到有效的特征映射。该论文则提出一种数据相关型的上采样方法 DUpsampling
来替代双线性插值,大幅提升了模型的采样重构能力,在降低计算复杂度的同时提升分割精度。
DMNet
Paper: 《Dynamic Multi-scale Filters for Semantic Segmentation》
Accepted by ICCV 2019.
DMNet
DMNet
从多尺度表示出发,设计了一种动态多尺度网络来自适应捕获多尺度内容以预测像素级语义标,从而解决语义分割中对象和东西的尺度变化。DMNet
主要由多个并行排列的动态卷积模块(DCM)组成,每个模块都利用上下文感知过滤器来估计特定规模的语义表示。最后,多个 DCM
的输出进一步集成以完成分割。
DANet
Paper: 《Dual Attention Network for Scene Segmentation》
Accepted by CVPR 2019.
DANet
DANet
包含了两个注意力模块——通道注意力和空间注意力,旨在捕捉空间和通道维度中的全局特征依赖关系。其中,空间注意力模块用于学习特征的空间相互依赖性,通道注意力模块用于模拟通道相互依赖性,通过在局部特征上建模丰富的上下文依赖关系,显著的改善了最终的分割结果。
CCNet
Paper: 《CCNet: Criss-Cross Attention for Semantic Segmentation》
Accepted by ICCV 2019.
CCNet
CCNet
提出 criss-cross attention module
来捕捉图像周围像素的上下文信息,从而捕获全局信息。CCNet
通过使用两次交叉注意力机制,使较远处的像素点同样可以间接作用于该像素点,相比于 Non-local
模块可以大幅降低计算量。
ANN
Paper: 《Asymmetric Non-local Neural Networks for Semantic Segmentation》
Accepted by ICCV 2019.
ANN
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
Gated-SCNN
是一种基于双流的卷积神经网络架构,通过在常规流之外引入形状流分支额外处理形状信息,有效去除噪声并帮助形状流仅专注于处理相关的边界相关信息。
EMAU
Paper: 《Dual Super-Resolution Learning for Semantic Segmentation》
Accepted by ICCV 2019 (oral).
EMAU
EMAU
提出了期望最大化注意力机制,摒弃了在全图上计算注意力图的流程,转而通过期望最大化算法迭代出一组紧凑的基,在这组基上运行注意力机制,从而大大降低了复杂度。其中,E
步更新注意力图,M
步更新这组基。E
、M
交替执行,收敛之后用来重建特征图。
DSRL
Paper: 《Dual Super-Resolution Learning for Semantic Segmentation》
Accepted by CVPR 2020.
DSRL
DSRL
主要讲超分引入了语义分割框架,以指导语义分割如何更好的恢复至原始的空间分辨率。
OCRNet
Paper: 《Object-Contextual Representations for Semantic Segmentation》
Accepted by ECCV 2020.
OCRNet
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
PointRend
将图像分割当做一个渲染问题,整体方案遵循 coarse-to-fine 的迭达式算法,可以在自适应选择的位置执行基于点的分段预测,从而在先前方法过度平滑的区域中输出清晰的对象边界。
DynamicRouting
Paper: 《Learning Dynamic Routing for Semantic Segmentation》
Accepted by CVPR 2020 (oral).
DynamicRouting
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
SETR
记得没错的话应该是当时最早将 ViT
引入语义分割框架的代表型工作之一。
MagNet
Paper: 《Progressive Semantic Segmentation》
Accepted by CVPR 2021.
MagNet
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
UN-EPT
网络统一考虑了上下文信息和 boundary artifacts
来分割对象。首先,应用稀疏采样策略来整合基于 Transformer
的注意力机制,以实现高效的上下文建模。最后,引入了一个单独的空间分支来捕获图像细节以进行边界细化,整个模型可以以端到端的方式进行训练。
PVT
Paper: 《Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction Without Convolutions》
Accepted by ICCV 2021.
PVT
PVT
主要的贡献是从多尺度角度出发,将金字塔结构引入到 ViT
中,以更好的完成密集预测任务。
SegFormer
Paper: 《SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers》
Accepted by NeuraIPS 2021.
SegFormer
SegFormer
整体架构上沿用分层特征表示来捕获多尺度特征,同时去掉了原始 ViT
结构中的 position embedding
,避免了测试图像与训练图像尺寸不同而导致模型性能下降的问题。最后,在解码器部分则应用了 MLP
结构来聚合来自编码器输出的不同尺度特征图,以同时融合局部注意力和全局注意力。
Segmenter
Paper: 《Segmenter: Transformer for Semantic Segmentation》
Accepted by ICCV 2021.
Segmenter
Segmenter
是一个依赖纯 Transformer
编解码器所构建的网络结构,可建模全局上下文信息,并使用逐点线性解码器或掩码 Transformer
来获取类标签。
SegNeXt
Paper: 《SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation》
Accepted by NeurIPS 2022.
文章解读:https://zhuanlan.zhihu.com/p/570557325
SegNeXt
SegNeXt
是基于 Segmenter
改进的,提倡使用大卷积核来替代 Transformer
中的注意力操作。
实时语义分割
ENet
Paper: 《ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation》
Accepted by ICLR 2017.
ENet
ENet
主要是针对此前 SegNet
等网络参数量大推理时间长以及下采样容易丢失精确边缘空间信息等问题提出了一系列的改进方案。
-
保留最大池化层的最大元素索引,并将其应用在解码器中以生成稀疏的上采样映射;
-
采用
BN
、PReLu
、Dropout
等Tricks
; -
结合原始卷积、空洞卷积、非对称卷积和全卷积来进一步提升网络的多尺度特征捕捉能力。
ICNet
Paper: 《ICNet for Real-Time Semantic Segmentation on High-Resolution Images》
Accepted by ECCV 2018.
ICNet
ICNet
设计了一种新颖而独特的图像级联网络,充分地建模了低分辨率图的语义信息和高分辨率图的细节信息,实现了图像的实时语义分割所开发的级联特征融合单元与级联标签指导相结合,可以在较低计算量的情况下逐步恢复和细化分割的结果。
CGNet
Paper: 《CGNet: A Light-weight Context Guided Network for Semantic Segmentation》
Accepted by TIP 2020.
CGNet
CGNet
即轻量化语义分割模型,可以满足移动设备的运行需要,主要由 Context Guided Block
构建而成。CG
块可以学习局部特征和周围环境上下文的联合特征,最后再通过引入全局上下文特征进一步改善联合特征的学习。
BiSeNet
Paper: 《BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation》
Accepted by CVPR 2018.
BiSeNet
BiSeNet
系列是实时语义分割网络中的经典工作之一,其围绕丰富的空间信息以及大感受野来设计双分支网络结构,最后再通过特征融合模块FFM
进行信息整合。
Paper: 《BiSeNet V2: Bilateral Network with Guided Aggregation for Real-Time Semantic Segmentation》
Accepted by IJCV 2021.
BiSeNet V2
BiSeNet V2
提出了一种用于实时语义分割的具有引导聚合的双边网络,主要围绕低级空间细节
和高级语义信息
这两个方面进行建模。
Paper: 《BiSeNet V3: Bilateral Segmentation Network with Coordinate Attention for Real-time Semantic Segmentation》
BiSeNet V3
BiSeNet V3
(未正式发表)引入了一个新的特征细化模块来优化特征图和一个特征融合模块来有效地组合特征。此外,借助注意力机制来帮助模型捕获上下文信息,并使用边缘检测来增强边界特征。
Paper: 《Rethinking BiSeNet For Real-time Semantic Segmentation》
Accepted by CVPR 2021.
STDC
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
SenFormer
提出了一种自集成方法,通过利用特征金字塔网络方法产生的多尺度特征集来提供独立的解码器,从而在单个模型中创建一个集成,有效的提升了语义分割的性能,同时避免传统集成方法所需的昂贵训练成本。
IncepFormer
Paper: 《IncepFormer: Efficient Inception Transformer with Pyramid Pooling for Semantic Segmentation》
Accepted by NeuraIPS 2022.
IncepFormer
IncepFormer
是一种基于金字塔结构的 Transformer
编码器,可同时捕获全局上下文和精细定位特征。此外,借鉴 Inception
模块,该方法为为每个自注意力层嵌入轻量化的前馈模块,更高效的提取到丰富的局部多尺度上下文信息。
统一分割框架
Mask R-CNN
Paper: 《Mask R-CNN》
Accepted by ICCV 2017 (Best paper).
Mask R-CNN
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
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
MaskFormer
从语义分割任务本身出发,将语义分割从一个像素级分类问题转换成一个掩码级分割问题,不仅更自然的把语义级分割和实例级分割联系在了一起,并且在语义分割上取得了比像素级分类方法更好的结果。
kMaX-DeepLab
Paper: 《k-means Mask Transformer》
Accepted by ECCV 2022.
kMaX-DeepLab
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
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
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
Mask DINO
是一个简单、高效且可扩展d 统一对象检测和分割框架,通过添加支持所有图像分割任务(实例、全景和语义)的掩码预测分支扩展了 DINO
,利用 DINO
中查询嵌入通过点积生成一个高分辨率的像素点嵌入特征以预测一组二分类掩码,并且可以受益于联合大规模检测和分割数据集。
语义分割扩展
零样本语义分割
Paper: 《Decoupling Zero-Shot Semantic Segmentation》
Accepted by CVPR 2022.
ZegFormer
零样本语义分割(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.
SimFormer
弱样本学习(weak-shot learning)和零样本学习、少样本学习任务相似,均是将所有种类划分成没有交集的基础种类和新种类。不同的是,基础种类有大量强标注的训练样本,而新种类有大量弱标注的训练样本。
对一些基础种类,通常都有完整的像素级别的强标注数据,而针对更为广阔的新种类普遍仅有图片级别的弱标注数据。在该学习模式下,本文提出名为 SimFormer
的方法,旨在从带有强标注数据的基础种类中迁移双重相似度来辅助从弱标注数据中学习新类别。
半监督语义分割
Paper: 《Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels》
Accepted by CVPR 2022.
文章解读:https://zhuanlan.zhihu.com/p/474771549
U2P
本文基于 Every Pixel Matters
的理念,有效利用了包括不可靠样本在内的全部无标签数据,大幅提升了算法精度。
域自适应语义分割
域自适应(Domain Adaption),顾名思义就是自适应不同的域
,即不同的场景分布,包括:
-
从一个场合迁移到另一个场合
-
从天气晴朗迁移到雨雪雾
-
从白天迁移到黑夜
通常来说,不同域之间会存在域间隙和标签偏移问题,同时伪标记目标数据包含混合的封闭集和开放集标签噪声。
Paper: 《DANNet: A One-Stage Domain Adaptation Network for Unsupervised Nighttime Semantic Segmentation 》
Accepted by CVPR 2021.
DANNet
在自动驾驶中,夜间图像的语义分割与白天图像具有同样重要的作用,但由于光照差和费力的人工注释,前者更具挑战性。在本文中,作者提出了一种新的域自适应网络用于夜间语义分割,无需使用标记的夜间图像数据。该方法基于对抗性训练,使用一个标记的白天数据集和一个包含粗对齐的昼夜图像对。具体来说,对于未标记的昼夜图像对,使用日间图像上静态对象类别的像素级预测作为伪监督来分割其对应的夜间图像。通过进一步设计了一种重加权策略,以处理昼夜图像对错位和日间图像预测错误所导致的不准确性,并提高小物体的预测精度。DANNet
是第一个用于夜间语义分割的单阶段自适应框架,它没有训练额外的昼夜图像传输模型作为一个单独的预处理阶段。在 Dark Zurich
和 Nighttime Driving
数据集上的大量实验表明,该法实现了最先进的夜间语义分割性能。
Paper: 《SimT: Handling Open-set Noise for Domain Adaptive Semantic Segmentation》
Accepted by CVPR 2022.
SimT
在本文中,作者提出了一个单纯形噪声转换矩阵(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
2DPASS
是基于二维图像先验辅助的激光雷达点云语义分割,不同于先前的多模态方法,即训练和推理阶段均需要成对的图像和点云数据作为输入,该方法仅在训练阶段利用额外的图像数据,从原始相机数据中获取更丰富的语义和结构信息,并将其提炼蒸馏至三维语义分割网络中。在测试阶段,该方法可实现实时感知,无需图像数据输入,即可实现又快又准的三维语义分割,实现 SemanticKITTI
和 NuScenes
双 SOTA
。
扩散语义分割
Paper: 《Label-Efficient Semantic Segmentation with Diffusion Models》
Accepted by ICLR 2022.
DDPM-SS
去噪扩散概率模型最近受到了很多研究人员的关注,其性能由于以往 GAN
为代表的一众生成式模型,在图像修复、超分辨率、语义编辑等 low-level
领域遍地开发。最近,许多研究工作将 DDPM
引入到了 high-level
任务上,例如目标检测和语义分割等。本方法便是 DDPM
在语义分割领域的一个代表性工作,作者向我们证明了扩散模型也可以用作语义分割的工具,尤其是在标记数据稀缺的情况下。
推陈出新
先来简单总结下传统图像分割。对于传统的图像分割算法,无论是阈值分割、区域分割、边缘分割或基于聚类的方法等,几乎都停留在纯手工设计的阶段,例如人为确定一个阈值或者定义一个滤波器模板。此类方法更加适应的场景偏颜色、纹理、形状或梯度等简单的底层特征提取。然而,当遇到光照变化、姿态变化或者背景变化等情况几乎无能为力,更遑论提取到更进一步的高级语义特征。此外,此类先验知识往往需要专家经验,完全不易于推而广之。因此,基于传统的图像分割算法目前较多的是作为预处理(简单去噪)或者后处理(比如条件随机场和分水岭算法平滑边界轮廓)的一种手段去使用,亦或者取其精华去其糟粕,将其核心思想凝练出来融于现代的神经网络架构。
随着 AlexNet
引爆深度学习热潮开始,以卷积神经网络为代表的新一代神经网络架构逐渐开始流行起来,几乎在每个深度学习子领域均遍地开花。特别地,自全卷机神经网络(Fully Convolutional Network, FCN)这个里程碑式的网络被提出后,基于深度学习的语义分割正式拉开帷幕。既然谈到 FCN
势必很多人会拿它跟 U-Net
作比较。其实这两个网络包括整体的结构设计和思路是大同小异的,只不过是一个应用在场景解析任务,另一个应用在医学图像分割任务;一个长跳跃连接采用相加的操作然后直接一步到位上采样到原始空间分辨率,另一个长跳跃连接方式是通过拼接操作后再用卷积进行更细致的特征融合,然后不断细化,使其整体结构更加对称。后续提出的多数语义分割方法大都是基于此架构从不同方向延伸发展而成的。
因此,要想捋清楚语义分割究竟何去何从,首先先从分析这个编解码架构出发无疑是更合适的。
编解码架构
早期的语义分割以追求性(涨)能(点)为主,整体核心思想均是考虑如何高效建模上下文信息而设计。下面我们将围绕编解码器展开详细的讨论。
编解码的思想早期是出自自编码器,这个结构是由 Hinton
提出并发表在 Nature
上,主要用于解决图像压缩和去噪任务,随后该思路被广泛应用到图像分割任务上。编解码架构(Encoder-Decoder Architecture)主要由编码器、长跳跃连接和解码器所组成。
编码器
首先,让我们来看下编码器。众所周知,编码器一般可视为整个网络的特征提取器(a.w.a Backbone),用于压缩原始图像并逐步地提取出富含高级语义信息的特征图。这个过程中最关键的因素便是上下文信息,它是提升语义分割性能最为重要的因素之一,而有效感受野则大致决定了网络能够利用到多少上下文信息。
对于大部分网络结构来说,通常都会在编码的过程中引入池化或步长卷积来逐步降低输入特征图的空间分辨率,一方面可以降低计算资源的消耗,另一方面也能够在一定程度扩大感受野。此外,除了卷积操作本身(参数共享)所具备的平移等变性 translation equivalence
外,引入池化操作还能够为网络带来一定的平移不变性 translation invariant
,使网络对目标位置不那么敏感,间接地增强了网络对未知数据的推理能力,同时又通过共享卷积核来达到控制模型复杂度的目的。
理论上,通过堆叠足够深的卷积(池化)层,网络的感受野能够覆盖到输入图像的全局区域。然而,考虑到以下三点:
-
网络的实际感受野远小于其理论感受野,理论上呈高斯分布;
-
考虑到参数量激增和计算量消耗与性能之间的平衡;
-
频繁的下采样操作会导致小目标的细节信息丢失严重;
所以,单纯依赖堆叠一堆常规的卷积池化操作来实现覆盖原图的感受野其实是不太实际的。扯到这里,我想还有部分人没明白究竟上下文信息
是个什么概念?考虑下面这张图片:
Figure from PSPNet
先看第一行第三列,这里模型将远处的一艘船的部分误判为车,这是因为它具有与汽车相似的外观,而模型由于缺乏有效的局部上下文信息容易导致分割失败。局部上下文信息是分割领域中不可或缺的一部分,常用于区分具备相似特征的不同对象。
再看下第二行第三列,此处目标是一栋美丽的大厦,可惜模型未能将其完整的表示出来,这是由于传统的卷积运算一次仅能处理一个局部领域,这大概率会导致大尺寸对象分割的不完整性。因此,为了解决这个问题,我们需要思考如何设计更大的感受野来获取充足的全局上下文信息
再来看下这张图片:
Figure from PraNet
上图展示了多个结直肠息肉数据集统计后的目标尺寸分布,可以明显看出,不同的息肉目标之间是存在明显的尺度差异的,这种现象也普遍存在于许多语义分割任务中。因此,如何有效的提取多尺度上下文信息以适应不同尺寸、形状变化多样的目标也是一个亟需解决的问题。
以上多重因素均会在一定程度上制约模型的表示能力。因此,如上所述,早期的语义分割网络大都是围绕如何在保证效率的同时尽可能的捕获有效的上下文信息开展的,而主流的方法主要有两种:扩大感受野或引入注意力机制。
扩大感受野的方法主要有以下几种方式:
-
使用大卷积核的
GCN
等方法; -
使用空洞卷积的
DeepLab
等方法; -
使用池化操作的
PSPNet
等方法;
现在,让我们再进一步思考,以上这些方法存在什么局限性?例如:
-
使用不同大小的卷积核组合,一方面参数量过大容易导致多拟合,另一方面理论感受野远小于实际感受野;
-
使用空洞卷积虽然可以保留完整的空间信息,然而会引入额外的计算量,容易引起局部领域的信息丢失,同时,当扩张率选取不恰当时还会造成网格(棋盘)效应;
-
使用池化操作虽然简单高效,但容易因为降采样导致小尺寸目标丢失;
此外,感受野是否越大越好?实际上,感受野太小,不足以建模远距离依赖捕获大尺寸对象;感受野太大,则容易引入过多噪声和无效信息,这些最终都会影响到整体的分割性能。那么,设计合理的多尺度表征来获取丰富的等效感受野就显得尤为重要了。例如,DMNet
提出了动态多尺度的过滤器来自适应不同的目标尺寸。解决了尺度参数设计的问题,那么如何更高效的融合不同尺度的信息?CPFNet
通过借鉴SK-Net
的思想引入了尺度感知模块来自适应的融合来自不同尺度的特征。
另一方面,引入注意力机制的作用主要是获取足够的全局上下文信息以建立远距离依赖,主要方式有:
-
结合通道和空间双注意力的
DANet
等; -
借鉴自注意力机制的
NonLocal
等;
同样地,对于基于注意力机制的分割方法来说,其优化点可以考虑从不同维度去考虑如何建模,例如基于区域信息建模的PSANet
以及针对不同类别信息进行像素加权的OCRNet
;另一方面可以考虑从效率方面去改进注意力机制本身带来的计算资源问题,例如采用十字交叉注意力进行等效替代的CCNet
、引入非对称结构的ANN
、亦或是从全局上下文建模角度所实际的简化版GCNet
等等。
长跳跃连接
聊完编码器部分,再来分析下长跳跃连接。
既然谈到跳跃连接,想必大家第一时间想到的是 ResNet
中的残差连接 skip connection
。与原始的(短)跳跃连接操作缓解梯度弥散的动机不同,考虑到语义分割任务本身是一种密集型分类预测任务,因此 U-Net
或 FCN
中所涉及到的长跳跃连接操作本质上是为了更好的弥补编码过程中下采样导致的信息损失问题,帮助网络在解码的过程中更好的恢复对物体细节的定位。
另一方面,通过引入长跳跃连接,可以实现不同层级特征之间的信息融合,从而提取到更具有判别力的特征。因此,早期的 RefineNet
便是结合这两点,通过建模多个层级特征之间的信息交互来弥补下采样操作所带来的信息损失。那么问题来了:
-
如何融合更多的特征?
众所周知,不同抽象层级的特征具有不同的独特语义表征。因此,融合不同层级之间的特征是一个自然而然的想法,例如,UNet++
中便尝试结合长、短跳跃连接来实现尽可能丰富的信息共享。
-
如何融合更好的特征?
首先,考虑下医学图像分割任务。不同于自然图像,医学图像在成像过程中,受采集设备或光照等因素的影响,不可避免的会引入许多背景噪声。此时,如果我们单纯的采用长跳跃连接操作,势必会引入浅层特征中一些不纯净的噪声,从而影响解码器输出特征的质量。为了解决此问题,一方面可以从数据源本身出发,进行去噪处理,例如nnUnet
中设计了许多有效的预处理操作,例如CLAHE
、Gamma
增强等来更好的处理图像。另一方面可以从模型角度考虑,例如Attention-UNet
中引入门控注意力来强化前景区域抑制背景区域;又或者像MultiResUNet
堆叠多个1×1
卷积来进行特征"提纯"。
特征融合本质上是为了获得更具有判别力的特征表示。一般而言,浅层特征注重边缘、纹理等空间细节,但缺乏高级语义;而深层特征具备精确的高级语义信息,但缺乏空间细节信息。一种自然而然的想法便是融合两者。然而,由于特征结构以及特征内容本身的限制,不同层级之间的特征融合势必会存在语义鸿沟。为了解决此问题,ExFuse
提出了许多方法使网络得以在浅层特征中引入更多的语义信息,在深层特征中嵌入更多的空间信息。
解码器
解码器的作用是将编码器所提取到的高级特征上采样至固定分辨率以实现端到端的训练从而完成像素级的密集预测分类。通常来说,解码器设计的核心是如何高效的将经过压缩的高级语义特征尽可能无损的还原。这个过程中会涉及两个操作:上采样和特征输出。
如上所述,由于编码器会涉及到多次下采样操作,不可避免的会导致图像精细特征的丢失。一种解决方法是“提前止损”,正如我们上面所介绍的DeepLab
,采用空洞卷积可以在无需降采样的情况下拥有更大的感受野,但这仍然会引入许多问题。另一种方法便是“直面困难”,通常将一个特征图进行上采样有两种方式,即使用线性插值和反卷积。
线性插值算法是一种与数据无关的算法,它是根据设定好的公式近似模拟出未知点的信息,这必将制约模型的表达能力。而使用反卷积由于本身自带可学习参数,一般可获得更优的分割性能,但不可避免会引入过多的参数量和计算量。因此,一种参考的解决方案便如同 DUsampleing
中基于通道重排的思路所设计的新型上采样方式,可以同时结合两者的优势。
特征输出的作为为了让网络能进行端到端的训练以更新模型参数。通常来说,大多数网络只会输出最后一层特征图,但大家思考下这一定是最优解吗?众所周知,不同层级的特征所提取到的语义是不一样的,如果能够对中间层的特征进行监督学习,是否能取得比较好的效果?这个思想早期在 GoogLeNet
中有所体现,例如该论文中所提及到的辅助损失。后续一部分语义分割网络也应用了此思路,例如 PSPNet
和 DSN
。DSN
中较早提出了深监督的思想,旨在为解码器中所有层级的输出特征均建立监督机制,一来可以有效的综合多个输出层的信息来学习更加鲁邦的特征;二来可以有效的缓解训练过程中梯度消失的现象,加速网络收敛。
谈完深监督的好处,那潜在的问题会出现在哪呢?这里给大家举几个栗子:
-
需要监督多少层特征?
-
需要监督哪些层特征?
-
如何分配合适的权重?
对于第1点,这其实并没有一个严格的定论,关键之处还是取决于训练数据本身的特性。对于第2和第3点,一个经验法则是越靠近输出层的特征理应是最重要的,因此越靠近输出层的中间特征理应分配更多的权重,这一点其实也有不少论文验证过了。
演进思路
经过早几年的发展,这种通过设计新的网络结构或者拼接模(积)块(木)的方式所带来的性能增益,其边际效应逐渐降低,紧接着伴随而来的便是大量同质化工作的涌现,以至于在某个时间节点会出现诸如“xxx还能不能走下去”的窘境。当然,以上现象不仅限于语义分割,对于大部分视觉任务来说亦如此。
尽管在中间这段短暂的时间也涌现一些有意思的工作,但最终都未能掀起大的波澜,好比下面这个段子:
-
手动设计网络结构 → NAS搜索;
-
固定感受野 → 引入动态加权实现感受野的自动调节;
-
效果提升不上去 → 换个思路做实时分割来对比结果;
-
强监督太热门 → 换成弱监督(GAN, 知识蒸馏, ...) + trick = 差不多的指标;
-
DNN
太枯燥,融入点传统视觉的方法设计成端到端模式,如 EMANet 等; -
CNN
太单调,配合GCN
搞点悬念,如 SAGNN 等; -
嫌
2D
分割过于饱和,转3D
点云分割, 如 2DPASS 等;
作者:湃森
链接:https://www.zhihu.com/question/390783647/answer/1221984335
来源:知乎
当然,以上这些更多的是从一个点去旁敲侧击,这两年也有从图像分割这个任务本身去思考改良的,如 K-Net → MaskFormer → kMaX-DeepLab → Mask2Former → OneFormer → Mask DINO 这条线路,有种逐渐大一统的韵味,这也不失为一个有意思的研究方向,当然大部分小作坊伤不起。另外一个现象就是纯靠刷点真是很难再刷上去了,你看看各个榜单的斜率已经都快贴地了,一直到 ViT 出现才勉强的带火了一波,继而延续多了2年辉煌。可惜到后面大家又在 Transformer 身上看到了 CNN 当年的那种窘况,愣是成为了一个无情的堆积木玩具,以至于后期顶会上的论文只能又往各种 zero-shot | one-shot | few-shot | weak-shot | xxx-shot 又或者转移到各种 domain | multi-modal 去靠边,总之就是避开正面交锋,靠故事靠生动形象的图表实验去打动审稿人,但却极少有人结合实际的落地应用场景去解决问题,做到真正的产学研结合。不过既然都聊到 ViT 了,下面还是简单的跟大家介绍下这两年的 SOTA 之星。
随着 ViT
的诞生,吹响了 Transformer
席卷 CV
界的号角,一时间横扫计算机视觉各个子领域的 SOTA
之星,成为了夜空中最亮的仔,间接盘活了这盘棋。虽然 Transformer
同普通的卷积在数学概念上基本是等价的,整体的架构也都很类似,只不过在优化和实现细节上有所出入,但是整体而言还是有许多不同之处,主要体现在几个方面。
归纳偏置
对于 CNN
来说,由于有了归纳偏置,无需大量训练数据和精心设计的 trick 便能够取得不错的效果;反观 Transformer
,尽管少了这层约束,但是却造就其无限潜力的可能,而且这种性能上的差异会伴随着数据和算力规模的提升被逐渐放大。
远距离依赖
众所周知,由于感受野有限无法捕获有效的长距离依赖,CNN
在高层视觉语义信息中相对缺乏特征的连贯性来关联实例,导致在大尺寸目标对象上的分割结果堪忧。尽管可以通过其他方式(见上)辅助,但效果铁定不如 Transformer
这种开场即全局来得更加直接。
空间分辨率
Transformer
的另一个特性便是能够自始至终保持输入和输出的空间分辨率不变,这对于语义分割这种非常注重空间细节信息的密集型预测分类任务来说是非常有用的,在一定程度上可以缓解 CNN
多次下采样所导致的小目标信息损失的问题。
不过,Transformer
对于底层特征的提取其实并不擅长,容易导致对小目标的错误预测,这也是后面为什么涌现出这么多 CNN
+ Transformer
的混合双打架构,当然还有其他的益处,例如降低计算量。其实,Transformer 发展到后期更多的是蜕变为一种类似于 CNN 的基础组件供大家选择,毕竟任何事物的成长是由于某种因素的推动和影响,使其逐渐发展壮大,但这种发展是有限度的,当它发展到一定程度时,总有其它因素限制。
总的来说,找到一个合适的点去开展并不难,关键是要摆脱思维的禁锢,下面给大家举几个示例,更多的研究方向可参考前面"语义分割扩展"章节。
-
当感觉定量结果上已经难以再去提升时,可以尝试从定性角度出发,譬如从改善图像分割边缘这个点入手,虽然从数值指标上几乎不会有什么差距,但可视化结果展示出来的分割边界就是个极大的优势,不失为一个亮点去宣传。另一方面,也可以从不同角度找个侧重点去集中优化某一块,例如一直困扰目标检测中的小目标问题,语义分割同样也会有这种问题,特别是遥感语义分割这类的任务。
-
当感觉主流的数据集已经趋于饱和时,尝试转换个思路去突破,例如大家都做白天,你便可以做夜视场景;大家都做基于陆地的场景解析,你可以做基于水下的场景分割;大家都在做基于晴天的场景,你便可以尝试做风雷雨雪等极端场景下的分割等等;有条件的同学还可以尝试往多模态去靠,这也是一个不可逆转的发展趋势。
-
正所谓它山之石可以攻玉,平常一定要多阅读积累,广泛涉猎相关领域的知识,不求精通点到为止。下面以半监督学习为例,其核心问题在于如何有效利用无标注样本,作为有标签样本的补充,以提升模型性能。一种很容易想到的方法便是借助知识蒸馏的方法,首先基于另一半有标签的数据训练处一个模型;随后基于这个训练好的模型为剩余另一半没有带标签的数据提供标签,即伪标签;最后再用这些伪标签去训练模型。常规的做法是通过样本筛选只保留高置信度预测的结果,这种做法会存在几个:
-
如何保证最终筛选出来的伪标签就是高质量的?
-
如何保证被剔除掉的数据就是真正的无效?
如果我们将大量的无标签数据排除在训练过程外,便会导致模型训练不充分。此外,如果模型不能较好地预测某些困难类别,那么后面就更难为该类别的无标签像素分配准确的伪标签,从而无法获得提升,形成「马太效应」。因此,有效的解决了包括不可靠样本在内的全部无标签数据,理论上一定是可以提升算法精度的,这便是 U2P
所提倡的。此前如果你有涉猎到目标跟踪的算法,你会惊奇的发现这其实跟 ByteTrack
(高、低阈值) 有着异曲同工之妙,有时候思想的火花一碰撞便能产生美妙的灵感。
写在最后,让我们展望下 2023
年,这里笔者斗胆预测一波,明年开始, Diffusion Model
在语义分割的应用必将遍地开花。同 Transformer
一般,尽管这两年涌现出非常非常多的模型,但绝大多数都没有本质上的创新,几乎是把 CNN
那套 多尺度 + 局部上下文 + 全局上下文 理论套成壳搬上荧幕再重演一遍。现在原始的 DDPM
等扩散模型内部架构还是基于原始的 U-Net
,可以预计不远的将来必将又是在 Diffusion Model
这层外壳上套用 Transformer
或 CNN
再进行各种魔改重走一遍老路——"Deep learning is brute force, which is equivalent to evil."