图像分割-综述篇
文章目录
-
图像分割相关算法类型
-
全卷积神经网络模型
-
FCN(全卷积神经网络)
-
SegNet(基于卷递归编码器-解码器的SegNet架构)
-
UNet(Union-Network架构)
-
PSPNet(基于金字塔特征融合的网络架构)
-
Deeplab v1(深度可分离卷积网络v1版本)
-
PSPNet
-
Deeplab v2
-
Deeplab v3
-
Deeplab v3+
-
基于候选区
-
- Mask RCNN
- MS RNN
-
基于GAN
-
基于RNN
-
- ReSeg
- ViT
- Swin Transformer
- SAM(Segment Anything Model)
-
图像分割算法类型
如前所述,在我的《目标检测系列》文章中提到过
| 类别 | 流程/算法 | 论文、年份 | Google学术引用次数 |
|---|---|---|---|
| 基于全卷积的图像分割模型(Encoder+Decoder) | |||
| FCN | 《Fully convolutional networks for semantic segmentation》,2015 | 47741 | |
| SegNet | 《SegNet:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation》,2015 | 18234 | |
| UNet | 《U-net: Convolutional networks for biomedical image segmentation》,2015 | 74360 | |
| Deeplab v1 | 《Semantic image segmentation with deep convolutional nets and fully connected crfs》,2015 | 5627 | |
| PSPNet | 《Pyramid Scene Parsing Network》,2017 | 13670 | |
| Deeplab v2 | 《Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs》, 2017 | 17746 | |
| Deeplab v3 | 《Rethinking atrous convolution for semantic image segmentation》,2017 | 8588 | |
| Deeplab v3+ | 《Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation》,2018 | 12571 | |
| 基于候选区域的图像分割模型 | |||
| Mask r-cnn | 《Mask r-cnn》,2017 | 33994 | |
| MS r-cnn | 《Mask scoring r-cnn》,2019 | 1073 | |
| 基于GAN的图像分割模型 | |||
| Seggan | 《Seggan: Semantic segmentation with generative adversarial network》,2018 | 53 | |
| Alphagan | 《Alphagan: Generative adversarial networks for natural image matting]》,2018 | 177 | |
| 基于RNN的图像分割模型 | |||
| ReSeg | 《ReSeg: A Recurrent Neural Network-Based Model for Semantic Segmentation》,2015 | 337 | |
| ViT | 《An image is worth 16x16 words: Transformers for image recognition at scale》,2020 | 33341 | |
| Swin Transformer | 《Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 》,2021 | 16264 | |
| Mask-adapted CLIP | 《Open-vocabulary semantic segmentation with mask-adapted clip》,2023 | 192 | |
| SAM | 《Segment Anything》,2023 | 2825 | |
| SAM+RSPrompter | 《RSPrompter: Learning to prompt for remote sensing instance segmentation based on visual foundation model》,2024 | 40 |


全卷积
FCN
深度学习用于图像分割的“开山之作”
2015年研究者Long及其团队首次提出了一种称为全卷积网络( Fully Convolutional Networks, FCNs )的方法,在该框架中用卷积替代传统的全连接层设计。该网络架构以其特点在于能够处理任意尺寸的输入图像,并如图所示展示了其基本组成结构。研究者首先通过编码器模块执行下采样操作以提取高层次语义特征,并在此基础上继而利用反卷积操作实现特征的上采样过程以恢复图像细节信息。
ps:反卷积又称转置卷积,反卷积入门见:转置卷积(Transpose Convolution) — PaddleEdu documentation (paddlepedia.readthedocs.io)


