主页 topics 图像分割 什么是图像分割?
了解 IBM Maximo Visual Inspection
3D 盒子的设计图形

图像分割是一种计算机视觉技术,可将数字图像分成离散的像素组(图像分段),为对象检测和相关任务提供信息。通过将图像的复杂视觉数据解析为特定形状的片段,图像分割可以实现更快、更先进的图像处理

图像分割技术的范围很广,从简单直观的启发式分析到最前沿的深度学习实施。传统的图像分割算法处理每个像素的高级视觉特征,如颜色或亮度,以识别对象边界和背景区域。机器学习利用标注数据集来训练模型,以准确地对图像中包含的特定类型的对象和区域进行分类。

图像分割是一种用途广泛的实用计算机视觉方法,在人工智能领域有着广泛的应用,从医学影像的辅助诊断,到机器人和自动驾驶汽车的自动运动,再到卫星图像中感兴趣对象的识别,无所不包。

相关内容

订阅 IBM 时事通讯

图像分割、对象检测与图像分类

图像分割是图像分类和对象检测的高级演进,也是一套独特的计算机视觉功能。

图像分类将类标签应用于整个图像。例如,可以训练一个简单的图像分类模型,将车辆图像分为“汽车”或“卡车”。传统的图像分类系统并不单独处理单个图像特征,因此复杂程度有限。

对象检测将图像分类与对象定位相结合,生成对象所在的矩形区域(称为“边界框”):对象检测模型可以指出图像中可以找到汽车或卡车的位置,而不是仅仅将车辆图像标记为“汽车”或“卡车”。虽然对象检测可以对图像中的多个元素进行分类,并估算出每个元素的宽度和高度,但它无法识别精确的边界或形状。这就限制了传统对象检测模型对边界框重叠的紧密对象进行划分的能力。

图像分割在像素级别处理视觉数据,使用各种技术将单个像素标注为属于特定类别或实例。“经典”图像分割技术通过分析每个像素的固有特性(称为“启发式”)(如颜色和强度)来确定标注内容,而深度学习模型则采用复杂的神经网络来进行复杂的模式识别。这种标注的输出是分割掩码,代表图像中每个类别(通常对应于不同对象、特征或区域)的具体像素边界和形状。

从广义上讲,图像分割用于三种类型的任务:语义分割、实例分割和全景分割

语义类:“things”和“stuff”

每种类型的图像分割任务之间的区别在于它们如何处理语义类别:指定像素可能被确定属于的具体类别。

用计算机视觉的术语来说,有两种类型的语义类别。每种方法都适合使用不同的技术进行准确、有效的分割。

Things 是具有特征形状的对象类别,如“汽车”、“树”"或“人”。一般来说,things 都有定义明确的实例,可以计数。它们在大小上的差异相对较小,并且有不同于 thing 本身的构成部分:例如,所有汽车都有轮子,但轮子不是汽车。

Stuff 是指形状无定形且大小变化很大的语义类别,例如“天空”、“水”或“草”。通常,Stuff 是没有明确定义的、可计数的单个实例。与 Things 不同,Stuff 没有不同的部分:一片草叶和一片草地都是“草”。

在某些图像条件下,某些类别既可以是 things,也可以是 stuff。例如,一大群人可以被解释为多个“人”,每个人都是形状独特、可数的 things,或者是单个、形状不定的“人群”。

虽然大多数对象检测工作主要集中在 thing 类上,但重要的是要考虑到 stuff(天空、墙壁、地板、地面)构成了我们大部分的视觉环境。Stuff 是识别 things 的基本数据点,反之亦然:道路上的金属物通常是汽车;船后面的蓝色背景可能是水,而飞机后面的蓝色背景可能是天空。这对于深度学习模型尤其重要。

语义分割

语义分割是最简单的图像分割类型。语义分割模型为每个像素分配一个语义类别,但不输出任何其他上下文或信息(如对象)。

语义分割将所有像素视为 stuff;它不区分stuffthings

例如,为识别城市街道上的某些类别而训练的语义分割模型会生成分割掩码,显示每个相关类的 thing(如车辆或灯杆)和 stuff(如道路和人行道)的边界和轮廓,但不会区分(或计算)同一类的多个实例。例如,一辆停在另一辆前面的汽车可能会被简单地视为一个长“汽车”段。

