区域、像素与实例怎样让每一份轮廓属于一个明确对象?
同类像素与同一实例是两个概念。实例到类别的映射可多对一,连通块也不可靠地等于对象数。此页提出掩码必须随对象身份分别组织,为区域路线与像素路线的汇合提供具体理由。
同一底图并排叠加语义和实例 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 的第一项预测框在右侧,类别概率更支持第二类;第二项预测在左侧,更支持第一类。真值数组却按左、右保存。如果不考虑内容,直接让槽位 0 学真值 0,就人为制造了位置和类别冲突。
代码按教学定义 Cij=−logpi(cj)+2∥bi−gj∥1+(1−IoU) 构造成本,得到约 [[5.0971,.4509],[.4779,5.6026]]。对角总代价 10.6997,交叉 .9288,因此最佳分配为槽位 0→真值 1、槽位 1→真值 0。只交换标注或预测数组的排列,最小内容对应仍然不变。
此处的负对数分类项、IoU 与系数是教学选择;官方 DETR matcher 使用其明确的分类、L1、GIoU 成本,不应声称公式逐项一致。匹配找到最低代价也不意味着检测正确:即使两项预测都很差,算法仍会选一个较便宜分配。检测质量仍要用保留数据与定位/类别标准评价。
本册另一小算例把 16 像素目标映到不同 stride 的连续跨度,属于尺度读取,与集合匹配不同。导航中把二者标为两项可单独读的短练习,学生无需为找一句机制解释穿过全部实验。