FCN-32s、FCN-16s、FCN-8s的区别在于跳连的不同(分别从32、16、8倍下采样的特征图恢复至输入大小)
- FCN-8s为((池化层5双尺度未采样与池化层4)双尺度未采样后与池化层3)八倍尺度未采样
- FCN-16s为((池化层5双尺度未采样与池化层4)十六倍尺度未采样
- FCN-32s为池化层5三十二倍尺度未采样

FCNs表明能够实现神经网络在语义分割任务上的全连接训练过程,并为深度神经网络的发展提供了理论基础
优点
- FCN实现了对图像像素级别的分类功能,并旨在解决基于语义级别的图像分割问题;
FCN能够处理不同尺寸的输入图像,并成功保留了原始输入图像中的空间信息;
缺点
- 生成的结果由于上采样的影响而呈现出模糊和平滑的特征,并未能有效捕捉图像中的细节信息;
- 在对每个像素进行独立分类处理时,并未充分考虑像素间的相互关系而导致空间一致性不足。
SegNet
该方法由剑桥大学提出,并旨在解决自动驾驶或智能机器人领域的图像语义分割问题。其架构与FCN相似,在解码阶段采用逆池化操作而非反卷积进行特征图上采样。相比于反卷积操作,在逆池化过程中可同时减少参数数量以及计算量。
ps:
- 正向传播时会记录池化窗口中的最大值和最大值所在位置,unpooling时将所选取的最大值重新放置到对应的位置上,其他位置的值都设置为0。这一步仅生成稀疏特征图
- 然后这些稀疏特征图与可训练的解码器滤波器组进行卷积,以生成密集的特征图。
- 除了最后一个解码器(对应于第一个编码器)外,网络中的其他解码器生成的特征图的大小和通道数与其编码器输入相同。


ps: 该论文《Understanding Convolution for Semantic Segmentation, 2018》提出了一种不同于反卷积与unpooling的第三种上采样方法——密集上采样卷积DUC(Dense Up-sampling Convolution)。该方法通过对通道维度加以补偿,在尺寸上的信息损失得以弥补,并且相较于反卷积而言,在操作上更为简便。


UNet
随着深度神经网络在训练过程中逐渐深化时,其性能会出现下降趋势,这被称为一个退化现象.为了缓解这一问题,研究者们在ResNet等模型中引入了不同的跳跃连接机制,这些设计的核心区别主要体现在采用的方式(如加法连接或 concatenate)以及它们之间的密集程度等特征上,具体细节可见下文中的图表说明.


UNet引入了一种创新性的长跳链接,并通过跨编码器层间的特征传递机制实现图像精细特征的捕获(如图所示)。该网络架构最初为了解决基于生物显微镜的技术挑战而设计,在显微镜图像分割领域展现出显著性能优势,并逐渐扩展至广泛的医学影像分割应用研究中。

UNet的优点:
- 该架构在小规模数据集上展现出良好的效果。
- U型跳跃连接一定弥补了上采样过程中的信息缺失。通过跳接连接(skip connections),不同层级的特征图得以相互联系,并使模型能够同时聚焦于低级与高级语义特征 。
UNet的缺点:
- 难以精确设定理想的网络深度。
- 跳连接只能在编码器与解码器子网间相同比例的特征图上严格地执行融合操作。
Deeplab v1
在提出Deep Lab V1之前,在迁移学习的过程中,在池化操作中存在一定的局限性:一方面是因为池化操作导致信息的局部性增强而降低了迁移不变性的保持能力;另一方面则是未能充分考虑标签间的概率关联对分割效果的影响。因此,在这一阶段所获得的语义分割结果往往较为简单。
在池化操作中存在迁移不变性损失的问题上,Deep Lab V1通过采用空洞卷积的方法来应对采样过程中分辨率下降的问题。
针对未充分利用标签间概率关系的问题,Deep Lab V1方法采用全连接条件随机场模型对分割后的图像进行优化后处理步骤,并从而获取不同尺度下的物体及其背景信息。通过对其分类图像中标记的粗糙性和不确定性进行修正,并修复了细节区域中出现的误分问题,最终实现了更为精确的分割边界。
空洞卷积
通过卷积或池化层进行下采样会产生一个非常严重的后果:图像细节信息会损失,并且小物体的信息无法恢复(假设使用4个步长为2的池化层,则任何小于 2^4 pixel 的物体信息理论上都无法恢复)。
空洞卷积(Dilated Convolution)也被称作扩张卷积(Atrous Deconvolution),它以解决图像语义分割问题中因下采样导致的分辨率降低和信息丢失为目标,并提出了一种创新的卷积方法。
空洞卷机设置了扩张率参数(即Dilation Rate),从而使相同尺寸的滤波器产生更大的视野范围。类似于对滤波器进行填充操作以扩大其覆盖范围。同时,在保持相同视野宽度的情况下,空洞卷机所需的参数数量显著少于普通滤波器。
了解空洞卷积,请参考
- 全连接CRFs
上采样的这一过程虽然成功地将特征图恢复到了与原始图像尺寸一致的状态,但也带来了特征信息的丢失。这一操作必然导致了分类目标边界模糊的问题。为了实现更高的分类精度,在实际应用中通常需要采取一系列图像后处理手段来提升结果的质量。
因为CRF是一种用于序列标注的强大工具,在具体而言, CRF全称为线性条件随机场,它是基于概率图中相邻变量间是否存在满足特定特征函数的关系来构建模型的一种方法.这种建模方式恰好弥补了以往方法未能充分考虑标签间概率关系的不足,如上所示.

全连接CRFs常被用作深度学习图像分割应用中的图像后处理手段。这种改进型的CRFs模式通过整合原始影像中各像素之间的相互关系,并对深度学习产生的分类结果进行优化,在提升分类图像质量的同时有效提升分类图像中存在粗糙性和不确定性区域的质量
全连接CRFs的简单原理描述如下:
物体通常通过其周围的空间区域来表示,在这种情况下,
每个象素都具有一个类别标签yi,
同时与之对应的观测数据xi相关联。
在无向图中,
这些象素被视为一个个节点,
通过它们之间存在的关系构建起来,
从而形成了条件随机场模型。
主要目标就在于利用观测数据推断出原始图像中该象素i所属的类别标签。


最终,Deeplab v1整体结构如下图:

PSPNet
文中具体说明了该网络架构采用了Spatial Pyramid Pooling这一技术,并详细描述了其不同层级特征图经过特定处理后被整合用于图像分类任务。文中指出这种预先获取的信息有助于缓解基于CNN框架下固定大小特征图所带来的限制,并强调了这种方法在提升模型泛化能力方面的优势。
为了解决如何减少不同子区域间的情境信息丢失问题,PSPNet开发出一种层次化的全局先验信息体系.该体系包含了尺寸各不相同且在各个子区域内表现出差异的信息,并被命名为Pyramid Pooling Module(PPM).该模块主要应用于深度神经网络最终层的特征图构建.
PSPNet基于ResNet设计主干网络结构,并结合金字塔型多尺度感知器(PPM)从不同空间尺度提取并整合区域层次的信息。经过双线性插值上采样后并逐级拼接形成最终特征图,并同时保留了局部与全局语义信息。值得注意的是,在PPM模块中金字塔层级数量及各层输出尺寸是可配置的参数设置,默认情况下会根据输入到该模块的特征图尺寸进行动态调整以适应不同分辨率输入的需求

PSPNet的改进点:
设计了一种新的Pyramid Pooling Module模块结构,并扩展了感受野范围的同时提升了对复杂背景环境的理解能力。
在主干网络各分支上引入了一种新型的空间聚合机制——空洞卷积。
在模型训练过程中采用了双重损失函数设计策略:除了最后阶段应用传统的softmax损失函数(loss 1)外,在res4b22层之后增加了另一个辅助损失函数(loss 2)。这两个损失函数会受到其所属位置之前所有 preceding layers的影响,并由这些前一层次共同决定最终输出结果。
实验结果表明这种方法能够加速收敛速度。
在测试过程中排除了这个额外的分类器的影响。
Deeplab v2
创新点:
基于SPP/PPM思想的指导框架中, Deep Lab V2 采用了空洞空间金字塔池化( ASPP )机制,通过该机制能够显著地扩大网络的感受野范围,从而实现对多尺度特征的有效捕捉. ASPP 模块由四个不同扩张率的并行空洞卷积操作构成,通过这种设计能够进一步提升网络对复杂特征模式的识别能力.
将 backbone 替换为 ResNet架构后,模型在图像分类任务中的性能表现得到了明显提升.
Deeplab v2的网络结构和Deeplab v1相差不大,结构如下:

ASPP模块图

Deeplab v3
Deeplab v3首先介绍了目前图像分割领域面临的两个挑战:
- 不断应用下采样操作或采用较大步长的深度可分离卷积可能会减少特征的空间分辨率,在分割任务中难以提升模型性能;
- 涉及多种尺寸的目标即为多尺度问题。
然后介绍了目前常见的四种语义分割网络架构:
- Image Pyramid(图像金字塔结构):将不同尺度的图像同步输入至网络中,并使较高尺度的图像能够提取局部细节特征;而较低尺度的图像则用于捕捉更大范围的整体信息。这种设计的主要局限在于由于GPU内存限制,在处理更大或更深的深度神经网络时表现不佳;因此在实际应用中主要局限于推理阶段。
- Encoder-Decoder(编码-解码结构):其中编码器的作用是逐步缩减特征图的空间维度;而解码器则负责逐步恢复目标细节及其空间维度。目前已有如SegNet、U-Net以及RefineNet等模型采用了类似的架构设计;而DeeplabV3+也在后续研究中沿用了这一基本框架。
- Atrous Convolution(空洞卷积):基于空洞卷积设计的一系列模型具有显著优势:即能够在不降低特征空间分辨率的同时显著提升感知范围;从而更有效地捕捉长距离的空间关系。
- Spatial Pyramid Pooling(空间金字塔池化):通过空间金字塔池化机制能够有效整合不同尺度上的全局与局部信息;从而在保持特征完整性的同时提高模型对复杂场景的理解能力。

相较于原有版本,Deeplab v3在结构变动上较为有限。该方法主要聚焦于对空洞卷积的相关研究以应对上述提出的两项关键挑战。通过主要采用了级联(cascade)和并行(parallel)两种架构设计来整合不同类型的空洞卷积模型,并总结出了多组有效的实验技巧。最终在该基准下完成了对DenseCRF后处理步骤的省略,并在语义图像分割领域实现了与现有顶尖模型相当的表现。
DeeplabV3具体贡献如下:
重新讨论了空洞卷积的使用
通过深入研究ResNet发现
然后采用空洞卷积技术,并深入研究了不同stride大小对网络性能的影响,在最大限度上避免了细节语义信息丢失的风险。研究表明,在所有测试条件下设置stride=8时能够实现最佳性能水平;然而该设置方式会导致更高的内存消耗。在综合考虑计算效率与存储需求的基础上,Deeplab v3系统最终选择采用stride=16的空洞卷积结构以达到更好的平衡点
同时,在分析空洞卷积存在的"grid"问题时发现其基本原理是在滤波器之间填充零值。当膨胀率过高时会导致模型对细节特征的捕捉能力下降。借鉴自多分辨率分析策略,在这一过程中粗粒度层通常要求更高的特征提取能力;而细粒度层则由于已经接近最优解状态无需过多关注细节变化。基于此原则,在改进型 Deeplab v3 中采用了四种不同的膨胀率组合({2,4,6,8})。具体而言,在每个block块内部配置有三个独立的卷积模块;其中 Deeplab v3 对这三者分别设置了三种不同的膨胀率分布模式:atrous rate × Multi Grid= atrous rate × (1; 2; 4);而对于 block 系列中的第四层(block4)则采用了双倍膨胀策略:即 2× Multi Grid=(2;4;8)。


改进了ASPP模块
在ASPP中加入了BN
通过多种 atrous rates 的 ASPP 设计能够有效地捕获图像中的多尺度特征信息。研究发现,在提升扩张率(atrous rate)的过程中会导致用于提取有效特征区域的滤波器数量减少,在极端情况下当空洞卷积达到与 feature map尺寸相近时(即 atrous rate 接近 feature map 的空间维度),基于 3×3 卷积的操作将无法捕捉图像整体上下文信息并最终退化为仅包含中心滤波器权重的一维卷积核

为了主要针对该问题,并将全局上下文纳入模型
最后改进后的ASPP如下图:
- 包含一个 1×1 的卷积层与三个 3×3 的卷积层(其中 256 大小的滤波器并带有 BN 层),其中在 output_stride 设置为 16 时各分支的空间扩张率分别为 6、
12 和 18 倍;而当 output_stride 调整为 8 时其空间扩张率会相应加倍。 - 然后将各分支生成的特征图经过一次 256 大小滤波器加 BN 处理后进行融合,
最终将其输入到最后一个全连接层以得到预测分数。

取消了DenseCRF
在DeePLab v1和v2中,在具有较大膨胀系数的3×3空洞卷积结构下进行设计时会发现一个问题:即图像边界在长距离区域难以提取有效的特征,并会导致仅提取局部特征并失去远处细节。经过实验发现这样的设计会导致最终输出的边界定位精度较低。因此建议在模型输出后应用DenseCRF进行优化处理来提升定位精度
然而,在ASPP模块中集成图像级别的特征。整合图像级别的特征等价于整合了全局的位置信息。从而强化了分割边界的强度。因此,在不需要额外应用CRF的情况下就可以实现目标。这正是引入CRF所导致的主要原因。
其他训练tricks *
学习率策略:采用的是指数衰减的策略,在初始学习率基础上其值基于初始学习率乘以(1−\frac{iter}{max\_iter})^{power} ,其中幂次设为0.9。
Input Image Processing: To address the requirements of network input dimensions and prevent memory overflow, input imagery is conventionally cropped.
Large Kernel Handling: To ensure effective feature extraction in expansive convolution layers, a larger image size is typically required; failure to achieve this would result in the layer's weights predominantly being concentrated in padding regions.
Implementation Details: In this study, during both training and testing phases on the PASCAL VOC 2012 dataset, a crop size of 513 pixels was systematically applied.
Batch normalization:
基于ResNet架构增加的组件均包含BN层这一设计模块。值得注意的是,在不同阶段的训练过程中(即分别在增强的数据集上),我们采用了不同的策略:首先是以初始学习率0.007进行30K次迭代(即第一次迭代),随后冻结BN层参数并切换为output_stride=8;接着,在PASCAL官方数据集上继续使用初始学习率0.001进行30K次迭代(即第二次迭代)。此外,在实验设计中我们还特别关注了模型性能与计算效率之间的平衡关系:通过对比实验发现,在保持较高计算效率的同时(即中间特征图空间分辨率是前一阶段四分之一大小),使用较大的output_stride值(如16)虽然显著降低了模型精度(即特征映射较为粗糙),但却显著加快了模型收敛速度。
Upsampling logits:在之前的icularly研究中使用了output_stride=8的输出,并将其与其对ground truth的下采样结果进行了对比。然而作者发现保持ground truth的一致性更为关键,并最终采用了对output进行上采样的处理,并将其与其完整的ground truth数据进行了对比。
数据增强(Data augmentation):随机缩放(从0.5到2.0)和随机左右翻转
其他结论
- 相较于更大步长而言,在输出步长为8时表现出更好的性能;
- 基于ResNet-101模型架构相比基于ResNet-50而言具有更好的表现;
- 通过动态调整扩张率组(分别为2、4、8)相比固定设置(均为1)能够带来更好的性能表现;
- 通过引入多尺度输入以及左右翻折的数据增强策略后,在实验结果上取得了显著提升;
- 基于MS COCO进行预训练得到的效果更加理想。
Deeplab v3+
首先讲述了目前两类语义分割网络架构的优缺点:
- 空间金字塔池模块:该模块能够基于不同扩张率和平移不变的有效感受野, 利用卷积运算和平移不变性特性提取输入特征的多尺度表示。
- 编码解码器结构:其主要作用在于加速编码回路中的计算速度(由于未采用扩展特征设计), 并逐步重构回 Decode 区域中的清晰对象边界。
于是
第一
第二
第三
基于空间金字塔池模块与编码解码器架构的基础上完成了Deeplab v3+模型的设计工作

使用Xception作为backbone,并对Xception进行了改进 *
基于深度学习框架的发展历史来看,在InceptionNet之前常用的卷积backbone架构主要以简单的卷积块堆叠为主。自2014年提出的深度学习框架中的一项重要突破是InceptionNet(亦称GoogleNet),该网络采用了独特的多尺度特征提取机制。具体而言,在每一层中该网络采用了分通道使用不同尺寸的卷积核的方式进行特征提取,并通过这种设计不仅能够有效捕捉不同尺度的空间信息(即感受野),而且显著减少了模型的参数数量。
随着网络深度的增加,在普通卷积结构中参数数量急剧上升
Xception可被视为Inception的一个极端形式,在其网络架构中通过将每个深度可分离卷积层中的1x1卷积核完全展开后再执行逐通道卷积操作。相较于深度可分离卷(DSC)架构而言,则展现出独特的特征:其网络架构遵循先PW(Pointwise Convolution)后再执行DW(Depthwise Convolution)的操作流程。在当时的背景下,Xception模型确实在ImageNet图像分类任务中取得了最优性能表现
微软亚洲研究院团队对其基础架构做出了优化,在深度学习领域取得了显著进展。他们提出了一种改进版本 Aligned Xception(源自可变形卷积 DCN)。该模型继承并扩展了 Xception 的核心设计思想:传统的卷积操作基于预先设定尺寸的滤波器,在输入图像或其提取的特征图上固定的矩形采样网格上执行。这些采样网格的标准尺寸通常包括 3×3 和 5×5 等小方块。然而,在实际应用中我们发现由于目标物体在图像中可能受到变形或遮挡的影响而难以准确识别与分类。为此在可变形卷积架构中(DCN)每个采样点都引入了额外的学习偏移参数以适应不同形状的目标区域进而实现了对移动后的采样点的操作从而形成了可变形 RoI 池化机制



- 在最初提出的Inception-ResNet架构中(基于Inception-v4的设计),存在一种对齐问题。具体而言,在特征图上靠近输出端的单元与其感受野中心位置在图像空间中的投影区域并不一致。
- Aligned Inception-ResNet结构如图所示。该架构通过消除传统的非对称卷积操作(包括1×7、7×1、1×3及3×1等卷积),实现了更好的特征提取效果。


- 基于DeepLabV3+对Aligned Xception进行了优化:1)采用了更深的Xception架构;在确保计算效率的同时(为了快速计算),维持了Entry Flow网络的基本结构;将所有的最大池化层替换为带stride=2的深度可分离卷积;从而能够通过空洞可分离卷积提取不同分辨率的空间特征;类似于MobileNet的设计理念,在执行每个3×3深度可分离卷积操作后均紧跟Batch Normalization和ReLU激活函数

