如本章引言所述,图像分割使计算机视觉对图像的理解,比分类或目标检测更为精细。图像分割不同于为图像分配单一标签或在物体周围绘制边界框,它为每个像素分配一个类别。这种密集预测可提供场景中物体和区域的精确轮廓。然而,在这个目标之下,物体处理方式存在重要区别,这引出了两种主要的分割任务。语义分割语义分割是将图像中每个像素分类到预定义类别集合中的任务。可以将其视为为每个像素分配一个语义标签(例如“道路”、“天空”、“人物”、“汽车”、“建筑”)。输出通常是与输入图像大小相同的图,其中每个像素的值对应其预测类别。想象一幅图像,其中包含多辆汽车在路上。语义分割模型的目标是,将属于任何汽车的所有像素标记为“汽车”,所有道路像素标记为“道路”,等等。它知道每个像素位置存在什么,但不区分同一物体类别的不同实例。所有汽车都属于单一语义类别“汽车”。特点:为每个像素分配一个类别标签。不区分同一类别的不同物体。输出是类别标签的密集图。应用: 语义分割对于场景理解很有价值,尤其是在整体环境和区域类型很重要的情况下。例子包括:自动驾驶:识别可驾驶区域(道路)、人行道、车道标记和静态障碍物。医学图像分析:在MRI或CT等扫描中描绘不同类型的组织、器官或异常。地理空间分析:从卫星图像中分类土地覆盖类型(水体、森林、城市区域)。实例分割实例分割将此任务向前推进了一步。它不仅对每个像素进行分类,还能识别每个像素属于哪个物体实例。回到多辆汽车在路上的例子,实例分割模型会将属于第一辆汽车的所有像素识别为“car_instance_1”,将第二辆汽车的所有像素识别为“car_instance_2”,并适当地将道路像素标记为“road”。本质上,实例分割同时进行物体检测和语义分割。它找到单个物体,并为每个检测到的实例提供精确的像素级遮罩。特点:为属于可数物体(“事物”)的像素分配类别标签和唯一实例ID。区分同一类别的不同物体。对于背景类别(例如天空、道路、草地等“背景”),其行为类似于语义分割。输出通常包括边界框(类似于物体检测)以及每个检测到的物体实例的像素遮罩。应用: 实例分割在需要与场景中的单个物体进行交互或分析时非常有用。例子包括:机器人:使机械臂能够从一组相似物体中识别并抓取特定物体。自动驾驶:跟踪单个车辆或行人以进行运动预测。照片/视频编辑:允许用户精确选择和操作特定物体。生物成像:计数和测量单个细胞或生物体。可视化差异核心差异在于同一类别的单个物体是否被视为不同的实体。语义分割将它们归为同一类别标签下,而实例分割则将它们分离。digraph G { rankdir=TB; node [shape=plaintext, fontname="Helvetica", fontsize=10]; edge [fontname="Helvetica", fontsize=9]; subgraph cluster_input { label = "输入"; bgcolor="#e9ecef"; input [label="图像:\n路上有两辆汽车"]; } subgraph cluster_process { label="分割任务"; bgcolor="#dee2e6"; node [shape=box, style=rounded]; semantic [label="语义分割"]; instance [label="实例分割"]; } subgraph cluster_output { label="输出解释"; bgcolor="#ced4da"; node [shape=note, style=filled]; sem_out [label="识别所有属于\n‘汽车’类别的像素。\n不区分不同汽车。", fillcolor="#a5d8ff"]; inst_out [label="识别‘汽车1’的像素\n和‘汽车2’的像素。\n分离单个汽车。", fillcolor="#bac8ff"]; } input -> semantic [label="目标:像素分类"]; input -> instance [label="目标:分类与分离\n物体实例"]; semantic -> sem_out; instance -> inst_out; }对比展示了语义分割和实例分割对于包含多个同类别物体的图像的不同目标和输出。理解这种区别非常重要,因为网络架构、损失函数和评估指标在语义分割和实例分割任务之间通常不同。实例分割通常被认为是一个更复杂的问题,因为它既需要正确的分类,也需要精确描绘潜在重叠的物体实例。在本章后续内容中,我们将考察适用于这两种任务的架构,从常用于语义分割的初始方法开始,然后转向能够进行实例级预测的方法。