实例分割

实例分割颠倒了语义分割的优先顺序:语义分割算法只预测每个像素的语义分类(不考虑单个实例),而实例分割则精确划分每个独立对象实例的形状。

实例分割将 things 与它忽略的 stuff 隔离开来,因此可以理解为对象检测的一种进化形式,它输出精确的分割掩码而不是近似的边界框。

这是一项比语义分割更困难的任务:即使同一类 things 相互接触甚至重叠,实例分割模型也必须能够分离并确定每个 things 的形状,而语义分割模型则可以简单地将它们混在一起处理。例如,考虑一下这两种不同的模型如何处理这张城市街道图像中停放的汽车。

实例分割算法通常采用两阶段单次方法来解决问题。两阶段模型,例如基于区域的卷积神经网络 (R-CNN),会执行传统的对象检测,为每个提议的实例生成边界框,然后在每个边界框内执行更精细的分割和分类。单次模型,如 YOLO(You Only Look Once),通过同时执行对象检测、分类和分割来实现实时实例分割。

单次法速度更快(在精度上有所牺牲),而两阶段成像法精确度更高(在速度上有所牺牲)。

全景分割

全景分割模型既能确定所有像素的语义分类,能区分图像中的每个对象实例,将语义分割和实例分割的优势结合在一起。

在全景分割任务中,每个像素都必须使用语义标签和“实例 ID”进行标注。共享相同标签和 ID 的像素属于同一个对象;对于确定为 stuff 的像素,实例 ID 将被忽略。

因此,全景分割能让计算机视觉系统全面、整体地了解给定图像。虽然全景分割的优势显而易见,但如何以一致且计算效率高的方式实现全景分割却是一项艰巨的挑战。

难点在于将两种相互矛盾的方法统一起来:语义分割模型将所有像素都视为 stuff,而忽略了 things 的单个实例;实例分割模型将单个 things 隔离开来,而忽略了 stuff。这两种模型都无法充分承担对方的责任。

最初尝试的全景分割模型只是将两种模型结合起来,分别执行每项任务,然后在后处理阶段将其输出结果合并。这种方法有两个主要缺点:需要大量的计算开销,并且难以处理语义分割网络输出的数据点与实例分割网络输出的数据点之间的差异。

较新的全景分割架构旨在通过更统一的深度学习方法来避免这些缺点。大多数网络都建立在“骨干”网络的基础上,如特征金字塔网络 (FPN),该网络从输入图像中提取特征,将提取的数据输入并行分支,如“前景分支”和“背景分支”,或“语义头”和“实例头”,然后使用加权系统合并每个分支的输出。提出的全景架构包括 EfficientPS、OANet、PanopticFPN、UPSNet、SOGNet、BGRNet、AUNet、FPSNet 和 SpatialFlow。

传统图像分割技术

传统的图像分割技术使用像素颜色值(以及亮度、对比度或强度等相关特征)信息进行特征提取,并可通过简单的机器学习算法进行快速训练,以完成语义分类等任务。

虽然基于深度学习的分割方法能够实现更高的精度和更复杂的图像分析,特别是像全景分割这样需要大量上下文信息的任务,但传统方法的成本和计算要求要低得多,而且能更高效地解决某些问题。

常见的传统(或“经典”)图像分割技术包括:

  • 阈值处理:阈值处理方法创建二进制图像,根据像素强度是否高于或低于给定的“阈值”对像素进行分类。Otsu 的方法通常用于确定最小化类内差异的阈值。
  • 直方图:直方图绘制图像中某些像素值的频率,通常用于定义阈值。例如,直方图可以推断背景像素的值,从而帮助隔离对象像素。
  • 边缘检测:边缘检测方法通过检测亮度或对比度的不连续性来识别对象或类别的边界。
  • 分水岭:分水岭算法将图像转换成灰度,然后生成地形图,其中每个像素的“海拔”由其亮度决定。根据“山谷”、“山脊”和“集水盆地”的形成位置,可以推断出区域、边界和对象。
  • 基于区域的分割:从一个或多个“种子像素”开始,区域增长算法将具有相似特征的相邻像素组合在一起。算法可以是聚合式的,也可以是分割式的。
  • 基于聚类的分割:聚类算法是一种无监督学习方法,它将视觉数据划分为具有相似值的像素群。一个常见的变体是 K 均值聚类,其中 k 是聚类的数量:像素值被绘制为数据点,并且选择 k 个随机点作为聚类的中心(“中心点”)。每个像素根据最近的中心点(即最相似的中心点)被分配到一个聚类中。然后将中心点重新定位到每个聚类的平均值,并重复这一过程,每次迭代都重新定位中心点,直到聚类趋于稳定。可查看此过程的图示化表示(ibm.com 外部链接)。
