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

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

(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 处理,使得模型能够更好地聚焦于图像中的关键区域,从而提高语义分割的准确性;最后通过引入开放词汇机制,使得模型能够处理任意词汇的语义分割任务,而不仅仅局限于预定义的类别。

相关推荐
carver w2 小时前
one-hot编码
人工智能
月光在发光2 小时前
多态(虚函数核心作用原理)--C++学习(0)
c++·学习
邮一朵向日葵3 小时前
企查查开放平台MCP:为AI智能体注入精准商业数据,驱动智能决策新时代
大数据·人工智能
沃达德软件3 小时前
智能警务视频侦查系统
大数据·人工智能·数据挖掘·数据分析·实时音视频·视频编解码
说私域3 小时前
链动2+1模式AI智能名片S2B2C商城小程序中电商直播的应用机制与价值创新研究
人工智能·小程序
北邮刘老师3 小时前
【智能体互联协议解析】身份码-智能体的身份证号
网络·人工智能·大模型·智能体·智能体互联网
车载测试工程师3 小时前
CAPL学习-AVB交互层-媒体函数2-其他类函数待分类
学习·tcp/ip·媒体·capl·canoe
深蓝海拓3 小时前
PySide6从0开始学习的笔记(十) 样式表(QSS)
笔记·python·qt·学习·pyqt
Wulida0099913 小时前
【目标检测】基于改进YOLOv13-C3k2-DWR的铲斗定位系统研究
人工智能·yolo·目标检测