- 消融实验 * 研究采用基于改进型Xception架构设计的ResNet-101作为主干网络,并系统性地分析了不同数量的一维卷积层对PASCAL VOC 2012验证集数据集的影响。研究结果表明,在保持原有性能基础上的最大化减少低层次特征图的计算开销时,默认选择为48个一维卷积层最为合理。

融合后的编解码特征图依次经过两个大小为3×3的卷积层。研究者通过实验分析不同卷积结构对模型性能的影响发现:当将Conv2特征图(跨步前)与DeepLabv3特征图进行连接时,在采用两个大小为[3×3, 256]的卷积层相比仅使用一个或三层卷 convolution时能显著提升性能

基于候选区
Mask RCNN
实例分割领域的”开山之作“,同时也使得计算机视觉网络走向多任务时代。
语义分割:将图像中的每个像素分配给预定义的语义类别,从而实现对图像的像素级别的分类。
实例分割:在语义分割的基础上,进一步将图像中的每个像素分配给不同的物体实例,从而实现对图像中不同物体实例的分割。
全景分割:将图像中的每个像素分配给预定义的语义类别或不同物体实例,同时保留类别和实例信息,从而实现对图像的全景级别的分割。
之前在目标检测领域已经讲述过Mask RCNN的相关原理,此处不再赘述。
基于其新增FCN分支(其中ROIAlign实现了特征对齐功能),Mask RCNN得以实现图像分割。值得注意的是,在全卷积网络的基础上,Mask RCNN并非直接作用于像素层面 ,而是通过针对每个Region of Interest(Region Proposal)进行分类与分割的操作。因此变相地完成了实例分割任务。
需要注意的是,在开发图像分割模型后,相对容易将其扩展至关键点检测领域。具体而言,在将关键点位置建模为一个单独的one-hot mask的基础上(即每个目标只需预测一个mask),若要预测多个关键点,则每个目标则需预测K个独立的关键点mask即可完成任务。
在实现细节方面:对于每一个实例中的关键点而言,在Mask RCNN算法中生成了一个m×m尺寸的二进制掩膜图像。这个掩膜图像仅在一个像素位置上标记1(表示该像素属于目标区域),其余所有像素位置均标记0。这一设计使得模型能够精确定位并分割出各个关键对象的关键区域特征。此外,在模型训练过程中使用了交叉熵损失函数作为损失函数计算依据。
MS RNN
MS RCNN提出一个问题,那就是对实例分割掩膜(Mask)的质量评估不准确。
具体而言,在当前主流的实例分割算法中
边框分类置信度和掩码质量之间的偏差如下图所示。其中实例分割假设获得了准确的边框定位结果和高分类分数,但相应的掩码是不准确的。显然,使用这种分类得分对掩模进行评分往往会降低评估结果。