深度学习图像分割模型

深度学习图像分割模型的神经网络在有标注的图像数据集上进行训练,发现视觉数据中的潜在模式,并找出与分类、检测和分割最相关的突出特征。

尽管在计算要求和训练时间方面存在一定的牺牲,但深度学习模型的性能始终优于传统模型,并成为计算机视觉领域大多数持续进步的基础。

用于图像分割的主要深度学习模型包括:

  • 全卷积网络 (FCN):FCN 通常用于语义分割,是一种没有固定层的卷积神经网络 (CNN)。编码器网络通过卷积层传递视觉输入数据,以提取与分割或分类相关的特征,并对这些特征数据进行压缩(或下采样),以去除非必要信息。然后,这些压缩数据被输入解码器对提取的特征数据进行上采样,用分割掩码重建输入图像。
  • U-Nets:U-Nets 通过跳转连接 修改 FCN 架构以减少下采样过程中的数据丢失,当信息和梯度在神经网络中移动时,有选择性地绕过一些卷积层,从而保留更多细节。其名称源于展示层排列的图表形状。
  • Deeplab:与 U-Nets 一样,Deeplab 是改进的 FCN 架构。除了跳转连接外,它还使用稀释(或“空洞”)卷积来生成更大的输出映射,而无需额外的计算能力。
  • Mask R-CNN:Mask R-CNN 是实例分割的领先模型。Mask R-CNN 结合了区域提议网络 (RPN) 和基于 FCN 的“掩码头”,前者可为每个潜在实例生成边界框,后者可在每个确认的边界框内生成分割掩码。
深度学习模型的训练数据集

为了不仅能映射图像片段的边界,还能预测每个片段所代表的 stuffthing,深度学习模型需要在有标注的大型数据集上进行训练,以识别特定的语义类别。根据这些预先标记的图像,深度学习模型推断出每个标签的典型模式和像素值。

不同的任务需要不同的训练数据:自动驾驶汽车的计算机视觉系统根据标记有“人”、“汽车”、“车道”和“停车标志”等语义类别的图像进行训练,而医学成像模型则需要进行优化,以识别特定类别的物理组织或肿瘤和其他病变。

训练数据集必须由人类专家精心预标注,这可能非常费力。大多数图像分割模型都使用大型开源数据集。在评估训练过的模型是否成功时,这些公共数据集也用作“基本事实”:性能指标通常用与训练数据集中的标注准确匹配的结果百分比来表示。

深度学习图像分割模型的常用训练数据集包括:

  • COCO(上下文中的常见对象):一个大型数据集,包含超过 330,000 张图像,以及跨 80 个 thing 类别和 91 个 stuff 类别的带标注片段。
  • ADE20K:由 MIT 创建的场景分割数据集,包含 20,000 多张图像和 150 多个语义类。
  • Cityscapes:专注于城市街道的大型数据集。其数据是在 50 个城市的不同白天、一年中不同时间和天气条件下采集的。
图像分割用例

图像分割已成为各个领域的重要工具。

  • 医学成像:图像分割技术在射线照相术、磁共振成像 (MRI)、超声波和计算机断层扫描 (CT) 等领域有着广泛的应用,可帮助完成肿瘤检测、脑部分割、疾病诊断和手术规划等任务。
  • 自动驾驶汽车:通过图像分割,自动驾驶汽车可以避开行人和其他车辆等障碍物,并识别车道和交通标志。它同样用于为机器人技术中的导航提供信息。
  • 卫星成像:语义和实例分割可自动识别不同的地形和地貌特征。
  • 智慧城市:图像分割为实时交通监控和监视等任务提供支持。
  • 制造:除了为机器人任务提供动力外,图像分割还可以为产品分类和缺陷检测提供支持。
  • 农业:图像分割可帮助农民估算作物产量,并检测杂草以便清除。
相关解决方案
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 演示