主页 topics 实例分割 什么是实例分割?
了解 IBM Maximo Visual Inspection
集装箱网格

实例分割是一项由深度学习驱动的计算机视觉任务,可预测图像中每个单个对象实例的确切像素边界。

实例分割是图像分割这一更大领域的一个子集,与传统的对象检测算法相比,它能提供更详细、更复杂的输出结果。其他图像分割任务还包括语义分割,即按照语义类别对图像中的每个像素进行分类,语义类别是指像素所代表的 “thing” 或 “stuff” 的类别;以及全景分割,即结合实例分割和语义分割的目标。

实例分割在许多行业都有各种各样的图像处理用例,从分析医学图像到检测卫星图像中感兴趣的对象,再到实现自动驾驶汽车的导航。

实例分割与对象检测

实例分割任务与传统对象检测的主要区别在于,实例分割预测每个对象的像素级边界,而对象检测只预测对象的大致位置。

传统的对象检测方法是图像分类和对象定位的演进性组合。使用各种机器学习算法进行训练,以识别相关类别对象的视觉模式,例如,自动驾驶模型可能会被训练成能够识别“汽车”或“行人”,对象检测模型会分析输入图像的视觉数据,以标注任何相关的对象实例,并生成矩形区域(称为“边界框”),每个实例都位于其中。

实例分割系统同样也能检测图像中的对象,但要详细得多:实例分割算法生成的不是近似于对象实例位置的边界框,而是每个实例的精确形状和面积的逐像素“分割掩码”。

许多领先的实例分割模型架构(如 Mask R-CNN)在生成分割掩码的过程中都会先进行传统的对象检测。这种“两阶段”模型通常提供最先进的精度,尽管需要牺牲一定的速度。

相关内容

订阅 IBM 时事通讯

实例分割与语义分割

语义分割是一项比实例分割更简单的任务。与实例分割不同,语义分割不涉及不同实例的计数或区分:语义分割的唯一目的是为图像中的每个像素标注语义类别标签。

语义分割模型不区分 things(具有不同形状的可数实体类,如“汽车”或“人”)和 stuff(即具有可变形状的不可数实体类,如“天空”或“道路”)。

如果同一类 thing 的多个对象实例紧密相邻或相互重叠,语义分割模型就会简单地将它们归并到一个图像片段中。例如,考虑一下语义分割模型是如何处理这张图片中街道两侧紧密停靠在一起的汽车的。

相反,实例分割模型只专注于检测和生成各个 things 的分割掩码。实例分割模型必须能够描绘每个不同的对象实例,即使是同一类对象的被遮挡实例。

实例分割与全景分割

全景分割既需要对图像中的每个像素进行语义分类,也需要对每个不同的对象实例进行划分。

理论上,全景分割模型可以进行实例分割,但计算成本要高得多(因为其输出包括与实例分割任务不一定相关的额外信息)。

最初的全景分割尝试只是分别执行实例分割和语义分割,然后在后处理步骤中合并它们的输出。这种方法计算效率低,难以解决语义模型的数据输出与实例模型的数据输出之间的差异。

最近的方法将语义分割“头”和实例分割“头”连接到一个共享的“骨干”,通常是一个特征金字塔网络 (FPN),以进行特征提取:分离出相关的视觉数据。这提高了效率并消除了差异。

实例分割用例

实例分割对于各种计算机视觉任务至关重要。

  • 医学成像:实例分割用于检测组织和病理(如肿瘤)的特定边界
  • 自动驾驶:通过实例分割,自动驾驶汽车可以准确检测汽车、物体、人和道路特征(如交通信号灯),并对其进行分类。
  • 卫星图像:实例分割可以帮助识别和隔离感兴趣的对象,例如为 GPS 目的区分道路两旁的多栋建筑物。
  • 机器人:实例分割可以帮助识别和隔离感兴趣的对象,例如为 GPS 目的区分道路两旁的多栋建筑物。

 

 

实例分割如何工作?

深度学习已成为实例分割的关键:几乎所有现代图像分割方法都利用了神经网络。尽管近年来 Transformer 模型成为一种可行的替代方案,但大多数图像分割方法(包括用于实例分割的方法)都利用某种形式的卷积神经网络 (CNN)

基于 CNN 的实例分割模型分为两类:

  • 两阶段模型,如 Mask R-CNN,首先执行对象检测,然后生成对象分割掩模
  • 单次(或单阶段)模型,如 YOLACT,并行执行这两项任务。

基于 CNN 的实例分割模型和基于变换器的实例分割模型都使用编码器-解码器结构,其中编码器网络用于从输入图像中提取相关数据,而解码器网络则使用提取的特征数据通过分割图重建图像。

要理解实例分割模型,这有助于理解其组成部分。

卷积神经网络 (CNN)

