目标分割介绍及最新模型----学习笔记

目标分割的目标是 将感兴趣的目标区域从图像背景中分离出来,并得到目标在像素级别的精确轮廓。目标分割有两种类型,一种是语义分割,一种是实例分割。

(1)语义分割(Semantic Segmentation)

  • 只区分 "类别",不区分 "个体"。对图像中每个像素赋予一个类别标签(如人、车、树、背景),相同类别的不同个体被视为同一类

  • 例子:在一张包含 3 个人的街景图中,语义分割会把 3 个人的所有像素都标为 "人" 类,不会区分这是第 1 个人、第 2 个人

(2)实例分割(Instance Segmentation)

  • 既区分 "类别",又区分 "个体"。在语义分割的基础上,进一步为同一类别的不同个体赋予独立标签

  • 例子:同样是 3 个人的街景图,实例分割会给 3 个人分别标为 "人 - 1""人 - 2""人 - 3",明确区分每个个体的像素范围

语义分割

对图像中的每一个像素进行分类,给它分配一个类别 不区分同一类里面的不同个体。

只关心像素属于哪个类别,而不是属于哪一个对象

早期思路

首先介绍一下目标分割的早期思路

将输入图像分成很多很多的小块,然后每个小块单独过神经网络,判断中线的像素属于哪类。这个方法计算复杂度会十分高,因为我们要标记图中的每个像素点。

这种方法的问题是:效率极低,没有复用图像块之间的共享特征

全连接卷积网络

下一个表现更好的方法是全列检卷积网络。不同于每一个小块单独进行判断和计算,这个方法相当于很多卷积堆叠在一起。图像通过这个多层的卷积网络以后会变成一个张量,尺寸是C*H*W。其中,C是类的数量。

这个张量会为图像的每个像素进行分类和评分。训练这个模型,为每一个像素进行损失的训练。

问题是,当神经网络的层数过多的时候,这样的计算量依然很大。因此这个思想其实没有那么常用。

在实际上,更常见的方法如图所示。

我们对图像进行下采样和上次采样。比起对整个图进行卷积,我们仅仅对一些特征图进行卷积。这很像用卷积网络分类的方法,但是不同的是,最后输出的时候并不经过全连接层,而是我们希望在后半部分的上次采样之中增加图片的清晰度。所以我们的输出可以和输入保持同样的尺寸。用这种方法,就可以很好的计算。 在之前学习CNN的过程中,我们已经讲过了基本的下采样方式和基本的池化方式。但是我们很少讨论上采样的方法。如何进行上采样呢?

反池化(Unpooling)

反池化是池化(Pooling,如最大池化、平均池化)的逆操作,池化的作用是下采样(降维、保留关键特征、减少计算量),而反池化则是通过特定规则,从池化后的低维特征图中恢复出高维特征图的空间结构。

反池化本身不是池化的严格逆运算(池化过程会丢失部分信息,比如最大池化只保留窗口内的最大值,丢弃其他像素值;平均池化会融合窗口内像素信息,无法完全还原原始数据),它的核心目的是尽可能恢复池化前的特征空间尺寸和关键细节,为后续像素级任务提供支撑。

  1. 最近邻插值(Nearest Neighbor): 直接把每个像素复制到更大区域
  1. Bed of Nails 在原位置放数值,其他位置填 0(像钉子床一样稀疏)

转置卷积(Transpose Convolution)

输入移动 1 个像素,滤波器(卷积核)在输出对应移动 2 个像素

步幅(stride)决定输出与输入移动量的比例

转置卷积也是一种上采样的方法。它既可以上采样特征图,也可以进行权重学习。

①这里举的例子是用3*3的卷积核做内积。我们把小方块的中心和图像最开始的元素重叠做内积,结果就是卷积的结果作为左上角的个的输出

②然后为每个像素重复这个过程直到得到最后的结果。

最大反池化(Max Unpooling)

最大反池化的核心依赖 "记录位置 + 精准回填",分两步完成:

池化阶段(记录索引)

  • 执行最大池化时,除输出窗口内最大值组成的低分辨率特征图外,额外记录每个最大值在池化窗口中的坐标索引(Switch Variables)。
  • 例如:2×2 池化窗口中最大值在 (0,1) 位置,该索引会被同步保存。

反池化阶段(还原尺寸)

  • 创建与目标高分辨率匹配的全 0 特征图。
  • 将池化后的每个最大值,按记录的索引回填到对应位置,其余位置保持为 0,完成上采样。

语义分割模型

FCN(全卷积神经网络)

全卷积网络是是深度学习用于语义分割领域的开山之作。

