下面这一节,可以直接作为你书里 3.1.1–3.1.3 的主体内容使用。我会尽量和前面“机器学习评价指标”“CNN 基础”等不重复,只在需要的地方作联结,并在必要处留出“图片占位”。
3.1.1 图像分类、目标检测、实例分割 / 语义分割
这一小节讨论的任务,可以理解为“视觉理解的三个层级”:
- 图像分类:只回答“这张图整体是什么?”
- 目标检测:回答“图里有哪些目标、在什么位置?”
- 分割(语义 / 实例):精确到“每一个像素属于什么东西?哪些像素属于同一个物体个体?”
从具身智能角度看,这三个层级对应着从“看懂是什么”到“知道在哪里”再到“知道它的形状和边界”,直接影响机器人能否安全地移动、对物体进行精细操作。
图片占位建议:一张包含多辆车和行人的街景,分别画出 – 只标注整图类别(如 “city street”); – 带边界框的检测结果; – 语义分割伪彩色图; – 实例分割图(同类物体用不同颜色或不同边界)。
3.1.1.1 图像分类(Image Classification)
任务定义
给定一张图像 \(\displaystyle x\),输出一个或多个类别标签 \(\displaystyle y\):
- 单标签分类:一张图只对应一个主类别,例如 “狗”“飞机”。 数学上是 \(y \in {1,\dots, C}\)。
- 多标签分类:一张图可以同时属于多个类别,例如“室内 + 厨房 + 有人”。 数学上是 \(y \in {0,1}^C\)。
典型做法是:用 CNN 或 ViT 把图像编码成一个向量特征,然后接一个全连接层 + Softmax(多标签时用 Sigmoid)输出每个类别的概率。前面章节已经介绍过 CNN/Transformer 的结构,这里不再展开。
在机器人中的角色
- 场景识别:判断当前是“走廊 / 楼梯间 / 厨房”,帮助移动机器人选择行为模式。
- 物体存在性检测(粗粒度):例如“桌上是否有杯子”“仓库里是否有托盘”,不要求精确位置,只要知道有没有。
- 状态识别:例如“红绿灯状态”“门是开着还是关着”,本质上也是一种分类。
随着后面引入更细粒度的视觉任务,单纯分类在机器人中更多扮演“高层语义标签”的角色,而不是唯一的信息来源。
图片占位建议:图像分类网络结构示意图:左边是一张输入图片,中间是若干卷积/Transformer 模块,右边是一个类别概率条形图(dog, cat, car…)。
3.1.1.2 目标检测(Object Detection)
任务定义
目标检测要在图像中找出所有感兴趣的目标,并给出:
- 每个目标的 类别标签;
- 每个目标的 位置,通常用矩形边界框(bounding box)表示:
- 形式一:\(x_{\min}, y_{\min}, x_{\max}, y_{\max}\)
- 形式二:\(\displaystyle (c_x, c_y, w, h)\)(中心点 + 宽高)
输出是一个可变长集合:
\[ {(b_i, c_i, s_i)}_{i=1}^N \]
其中 \((b_i)\) 是边界框,\((c_i)\) 是类别,\((s_i)\) 是置信度(模型认为这个框有多靠谱)。
与图像分类相比,检测多了两件事:
- 目标个数是未知的(0 个、1 个、很多个都有可能),模型要自己决定输出多少个框;
- 要精准定位——不仅要“认得出”,还要“画得准”。
典型检测器结构
现代深度学习检测器大致可以分成两类:
- 两阶段(two-stage)检测器
- 代表:R-CNN 系列(Fast R-CNN、Faster R-CNN、Mask R-CNN 等)。
- 流程: 1)先用一个网络产生少量“候选框”(Region Proposal); 2)再对每个候选框进行精细分类和位置回归修正。
- 特点:精度高、速度相对较慢,适合离线分析或对实时性要求不特别苛刻的机器人应用。
- 单阶段(one-stage)检测器
- 代表:YOLO 系列、SSD、RetinaNet 等。(arXiv)
- 流程:直接在特征图上预测每个位置可能有哪些目标、对应的框和类别。
- 特点:速度快,适合实时场景(如无人机、移动机器人),精度略低但在工程中往往更受欢迎。
此外,还有 anchor-based(在预定义框上微调)与 ** anchor-free**(直接预测框中心和尺寸)等差异,这些细节在后续讲检测网络时可以展开。
在机器人中的角色
- 行人 / 障碍物检测:移动机器人或自动驾驶车辆的基础能力。
- 操作前目标定位:机械臂抓取前,需要知道目标的 2D 位置,用于进一步估计 3D 位姿(见 3.3 节)。
- 多目标场景理解:例如一个仓库机器人需要知道哪些是“货架”“箱子”“叉车”,并区分它们的位置关系。
图片占位建议:同一张街景图,标出不同类别的边界框,并在旁边画一个典型检测网络示意(backbone + FPN + detection head)。
3.1.1.3 实例分割 vs 语义分割
共同点:都是“每个像素要有标签”
分割任务比检测更精细:不再满足于框出一个矩形,而是要知道每个像素属于哪一类,甚至属于哪一个具体物体。
- 语义分割(Semantic Segmentation)
- 目标:为图像中的每一个像素分配一个语义类别,如“路面 / 行人 / 汽车 / 建筑 / 背景”。
- 特点:不区分实例 。所有“汽车像素”都被标为同一个类别 ID,不管场景中有几辆车。
- 实例分割(Instance Segmentation)
- 目标:不仅要告诉你每个像素“是什么”,还要告诉你“属于哪一个物体实例”。
- 特点:同一类别的不同物体要有不同的实例 ID,例如“车 1”“车 2”“车 3”。
- 技术上通常结合检测 + 分割(如 Mask R-CNN:先检测出框,再为每个框预测掩膜)。
可以用简单的类比理解:
- 语义分割:把城市地图按区域涂色(道路全是灰色、绿地全是绿色);
- 实例分割:不仅涂色,还给每一辆车、每一个行人单独编号。
图片占位建议:一张街景图的三种输出对比: – 语义分割:所有车相同颜色; – 实例分割:每辆车不同颜色; – 并用箭头标出“同类不同实例”的区别。
Panoptic Segmentation(全景分割)简单点到为止
在 COCO 等数据集中,还提出了 panoptic segmentation: 同时输出“语义类别 + 实例 ID”,并区分“thing 类”(可数的物体,如车、人)和“stuff 类”(背景材料,如天空、草地)。(cocodataset.org)
这是语义分割和实例分割的统一视角,本书在后续更高级的场景理解部分可以再展开。
在机器人中的角色
- 精准抓取与放置:知道物体的形状和边界,才能规划手爪接触点、避免夹到旁边物体。
- 可通行区域检测:语义分割可把“可走区域”(地面、台阶)与“不可走区域”(桌子、墙)区分出来,用于导航。
- 精细安全约束:机器人可以通过分割结果理解“人体的轮廓”,从而在靠近人体时自动减速或绕行。
3.1.2 常见基准数据集(ImageNet、COCO 等)的作用
在深度学习时代,大规模标注数据集 + 标准评测协议 是推动视觉算法发展的关键基础设施:
- 提供统一的“试卷”,方便比较不同模型的好坏;
- 提供大规模、多样化的数据,用于预训练通用视觉特征;
- 形成社区共识:大家默认在 ImageNet / COCO 等基准上“打分”,就像标准化考试成绩一样。
在具身智能里,大多数视觉 backbone(ResNet、ViT 等)都来自这些数据集上的预训练模型,然后再迁移到机器人场景。
3.1.2.1 ImageNet
基本情况
ImageNet 是一个规模巨大的图像分类数据集,最经典的是 ILSVRC 使用的 ImageNet-1K 子集:
- 1000 个类别;
- 约 128 万张训练图像、5 万张验证图像、10 万张测试图像。(image-net.org)
- 整个 ImageNet 项目总共包含 1400 万以上图像、2 万多个类别。(维基百科)
从 2010 年开始,ImageNet 每年举办 ILSVRC 挑战赛,主要任务就是大规模图像分类和定位。2012 年 AlexNet 在 ImageNet 上大幅超越传统方法,被普遍视作深度学习在计算机视觉中爆发的起点。
为什么对机器人仍然重要?
尽管 ImageNet 中大多是互联网图片(和机器人摄像头看到的分布不完全一样),但:
- 低层的边缘、纹理等特征具有较好的通用性;
- 在 ImageNet 上预训练的 CNN / ViT,在很多下游任务(检测、分割、机器人操作)上都展现出显著更快的收敛和更好的性能,这一点在大量论文中得到验证。
因此,“从 ImageNet 预训练开始”几乎是视觉模型的默认选项,本书后面提到 ResNet、ViT 等 backbone 时,默认你已经知道它们通常是先在 ImageNet 上训练好的。
图片占位建议:展示 ImageNet 一些类别示例(动物、工具、交通工具),以及挑战赛年份与错误率下降的简单折线图。
3.1.2.2 COCO
基本情况
COCO(Common Objects in Context)是面向检测 + 分割 + 关键点 + 图像描述 的综合性数据集:(cocodataset.org)
- 约 33 万张图像,其中约 20 万张带检测 / 分割 / 描述标注;
- 80 个“thing”类(可数物体,如人、车、椅子等),并扩展出 91 个“stuff”类(天空、路面等)形成 COCO-Stuff,合计 172 类。(cocodataset.org)
- 每张图配有 5 条图像描述(captions),支持视觉–语言任务。(cocodataset.org)
- 提供边界框、实例分割 mask、人体关键点(姿态)等丰富标注。
COCO 的评测标准以 AP@[0.5:0.95] 为核心(后面 3.1.3 会详细解释),已经成为检测、实例分割论文中最常见的“成绩单格式”。
COCO 的特点
- “In Context”:强调物体在复杂背景中的关系,而不是简单白底产品图;
- 目标尺度变化大,小物体(如远处行人、路牌)较多,是检验模型鲁棒性的好试金石;
- 评测细致:按照小 / 中 / 大物体分别统计 AP,对检测大物体、小物体的能力都有要求。(Ultralytics Docs)
面向机器人的启示
- 用 COCO 预训练的检测器,是移动机器人和操作机器人常用的“起点模型”;
- 但 COCO 仍然是“互联网自然场景”,与具体实验室或工厂环境有 domain gap,因此在机器人系统中通常需要再做微调或增补专用数据 。
图片占位建议:COCO 官方样例图:一张室内场景,标注出人、椅子、桌子等边界框 + 实例掩膜 + 文字描述。
3.1.2.3 其他数据集(Pascal VOC、Cityscapes、KITTI 等)
本书后面会在机器人专用数据集章节进一步展开,这里只介绍几个对“经典视觉任务”很重要、同时和机器人密切相关的基准。
- PASCAL VOC
- 早期非常重要的目标检测 / 分割 / 分类基准;
- 典型年份(VOC2007 / 2012)包含约 20k 张图像,20 个常见类别(人、车、自行车、动物等),提供边界框和分割标注。(Ultralytics Docs)
- 使用 mAP@0.5 做为主要指标(后文解释),历史上很多经典检测器(Faster R-CNN、早期 YOLO 版本)都是首先在 VOC 上验证。
VOC 如今在学术论文中使用较少,但仍是入门实践 很好的数据集(规模适中、类别简单)。
- Cityscapes
专注于城市街景语义理解 的数据集:(cityscapes-dataset.com)
- 在 50 个城市采集的街景双目视频序列;
- 5000 张图像具有高质量的像素级分割标注,额外 2 万张带粗标注;
- 主要任务:语义分割(路面、人行道、建筑、车辆、行人等)。
Cityscapes 特别适合研究自动驾驶和城市移动机器人 中的感知问题,是各种语义分割网络(FCN、DeepLab、PSPNet 等)的常用评测基准。
- KITTI
KITTI Vision Benchmark Suite 面向自动驾驶场景,提供 多模态传感器数据:(cvlibs.net)
- 采用配备多相机、LiDAR、GPS/IMU 的车辆采集;
- 提供 2D/3D 目标检测、立体匹配、光流、视觉里程计、语义分割等多个子任务;
- 3D 检测基准中,约 7k 训练图像、7k 测试图像,并配有点云标注。(cvlibs.net)
对具身智能来说,KITTI 是典型的“从 2D 到 3D 感知”过渡数据集,帮助你理解如何从相机 / LiDAR 获得三维信息。
图片占位建议:三张小图拼在一起,分别展示 – VOC 中标注的边界框; – Cityscapes 的街景语义分割伪彩色图; – KITTI 的 2D 图像配合 3D 检测框和点云示意。
3.1.3 评价指标(mAP、IoU 等)
前面机器学习基础部分已经介绍过“准确率、精确率、召回率”等通用指标。本节重点放在视觉检测/分割场景下常用的几个专门指标,并说明它们如何影响机器人系统的实际效果。
3.1.3.1 准确率(Accuracy)
在图像分类 任务中,准确率定义很直接:
\[ \text{Accuracy} = \frac{\text{预测正确的样本数}}{\text{总样本数}} \]
在 ImageNet 竞赛中,经常看到 Top-1 / Top-5 准确率:
- Top-1:预测概率最高的类别是否等于真实类别。
- Top-5:真实类别是否出现在预测概率最高的前 5 个类别中。
在机器人领域,分类准确率仍然有用,例如判断“当前场景类别”“开关状态”等。但对于 目标检测和分割:
- 一个图像中可能有多个目标;
- 预测的是框 / 掩膜集合,而不是单一标签;
此时简单的准确率已经不够,必须结合位置精度 和多个预测之间的对应关系,这就引出了 IoU 和 mAP。
3.1.3.2 平均精度均值(mAP)
1)核心思想:基于 Precision–Recall 曲线
假设你训练了一个检测器,它对每个候选框输出一个置信度分数(score)。如果我们从高到低改变这个分数阈值:
- 阈值高:只保留特别有信心的框,精确率(Precision)高,但漏检多,召回率低;
- 阈值低:检测更多目标,召回率高,但也引入许多假阳性,精确率下降。
在每个阈值下,我们都可以计算一对 \(\displaystyle (P, R)\),在平面上连起来就是一条 Precision–Recall 曲线 。
图片占位建议:一条典型的 P–R 曲线,并用阴影区域表示“曲线下的面积”。
2)单类别的 AP(Average Precision)
对某一个类别,AP 就是 P–R 曲线下面积,数值范围在 0–1 之间:(v7labs.com)
- AP 越高,说明在各种阈值下,这个类别的精确率和召回率整体越好;
- AP 会受到 IoU 阈值 的影响:要先用 IoU 决定每个预测框是否算“正确”(下节讲)。
3)多类别的 mAP(mean Average Precision)
如果有 \(\displaystyle C\) 个类别,可以对每个类别分别算一遍 AP,然后取平均:
\[ \text{mAP} = \frac{1}{C}\sum_{c=1}^{C} AP_c \]
mAP 提供一个单一数字,方便比较模型整体性能。
4)VOC mAP vs COCO AP
这里需要特别指出:不同数据集对 “mAP” 的定义略有不同:
- PASCAL VOC:
- 传统上使用 AP@0.5:即只在 IoU ≥ 0.5 的情况下计算 AP;
- mAP 就是 20 个类别 AP@0.5 的平均。(Ultralytics Docs)
- 指标相对宽松,对框定位要求不那么苛刻。
- COCO:
- 使用更严格的 AP@[0.50:0.95]:在 0.5, 0.55, …, 0.95 共 10 个 IoU 阈值下分别计算 AP,然后取平均;(kharshit.github.io)
- COCO 文档常直接把这个量记为 AP,也就是所谓 “COCO mAP”;
- 还会报告 AP50、AP75 等子指标。
这种设计使得 COCO 的 AP 对“定位偏差”更加敏感:框稍微画不准,IoU 从 0.9 掉到 0.5,多数阈值下都会受到惩罚。
5)阅读论文和工程实践时的注意事项
- 看别人报 “mAP = 40” 时,一定要确认是 VOC@0.5** 还是 COCO@[0.5:0.95]**,两者差别非常大;
- 对机器人任务,如果偏重“是否发现目标”,AP50 更相关;如果关心“抓取位置是否足够精确”,更严格的 AP75 或 COCO AP@[0.5:0.95] 更有意义;
- 在自建数据集时,建议沿用 COCO 风格评测,避免只在单一 IoU 阈值上评价。
3.1.3.3 交并比(IoU,Intersection over Union)
1)定义
IoU 是衡量两个区域重叠程度的指标,广泛用于目标检测和分割评估。给定预测区域 \(\displaystyle A\) 和真值区域 \(\displaystyle B\):
\[ IoU(A, B) = \frac{|A \cap B|}{|A \cup B|} \]
- 完全重合:IoU = 1;
- 完全不相交:IoU = 0;
- 部分重叠:介于 0 和 1 之间。
在目标检测中,\(\displaystyle A\) 和 \(\displaystyle B\) 是两个矩形框;在分割中,则是两个像素集合。(learnopencv.com)
图片占位建议:两个矩形框的重叠示意图,用不同颜色涂出交集和并集,并标出 IoU = 交集面积 / 并集面积。
2)在评测中的用法
- 在 目标检测 中,通常先设定一个 IoU 阈值,例如 0.5:
- 如果预测框与某个真值框的 IoU ≥ 0.5,则认为是一次 True Positive(正确检测);
- 否则是 False Positive(错误检测),或者如果真值框没有被任何预测框“覆盖”,则记为 False Negative(漏检)。(wikidocs.net)
- 在 分割 中,IoU 常直接用作主要指标(也称 Jaccard 指数),表示预测掩膜与真值掩膜的重叠程度。(wikidocs.net)
IoU 是 mAP 计算的基础:只有知道每个预测是 TP 还是 FP,才能画精确率–召回率曲线,从而得到 AP / mAP。
3)对机器人的含义
- 对移动机器人来说,检测到障碍物就行,框的边缘偏差一点问题不大,IoU 0.5 可能已经足够;
- 对精细操作(插销、抓小物体)来说,即使 IoU 达到 0.7、0.8,也可能意味着末端位置偏差数厘米,对任务成功率有明显影响;
- 因此,在具体工程中,应该根据任务容忍误差的大小,选择合适的 IoU 阈值和指标(如 AP75、AP@[0.75:0.95])。
小结一下这一节的逻辑:
- 图像分类 → 检测 → 分割,是视觉理解精度不断提高的三个层级;
- ImageNet / COCO / VOC / Cityscapes / KITTI 等数据集,提供了从分类、检测、分割到 3D 感知的一整套“训练场”;
- IoU 和 mAP 是连接“模型输出”和“我们如何评价它”的关键纽带,它们的具体定义(VOC vs COCO)会直接影响结论解读。
在后续 3.2 及以后的章节,我们会从特征表示(ResNet、ViT、自监督)和三维几何的角度,进一步讨论如何让这些视觉能力真正服务于具身智能和机器人控制。