计算机视觉 图像分类 → 目标检测 → 实例分割
分类、分割和目标检测是计算机视觉(Computer Vision)领域中三个核心且密切相关的任务,它们都旨在让机器“理解”图像内容,但在任务目标和输出形式上有显著区别。
以下是这三个任务的详细对比和解释:
1. 图像分类(Image Classification)
任务目标:
判断整张图像属于哪个预定义的类别。
输出形式:
一个类别标签(或类别概率分布)。
示例:
输入:一张图片
输出:猫
、狗
、汽车
、飞机
等。
特点:
- 只关心“是什么”,不关心“在哪里”。
- 最基础的视觉任务,通常作为其他任务的前置步骤。
- 模型如:ResNet、VGG、EfficientNet、Vision Transformer(ViT)。
应用场景:
- 相册自动分类
- 医学影像初步筛查(正常/异常)
- 垃圾邮件图片识别
2. 目标检测(Object Detection)
任务目标:
在图像中定位并识别多个物体。不仅要识别出物体的类别,还要标出它们的位置。
输出形式:
多个边界框(Bounding Box) + 每个框对应的类别标签 + 置信度分数。
示例:
输入:一张包含多个人和车的街景图
输出:
[类别: 人, 边界框: (x1,y1,x2,y2), 置信度: 0.98]
[类别: 车, 边界框: (x3,y3,x4,y4), 置信度: 0.95]
[类别: 人, 边界框: (x5,y5,x6,y6), 置信度: 0.92]
特点:
- 关心“是什么”和“在哪里”。
- 输出是稀疏的(只标注物体级别的框)。
- 模型如:YOLO 系列、Faster R-CNN、SSD、RetinaNet。
应用场景:
- 自动驾驶(检测车辆、行人、交通灯)
- 安防监控(异常行为检测)
- 无人机目标追踪
3. 图像分割(Image Segmentation)
任务目标:
对图像中的每个像素进行分类,精确地划分出物体的轮廓和区域。
根据细分程度,可分为:
a. 语义分割(Semantic Segmentation)
- 目标:为每个像素分配一个类别标签,但不区分同一类别的不同个体。
- 输出:与输入图像同尺寸的分割图,每个像素有一个类别标签。
- 示例:所有“人”的像素都标记为“人”类,不区分是哪一个人。
- 模型:U-Net、DeepLab、SegNet。
b. 实例分割(Instance Segmentation)
- 目标:不仅区分类别,还区分同一类别的不同个体。
- 输出:每个物体的精确掩码(Mask) + 类别 + 置信度。
- 示例:第一个人的像素标记为“人-1”,第二个人的像素标记为“人-2”。
- 模型:Mask R-CNN、YOLACT、SOLO。
c. 全景分割(Panoptic Segmentation)
- 目标:结合语义分割和实例分割,统一处理“可数物体”(如人、车)和“不可数区域”(如天空、道路)。
- 输出:一张图中所有像素的完整标注,既区分个体也区分背景类别。
特点:
- 关心“是什么”、“在哪里”,还关心“精确轮廓”。
- 输出是密集的(每个像素都有标签)。
- 比分类和检测更精细,计算成本也更高。
应用场景:
- 医学图像分析(肿瘤区域分割)
- 自动驾驶(道路可行驶区域分割)
- 图像编辑(背景替换、抠图)
总结对比表
任务 | 输出粒度 | 是否定位 | 是否区分个体 | 输出形式 | 典型模型 |
---|---|---|---|---|---|
分类 | 整图 | 否 | 不适用 | 类别标签 | ResNet, ViT |
目标检测 | 物体级别 | 是 | 否(YOLO等) | 边界框 + 类别 | YOLO, Faster R-CNN |
实例分割 | 像素级别 | 是 | 是 | 掩码(Mask)+ 类别 | Mask R-CNN, YOLOv8-seg |
语义分割 | 像素级别 | 是 | 否 | 类别图(每个像素有类别) | U-Net, DeepLab |
全景分割 | 像素级别 | 是 | 是(所有物体) | 统一的像素级标注 | Panoptic FPN |
关系演进
这三个任务可以看作是视觉理解的逐步精细化过程:
图像分类 → 目标检测 → 实例分割 → 全景分割
从“整图是什么”到“物体在哪”,再到“物体的精确形状”,计算机对图像的理解越来越接近人类水平。