Lecture 03 学习讲义
正文
工具
按问题查找
区域、像素与实例怎样让每一份轮廓属于一个明确对象?

从同类像素中分出两份对象身份

解释、算例与证据

P39 · 两个同类对象,需要两份身份

同类像素与同一实例是两个概念。实例到类别的映射可多对一,连通块也不可靠地等于对象数。此页提出掩码必须随对象身份分别组织,为区域路线与像素路线的汇合提供具体理由。

Lecture 03 课堂图解 P39同一底图,只改变标注问题语义:两只都属于“杯子”实例:#1 与 #2 分开同色编码类别不同色编码对象 ID可见轮廓、杯柄孔洞和书遮挡保留;同类像素正确,还不等于交付了实例身份。

同一底图并排叠加语义和实例 mask,杯柄孔洞和书遮挡保留;颜色分别编码类别和实例 ID。

  • 同一底图,只改变标注问题
  • 语义:两只都属于“杯子”
  • 实例:#1 与 #2 分开
  • 同色编码类别
  • 不同色编码对象 ID
  • 可见轮廓、杯柄孔洞和书遮挡保留;同类像素正确,还不等于交付了实例身份。
同一底图并排叠加语义和实例 mask,杯柄孔洞和书遮挡保留;颜色分别编码类别和实例 ID。 查看对应图解状态
查看完整图解

课堂讲述

现在看两只相邻的杯子。即使所有杯子像素都判对了,系统若只交付“杯子”这一类别,也还没有告诉我们每个像素属于哪一个对象。对语义类别来说,这未必是主要错误;对实例任务来说,答案就不够了。 实例分割要保留“这是哪一个对象”的身份。不能只把所有同类像素放进一个桶,也不能只提供外接框。 这让区域路线和像素路线有了自然的汇合点:先用区域组织不同对象,再在每个区域内部预测属于这个实例的像素。我们前面花时间讲区域表示和空间预测,到了这里就不再是两段独立知识。Mask R-CNN 把这两种要求放到了一套结构中。

从实例到类别容易,反过来不唯一

独立阅读

把像素标为杯子类别,只声明“这里属于杯子集合”。实例标注还声明“这里属于杯一,那里属于杯二”。两只杯子即使同色、接触甚至相互遮挡,实例任务仍需给出两份对象身份。

考虑一行标签 [1,1,2,2],其中 1、2 是两只杯子的实例号。将它们都映射到类别杯子=1,就得到 [1,1,1,1]。另一个实例划分 [1,2,2,2] 经同样映射也得到同一类别行。因此类别图不能唯一反推出实例边界。

连通域可以在“每个对象互不接触”的特定条件下帮忙计数,但一旦两只杯子相接,一个连通块可含两个对象;反过来同一被遮挡的对象还可能产生不连通的可见部分。对象身份不是连通性规则自动保证的属性。

区域路线给每个候选一份身份,像素路线给精细轮廓。把它们结合,就可以在“这个候选对象”之内预测局部 mask。这是进入 Mask R-CNN 的具体需求,而不是为了再增加一种模型名称。

图示条件与公式约定

原底图两杯相邻但没有相接,因此讲稿开头改成“现在看两只相邻的杯子”。它们若接触时语义同类与实例身份的差异仍成立,此页不假装底图已经接触。

区域、像素与实例选读:输出组织与训练分配还可以怎样改变?

选读 LAB20:沿真实输入核对交叉匹配

用已保存的小算例落实上一页的对应问题,检查成本与数组顺序。

LAB20 的两个槽位为何应交叉匹配

独立阅读

当前 LAB20 的第一项预测框在右侧,类别概率更支持第二类;第二项预测在左侧,更支持第一类。真值数组却按左、右保存。如果不考虑内容,直接让槽位 0 学真值 0,就人为制造了位置和类别冲突。

代码按教学定义 Cij=−log⁡pi(cj)+2∥bi−gj∥1+(1−IoU)C_{ij}=-\log p_i(c_j)+2\lVert b_i-g_j\rVert_1+(1-IoU) 构造成本,得到约 [[5.0971,.4509],[.4779,5.6026]]。对角总代价 10.6997,交叉 .9288,因此最佳分配为槽位 0→真值 1、槽位 1→真值 0。只交换标注或预测数组的排列,最小内容对应仍然不变。

此处的负对数分类项、IoU 与系数是教学选择;官方 DETR matcher 使用其明确的分类、L1、GIoU 成本,不应声称公式逐项一致。匹配找到最低代价也不意味着检测正确:即使两项预测都很差,算法仍会选一个较便宜分配。检测质量仍要用保留数据与定位/类别标准评价。

本册另一小算例把 16 像素目标映到不同 stride 的连续跨度,属于尺度读取,与集合匹配不同。导航中把二者标为两项可单独读的短练习,学生无需为找一句机制解释穿过全部实验。

沿这个问题继续

先读本页解释与图,再到 LAB03 改一个坐标或对象。

按问题回查的讲解与短练习(2)