FCN将传统CNN后面的全连接层换成了卷积层,这样网络的输出将是热力图而非类别;同时,为解决卷积和池化导致图像尺寸的变小,使用上采样方式对图像尺寸进行恢复

核心思想 不含全连接层的全卷积网络,可适应任意尺寸输入; 反卷积层增大图像尺寸,输出精细结果; 结合不同深度层结果的跳级结构,确保鲁棒性和精确性。

Unet

Unet是另一种十分常用的模型。它的本质也是:网络对每个像素点,给出"它属于哪一类"的概率。该网络结构具有编码器(Encoder)和解码器(Decoder)两个部分。UNet算法的关键创新是在解码器中引入了跳跃连接(Skip Connections),即将编码器中的特征图与解码器中对应的特征图进行连接。这种跳跃连接可以帮助解码器更好地利用不同层次的特征信息,从而提高图像分割的准确性和细节保留能力。 其优点在于:强大的分割能力、少样本学习、可扩展性。缺点是:计算资源需求较高:数据不平衡问题:对于大尺寸图像的处理存在内存不足

UNet算法的特点是采用了U型的网络结构,因此得名UNet。 该网络结构具有编码器(Encoder)和解码器(Decoder)两个部分。

  • 编码器负责逐步提取输入图像的特征并降低空间分辨率。
  • 解码器则通过上采样操作将特征图恢复到原始输入图像的尺寸,并逐步生成分割结果。

创新点:在解码器中引入了跳跃连接,帮助解码器更好地利用不同层次的特征信息,从而提高图像分割的准确性和细节保留能力。

DeepLab 系列

Deeplab 是谷歌在FCN的基础上搞出来的。FCN有个问题是结果就是:score map 太稀疏,上采样后分割边界模糊。Deeplab这里使用了一个非常优雅的做法:将VGG网络的pool4和pool5层的stride由原来的2改为了1,再加上 1 padding。这样的话尺寸就缩小为原本的8倍,特征图分辨率更高,预测更 dense。但是这样的话之后节点的感受野就会发生变化。

在 FCN 基础上优化 分辨率 & 感受野 的矛盾。使用空洞卷积(Atrous Convolution) 扩大感受野,同时保留分辨率

SegFormer

SegFormer则是一个基于Transformer的模型。它包含一个新颖的层次结构的Transformer编码器,它输出多尺度特征。它不需要位置编码,从而避免了位置编码的插值问题,当测试分辨率与训练不同时,导致性能下降。SegFormer避免了复杂的解码器。提出的MLP解码器从不同层级聚合信息,从而结合了局部注意力和全局注意力,以生成强大的表示。

舍弃繁琐的解码器,靠强大的 Transformer 编码器直接得到多尺度特征。

  • 高效,推理速度快,特别适合实时分割。
  • 核心思想:重编码、轻解码。靠 Transformer 的全局建模能力保证效果。

实例分割

实例分割不仅需要识别出图像中的对象,还要区分对象的不同实例。实例分割师语义分割和目标检测的结合,可以看右边这个图。目标检测是左上,需要检测出不同的个体。语义分割是左下,只要区分出像素所属就行,不需要区分个体。而将他们结合就是右下,在区别类别的同时区分个体。

实例分割不仅需要识别出图像中的对象,还要区分对象的不同实例。是目标检测和语义分割的结合,它要求模型同时输出对象的类别和位置,以及对象的像素级掩码。 实例分割在应用上更注重个体的区分,如在拥挤场景下区分不同的人或物体。

Mask R-CNN

Mask R-CNN在已有的Faster R-CNN目标检测框架上增加一个并行的分支来预测对象的掩码,从而实现像素级别的对象分割。 这个掩码分支是一个小型的全卷积网络(FCN),它应用于每个感兴趣区域(Region of Interest, RoI),以逐像素的方式预测对象的掩码。

Mask R-CNN 是在 Faster R-CNN 基础上发展而来的一种实例分割方法。它首先将整张输入图像送入卷积神经网络提取特征,然后利用区域候选网络(RPN)生成一系列候选框。与 Faster R-CNN 相似,这些候选框会被映射到特征图上,并通过 RoIAlign 操作进行尺寸对齐。不同之处在于,Mask R-CNN 在此基础上并不止进行分类和边界框回归,还增加了一个并行的分割分支。具体来说,上层分支与 Faster R-CNN 类似,负责预测候选框的类别以及精确的边界框位置;而新增的下层分支则通过一个轻量级的全卷积网络,对每个候选区域内的像素逐一分类,从而生成该目标的二值掩码,实现了检测与实例级分割的统一。