其根本原因在于损失函数的问题,在现有分类损失函数无法充分反映Mask质量的前提下,MS RCNN选择使用Mask IoU+回归损失结合L2 Loss的组合方式来评估Mask质量(如图所示)。

针对损失函数的优化调整,在基于Mask R-CNN架构的基础上实现了改进,在此基础上增加了新的IoU评估头

基于GAN
在语义分割任务中,维持分割目标的边缘清晰度与边界平滑性通常被视为关键要求;然而,在某些情况下,默认使用的分割架构可能会存在局限性。为了弥补这一不足之处,则可以通过借助生成对抗网络(GAN)强大的图像生成能力来实现对抗学习训练,并在此过程中提升分割掩膜的质量。

基于RNN
ReSeg
相较于CNN而言,在循环神经网络(缩写:RNN)具备长距离关系建模的能力,并且更擅长处理前后文之间的依赖关系来解析语义含义。因此,在自然语言处理领域得到了广泛的应用。
鉴于此优势,在图像处理领域内,
为了表征图像内不同区域特别是远距离区域间的相互依赖关系,
进而获得各区域间的语义关联性,
随后,在计算机视觉领域中,
并取得了较为理想的进展
RNN能够对像素之间的短期依赖关系进行建模,并将像素连接起来并依次处理以形成全局的上下文关系。基于Visin等人的研究,在ReNet的基础上提出了ReSeg网络结构,在每个ReNet层中包含四个单独的RNN模块分别在水平方向和垂直方向上遍历图像并编码相应的patch或激活信息。这些模块组叠在经过预先训练的卷积神经网络之上,并充分挖掘了通用局部特征以提高模型性能。最后通过上采样层恢复了与原始预测目标分辨率一致的结果图像。