简单的 CNN 可以执行图像分类和(对于包含单个对象的图像)对象分类。

为了使数学算法与图像兼容,它们必须以数字格式表示图像。CNN 将 RGB 输入图像处理为三维 (3D) 像素阵列,其中像素的三个维度分别表示其 R(ed)、G(reen) 和 (B)lue 值。

传统 CNN 中存在三种类型的层:

  • 卷积层使用称为内核的二维滤波器,通过执行卷积从图像中提取相关特征。每次卷积后,内核都会移动(跨步)到相邻区域,重复此过程,直到遍历整个图像。此特征提取的输出是一个特征图。

  • 池化层压缩特征图数据。这一过程也称为下采样或降维,可提高计算效率,降低模型训练中的过拟合风险。

  • 全连接层接收并整理来自神经网络中每个节点的视觉数据(因此被称为“全连接”),并预测图像是否与经过训练的识别类别相匹配。

虽然额外的卷积层可以提高精度,但添加太多层会导致梯度消失,从而阻碍模型优化。ResNet 架构解决了这个问题,为具有数百(甚至数千)层的 CNN 铺平了道路。

在 YouTube 上观看视频:“What are Convolutional Neural Networks (CNNs)?”
基于区域的 CNN (R-CNN)

开发 R-CNN 是为了解决标准 CNN 无法实现的复杂多对象检测任务。它后来的演变,Faster R-CNN,是许多实例分割模型不可或缺的组成部分。

为了在对象层面(而非图像层面)进行预测,R-CNN 引入了区域提议:R-CNN 使用选择性搜索(ibm.com 外部链接)提出约 2000 个可能包含对象的重叠框,然后将每个“对象提议”输入 CNN 进行特征提取。支持向量机 (SVM) 算法然后对对象进行分类并生成边界框。

Fast R-CNN 首先将整个图像输入 CNN 进行特征提取,然后使用生成的特征图来识别感兴趣区域 RoI),从而显著提高了 R-CNN 的速度。此后不久,Faster R-CNN 通过引入可训练区域提议网络 (RPN) 来取代速度较慢、不可训练的选择性搜索算法,进一步提高了速度和准确性。

阅读论文:“Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks”
全卷积网络

FCN 用额外的卷积层和池化层取代了简单 CNN 的固定全连接层,因此被称为“全卷积”。FCN 的出现开创了现代图像分割技术。

与传统 CNN 一样,FCN 使用编码器网络(如 ResNet 或 VGG)进行特征提取和下采样。但是,FCN 并不是将编码数据传递到全连接层对整个图像进行分类,而是将编码数据传递到“解码器”网络的各层,由“解码器”网络对压缩后的特征数据进行分类和上采样,从而用逐个像素的分割掩码重建原始图像。

当然,在下采样过程中会丢失一些数据。后来的 FCN 变体,如 U-Net,引入了跳转连接,有选择地绕过一些卷积层以保留更多细节。

阅读论文:“Fully Convolutional Networks for Semantic Segmentation”
Mask R-CNN

Mask R-CNN 架构将 Faster R-CNN 的对象检测与 FCN 的分割功能相结合,实现了实例分割的突破。

在 RPN 为提议的对象生成边界框,以及 Faster R-CNN 网络的其他部分确认哪些区域提议包含对象(并执行回归以提高对象边界框的准确性)之后,FCN 会为每个边界框内包含的对象创建一个分割掩码。

即使在对象被遮挡的情况下,这一过程也很有效,因为 Faster R-CNN 网络可以区分每个对象实例。

阅读论文:“Mask R-CNN”
单次(单阶段)模型

实例分割的某些应用(例如检测制造装配线中的有缺陷物品)需要实时结果。单阶段模型是针对速度极为重要的用例而开发的。

像 Mask R-CNN 这样的两阶段模型非常准确,但其固有的顺序方法很难加速。像 YOLACT(You Only Look At CoefficienTs)这样的单次实例分割模型是建立在单阶段对象检测模型(例如 YOLO(You Only Look Once))的基础上的。

在 YOLACT 中,一个 FPN 创建高分辨率特征图,并将其输入两个并行分支:一个 FCN 分支提出 k 个潜在对象实例的“原型掩码”;与此同时,一个全连接层分支产生许多“锚框”,类似于区域建议,并预测 k“掩码系数”,每个原型掩码一个,代表提议对象与建议分割掩码一致的可能性。非最大抑制 (NMS) 用于过滤具有最高掩码系数的提议实例。

阅读白皮书:“YOLACT++: Better Real Time Instance Segmentation”
变压器模型

最近在实例分割和全景分割方面的创新探索了变换器模型,其灵感来自于变换器模型在自然语言处理等领域的成功应用。像 Vision Transformers (ViT) 等模型使用自注意力来代替卷积,从而可以对图像的视觉背景进行整体分析。