单阶段实例分割方法:YOLACT

YOLACT(You Only Look At Coefficients) 是一款极具影响力的实时实例分割模型,核心优势是在保证高精度的同时实现极快的推理速度,打破了此前实例分割模型速度偏慢的瓶颈,广泛应用于对实时性要求较高的场景。

  1. 核心定位
  • 特点:实时性优先,兼顾精度,是实时实例分割领域的标杆模型之一

  • 对比:相较于 Mask R-CNN(准实时,约 5 FPS),YOLACT 推理速度提升 6 倍以上;相较于后续的 YOLACT++(YOLACT 改进版),YOLACT 更轻量、部署更便捷

  1. 核心创新

YOLACT 的核心突破是将实例分割任务拆解为两个并行的子任务,避免了 Mask R-CNN 那种 "先检测后分割" 的串行流程带来的延迟,实现高效推理:

  1. 生成通用原型掩码(Prototype Masks):一次性生成一批与类别无关的通用掩码,作为所有实例掩码的 "基础模板"。

  2. 预测实例系数(Instance Coefficients):为每个检测到的实例,预测一组对应的系数,通过系数与原型掩码的线性组合,快速生成该实例的专属掩码。

这种 "原型掩码 + 系数组合" 的思路,是 YOLACT 实现实时性的关键。

Mask - RCNN 是两阶段实例分割代表,图中它精度更高(Mask mAP 接近 36 - 38 ) ,但速度慢(FPS 约 5 - 10 ) ,适合静态图像、对精度要求极高(如医学影像分析)的场景。而 YOLACT 作为一阶段模型,通过 "原型掩码 + 系数组合" 的创新思路(简化传统分割的复杂后处理),大幅提升速度,填补了实时实例分割的需求空白。

更多模型和应用

Segment Anything(SAM)

Segment Anything是 Meta AI 在 2023 年 4 月发布的一个划时代的计算机视觉模型。其出现革新数据标注,并强大的"零样本"泛化能力,推动新一代视觉应用落地

Segment Anything in 3D with NeRFs

一项三维分割任务

Segment Anything in 3D with NeRFs(SA3D)是一个基于神经辐射场(NeRF)的项目,由上海交通大学、华为和华中科技大学的研究团队开发,相关成果在 NeurIPS 2023 上发表。结合了 2D 分割基础模型 SAM 与辐射场模型(如 NeRF 和 3D Gaussian Splatting),无需重新设计或重新训练即可执行 3D 分割任务。通过 2D 分割模型的扩展,将 2D 图像信息提升到 3D 场景中,实现准确的 3D 分割。实现对场景中任意物体在 3D 空间中进行精确分割的技术

OVSeg

OVSeg由 Meta、UTAustin 的研究人员在 2023 年的计算机视觉与模式识别会议(CVPR)上提出。它旨在实现开放词汇的语义分割,即根据文本描述将图像分割成语义区域,这些区域在训练期间可能并未被看到。

OVSeg 的核心技术是基于 CLIP模型,并引入了 Mask-adapted 机制。具体来说,首先利用大规模的图像 - 文本对数据集对 CLIP 进行预训练,使其能够理解图像与文本之间的语义关系;然后通过对图像进行 Mask 处理,使得模型能够更好地聚焦于图像中的关键区域,从而提高语义分割的准确性;最后通过引入开放词汇机制,使得模型能够处理任意词汇的语义分割任务,而不仅仅局限于预定义的类别。

相关推荐
watersink2 分钟前
LocateAnything解读
人工智能
小陈phd6 分钟前
Text2SQL智能体学习笔记(一)——NL2SQL及执行流程介绍
笔记·学习
风栖柳白杨6 分钟前
【大模型学习】主流大模型统计
学习
FrameNotWork8 分钟前
HarmonyOS6.1 从图像分类到目标检测的扩展实现
人工智能·harmonyos
lengxuemo9 分钟前
ICC2学习之PG
学习
问心无愧05139 分钟前
ctf sow web入门112
android·前端·笔记
稷下元歌10 分钟前
系统学习plc 基础指令上篇,官方资料课程笔记整 理
笔记·学习
我的xiaodoujiao11 分钟前
API 接口自动化测试详细图文教程学习系列25--继续处理testCase中的数据
python·学习·测试工具·pytest
Tian_Hang14 分钟前
Linux基础知识(四)
linux·ide·驱动开发·计算机视觉·硬件工程·动画
你的保护色16 分钟前
数据库第一章-基础知识学习
数据库·学习