然而尽管能够实现一定程度的上下文建模,RNN在处理长距离依赖关系方面存在局限性,同样面临训练上的挑战,从而导致研究者们不得不探索其他方法以克服这些限制,最终使得LSTM被成功地应用到语义分割任务中
ViT
但是LSTM不仅计算复杂度较高而且仍然存在传统RNN的局限性即无法实现真正意义上的并行运算以及难以捕捉长期依赖关系。随着 attention mechanism 在 2014 年开始逐步进入计算机视觉领域并且逐渐被广泛应用于各种场景中例如Google Mind团队通过 RNN 模型实现了 attention mechanism 在图像分类任务中的应用使这一技术逐渐受到关注与认可。随后于 2017 年 Transformer 提出了基于自注意力机制的新架构成功解决了并行计算的问题从而标志着深度学习框架的重大突破与创新。而到了 2020 年 ViT Vision Transformer 的出现进一步验证了 Transformer 在图像处理领域的强大能力通过将传统的 CNN 结构转化为序列处理的方式实现了对图像块序列的有效分类与预测这标志着基于 Transformer 的计算机视觉研究进入了全新的发展阶段
ViT可替代传统CNN架构在CV领域的最新进展。其具体架构已在针对目标检测等系列任务的技术综述中详述

Swin Transformer
2021 ICCV最佳论文获得了殊荣,在多个计算机视觉任务中表现优异,在众多对比研究中超越了DeiT、ViT和EfficientNet等主流主干网络体系,并成功取代了传统的CNN架构,在计算机视觉领域确立了通用的backbone架构。
Transformer模型在计算机视觉(CV)领域中面临两类问题:其本质源于模态间的差异性
与语言Transformers中以单词tokens作为基本处理单元不同的是,在视觉信息处理方面,视觉元素由于其特性的多样性,在尺度上呈现显著的变化差异。然而,在此过程中所使用的tokens具有固定的尺度特征这一特性使得这些视觉信息难以被现有的模型系统所适应。
图像中单个像素点相对于文本段落中的单词所具有的分辨率更高。在计算机视觉领域中存在诸多需要在像素级别进行密集预测的任务,在这种情况下对于高分辨率图像上的Transformer模型而言确实面临着显著的技术难题。这是因为通常情况下会将每个像素值视为独立的Token进行处理而其自注意力机制所需计算复杂度正与图像尺寸呈平方关系(即每对Token之间的相互作用计算量与总的Token数量平方成正比)。
针对上述,Swin Transformer提出了层次化 (Hierarchical) 的概念。
如下图所示,Swin Transformer从较小尺寸的patches(以灰色标注)开始,在更深层的Transformer层中逐步合并相邻的patches,从而构建层次化的表示。通过这些层次化的特征图(如使用特征金字塔网络( FPN ) 或U-Net),Swin Transformer模型能够方便地进行高级视觉任务处理。在线性计算复杂度下,在分割图像(以红色标注)时使用非重叠窗口内的局部自注意力计算。每个窗口内的图像块数量固定,因此复杂度与图像尺寸呈线性关系。这些特性使得Swin Transformer相比传统的Transform架构,在多种视觉任务中展现出更强的一般适用性。

