# LAB20 的两个槽位为何应交叉匹配 [独立阅读](/course/blocks/set-matching-real-inputs.html)**课堂上下文:从哪个问题来** 从错类、漏检、框偏和重复四项错误读结果。IoU 把位置偏差变成可比较几何量,AP 再加入分数排序与对象唯一匹配。沿下方积分例走完分数排序、精确率与召回率计算,再用 LAB10 的结果辨认这些错误。 当前 LAB20 的第一项预测框在右侧,类别概率更支持第二类;第二项预测在左侧,更支持第一类。真值数组却按左、右保存。如果不考虑内容,直接让槽位 0 学真值 0,就人为制造了位置和类别冲突。 代码按教学定义 $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 的连续跨度,属于尺度读取,与集合匹配不同。导航中把二者标为两项可单独读的短练习,学生无需为找一句机制解释穿过全部实验。 **出处:**[DETR 官方匹配实现](https://github.com/facebookresearch/detr/blob/main/models/matcher.py) ## 继续阅读与实验