要克服的主要挑战是计算需求:自注意力的计算复杂度随图像大小呈二次方增加。Swin 变换器使用移位窗口(而不是传统的滑动步长)来创建非重叠的自注意力层,从而使计算复杂度随图像大小呈线性增长,而不是二次方增加。基于 Swin 的模型现在可以与基于 CNN 的领先框架的准确性相媲美。

阅读论文:“Swin Transformer: Hierarchical Vision Transformer using Shifted Windows”
训练实例分割模型

机器学习算法,包括用于实例分割的深度学习算法,必须经过训练。基于 CNN 的模型和基于变换器的模型都是通过反向传播进行训练的:模型通过反向工程设计标注的训练图像来学习适合当前任务的权重和偏差。

训练数据的标注必须非常准确,这样才能最大限度地实现正确的机器学习,并作为“地面实况”基准,据此对训练模型进行评估和优化。由于人类的能力甚至大大超过了最精确的计算机视觉模型,因此标注工作需要手动完成,这是一个昂贵、劳动密集型的过程。

为了避免定制数据集所耗费的时间和成本,大多数模型都使用大型开源训练数据集,或针对更具体的视觉任务对预训练编码器网络进行微调。常见的开源图像数据集包括:

  • COCO(上下文中的常见对象):一个包含超过 330,000 张图像的海量数据集,其中包含 80 个 thing 类别和 91 个stuff 类别的带标注片段

  • ADE20K:由麻省理工学院创建的场景分割数据集,包含超过 20,000 张图像和超过 150 个语义类别

  • Cityscapes:一个专注于城市街道的大型数据集,包含 50 个城市在不同白天、季节和天气条件下的图像。

评估实例分割模型

最常用的实例分割和对象检测性能测量方法是交并比(Intersection over Union,IoU)和平均精度(Average Precision,AP)。这些指标通常用基准数据集的性能来表示,如“COCO 数据集的 AP 为 54.4”。

交并比 (IoU)
IoU 衡量地面实况掩码与模型预测之间的像素重叠度,以百分比或 0 至 1 之间的整数表示。对于具有多个实例的图像,使用平均 IoU (mIoU)。

虽然 IoU 很直观,但也有很大的局限性:

  • 它奖励过于宽泛的预测。 即使分割掩码过大,但如果其中包含了地面实况掩码,它的 IoU 也会达到完美的 1 分。
  • 它不能用作损失函数。对于没有重叠的糟糕预测,无论是稍有偏差还是根本不接近,IoU=0。这意味着 IoU 不可微分,因此无法帮助算法优化模型。全局交并比(Generalized Intersection over Union,GIoU(ibm.com 外部链接)修改了 IoU 以使其可微分。

平均精度 (AP)
AP 的计算方法是精确度-召回率曲线下的面积。它平衡了精确度和召回率这两个指标之间的权衡,精确度和召回率使用离散结果值计算,如真阳性 (TP)、真阴性 (TN)、假阳性 (FP) 和假阴性 (FN)。

  • 精度衡量的是正面预测(此处指分割实例的像素)的正确率:TP/(TP+FP)。它的缺点是奖励假阴性。
  • 召回率衡量捕获正面预测的频率:TP/(TP+FN)。它的缺点是奖励假阳性。

为了最大限度地提高相关性,通常在特定的 IoU 临界值内计算 AP。例如,“AP50”只计算 IoU 大于 50%的预测的 AP。平均精度 (mAP) 是所有计算阈值的平均 AP 值。

 

 

相关解决方案
IBM Maximo Visual Inspection

利用用于标记、训练和部署人工智能视觉模型的直观工具集,发挥无代码计算机视觉的功能,实现自动化视觉检测。

了解 IBM Maximo Visual Inspection

实例分割资源 IBM Research:计算机视觉

现代计算机视觉系统在图像识别和分析方面拥有超人的准确性,但它们并不能真正理解所看到的东西。在 IBM Research,我们正在设计能够像我们一样看待世界的 AI 系统。

计算机视觉和图像处理入门

这门适合初学者的课程可帮助您了解计算机视觉及其在众多行业中的各种应用。作为课程的一部分,您将使用 Python、Pillow 和 OpenCV 进行基本图像处理并执行图像分类和对象检测。

开始使用 IBM® Maximo Visual Inspection

开始使用 IBM Maximo Visual Inspection 创建和训练基于 AI 的模型,以检查您的资产和产品,并识别可能导致生产和质量问题的缺陷。

采取后续步骤

利用 IBM Maximo Visual Inspection 发挥无代码计算机视觉的强大功能,实现自动视觉检查:用于标记、训练和部署人工智能视觉模型的直观工具集。

了解 IBM Maximo Visual Inspection 探索 MVI 演示