尽管降低了计算复杂度但仍存在一些问题这种计算方式仅能建模window之间的依赖关系却无法有效建模window内部patches之间的相互作用基于此Swish Transformer进一步提出了一种改进方案即重构为移位窗口这种设计使得新生成的window能够跨越上一层中前面window的边界从而实现了不同window内部patches间的关联

Swin Transformer的网络结构解读

该模型的架构分为依次包含4个阶段的部分:首先是经过分块(Patch Partition)处理后连接的第一个阶段模块;随后是第二至第四个阶段依次通过Patch Merging处理后再连接并包含Swin Transformer Block组件;具体而言,在第一阶段中引入了Linear Embedding连接并包含Swin Transformer Block组件;而后续各阶段则依次通过Patch Merging处理后再连接并包含相应的Swin Transformer Block组件以完成模型构建
Patch Partition: This method involves partitioning an image with a pixel resolution of size 224 \times 224 into patches with a size of 1 pixel per side, resulting in patches of resolution 56 \times 56 pixels. Each patch is flattened to form a token, and the feature dimension for each token is calculated as 3 \times (1/(\text{patch\_size}^{\,}) )^{\,} \times (1/(\text{patch\_size}^{\,}))^{\,}=3 \times (1/ (1\,\text{pixel}) )^{\,} \times (1/(1\,\text{pixel})) )=3 features. Therefore, in the entire image there are (56 \times 56) such tokens.
Linear Embedding:具体而言,在该方法中(token_feature)会被映射到所需的维度空间中,并从(batch_size, 56×56, 48)这一空间映射至(batch_size, 56×56, 96)的新空间。
Patch Merging技术:一种用于降低计算开销并生成分层次特征的方法。该技术类似于YOLOv2中的PassThrough模块和YOLOv5中的Focus模块。通过该操作可使patches_resolution降至原来的一半,并使token_feature数量增加一倍。(batch_size, 56, 56, 96)转换为(batch_size, 28, 28, 192)。
Swin Transformer Block:相较于传统的Transformer架构,在其核心区别在于采用了两种新型 attention机制:即窗口型多头自注意力(W-MSA)和位移型窗口型多头自注意力(SW-MSA)。这两种机制通常是成对出现的。这种架构设计使得整体模型组件数量通常为偶数个。
-
通过基于window大小的关注这些token之间的关系来实现W_MSA机制,在此过程中大大降低了计算复杂度。然而该方法未能体现不同窗格之间的联系。
-
因此通过调整平移窗口机制构建的自注意力模型SW-MSA,在这种新架构下不仅能够实现对窗格内token关系的关注,并且通过将窗格向下取整分割并进行循环偏移操作实现了来自不同 window内的 token 之间的联系建立。
注意力层计算softmax分数的过程中加入了新的可学习参数:相对位置偏置(B),实验表明使用相对位置嵌入的效果显著优于不使用位置嵌入或使用绝对位置嵌入。

SAM(Segment Anything Model)
2023年 ICCV 最佳论文荣誉提名奖
大语言模型(LLMs)在NLP领域已处于百花齐放阶段,然而,由于基于不同模态的技术发展现状不同,计算机视觉领域的基础研究仍处于 nascent 阶段.该研究于 2023 年成功推出 Image Segmentation Model SMA,开创了视觉基础研究的新纪元
在自然语言处理以及当代计算机视觉领域中,基础模型被视为一个极具前景的方向。通过引入提示技术手段,该方法能够实现对新数据集与新任务的零样本及少样本学习。受到这一启发,在此基础上提出了可指示性分割的任务框架。其核心目标是根据任意分割提示生成合理的分割掩码。为了实现这一目标,在图像中可以指定点、目标框或mask形式的信息来辅助识别对象。具体而言,在图像中可以指定点、目标框或mask形式的信息来辅助识别对象。例如,在图像中可以指定点、目标框或mask形式的信息来辅助识别对象。例如,在图像中可以指定点、目标框或mask形式的信息来辅助识别对象。
SMA使用可提示的分割任务作为预训练目标,并通过提示工程解决一般的下游分割任务。

模型结构
根据上述任务构建的模型应满足以下限制条件:能够接受灵活形式的提示信息;必须同时具备实时计算掩码的能力,并且能够支持交互操作;并且必须具备模糊感知能力。
该研究者提出了一种简洁的设计方案以满足三个关键限制:通过强大的图像编码器(ViT),我们能够生成图像的表征;随后利用辅助提示编码器提取用户提供的提示信息;最后将两个输入融合到一个高效轻量级的掩码解码模块中以生成分割掩码。该模型被命名为Segment Anything Model并简称为SAM,请参考图中的b部分
通过将SAM划分为图像编码器与快速提示编码器/掩码解码器,并使相同的图像嵌入具备不同提示可重复利用的能力(并对其成本进行摊销)。给定一个图像嵌入及特定提示信息,在网络浏览器中运行提示符编码器与掩码解码器时可实现50ms级别的掩码预测能力。该系统采用点、框状和mask作为主要Prompt形式,并支持自由形式文本输入以呈现初步结果。为了增强SAM对歧义感知的能力,在单个提示下预测多个可能的mask,并使SAM能够自然地处理歧义情况(例如衬衫与人之间的区分)。
Image encoder 将待分割图像映射至图像特征空间,并基于预训练的ViT架构处理输入数据。对于输入尺寸为1024×1024像素的画面,默认设置下每个patch大小为16×16像素时(即每维分为64个patch),生成的空间维度大小为[batch_size, embed_dim=788, height=H/16, width=W/16](假设原始画面尺寸H×W)。
Prompt encode r用于将输入提示映射至提示特征空间,并支持两类表示方式:稀疏表示(包括点、框与文本)与密集表示(包括遮罩)。
-
mask: 卷积核数量为64×64
-
point: 位置编码,并结合正负信息进行处理
-
box(两个输出):分别采用位置编码生成左上角标记以及右下角标记的方式进行处理
-
text: 文本嵌入基于CLIP模型提取
**Mask decoder部分描述如下:将图像编码器与提示编码器各自的输出进行融合,并通过解码器从特征图中生成最终分割掩膜。具体来说,在特征图的基础上应用解码操作以恢复出分割掩膜的信息 -
output tokens = mask tokens (掩膜) 和 iou tokens (掩膜分数)
-
经由自注意力机制整合提示嵌入(prompt tokens)与输出tokens(output tokens),获得最终的token
-
随后利用交叉注意力机制(cross-attention),建模image embedding与上一步生成的token之间的关系
-
将更新后的image embedding放大两倍以生成最终image embedding;从更新后的token中分离出mask token和iou token
-
iou tokens被多层感知机(MLP)处理以计算IoU分数
-
mask tokens被多层感知机处理,并与最终image embedding进行点积运算后生成最终掩膜
ps:为了保持位置信息始终不丢失,每做一次attention运算,不管是self-attention还是cross-attention,tokens都叠加一次初始的tokens,image embedding都叠加一次它自己的位置编码,并且每个attention后边都接一个layer_norm。


数据集问题
为了有效达成零样本与少量样本学习任务, 论文必须建立一个规模宏大的预训练数据集. 这项研究构建了SA-1B数据集, 包含丰富多样的图像信息与精确的目标遮挡(masks). 然而, 由于标记如此大规模的数据集所涉及的成本是相当高昂的, 因此论文提出了一种基于数据引擎的辅助方法来辅助构建数据集. 该方法分为三个具体阶段: 第一阶段是辅助手动标注, 第二阶段是半自动结合注释修正, 第三阶段则是全自动完成. 在第一阶段中, 在SAM的帮助下完成掩码的标注工作; 在第二阶段中, SAM通过提示对象位置自动生成部分掩码, 同时注释者专注于剩余对象的注释以提升多样性; 最后在第三阶段中, 使用前景点规则网格提示SAM生成高质量掩码, 平均每幅图像产出约100个高质量掩码
SA-1B在数据引擎的最后阶段实现了全部自动完成收集过程,并且其收集的数量是现有分割数据集数量的400倍多,并且经过全面验证后发现这些掩码不仅质量高而且种类丰富。

