[CLS 08 · 密集预测、实例与集合输出](/course/notebooks/2d81e2a1936043349eacb71c53c0defa.html) # 一张类别图怎样成为可训练的输出 [独立阅读](/course/notebook-blocks/6ca34c15abaf4aeb9900af72759ebc28.html) 按问题继续 像素损失、IoU口径、粗细表示、实例身份与集合输出 **学习路径:** [像素、边界与对象身份](/course/study/pixels-instances.html) 本册承接 [P36 的逐像素任务](/course/pages/l3-r2-p36.html),解释 [LAB 11](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/9e268706471944e3a59e6f568f9ce9a3) 为什么需要新的目标、损失和评价。先读 logits/目标/ignore,再用 8×8 算例区分前景 IoU、两类 mIoU 和像素准确率;最后看语义类别为何不能唯一给出实例身份。 希望先看结果,可读 [RGB 读出与 FCN 的对照](/course/blocks/pixel-model-positive-result.html);希望核一个指标,可引用 [0.667 与 0.75 的完整算例](/course/blocks/mask-iou-worked-example.html)。读完应能解释“框对了但边界仍错”和“所有杯子像素对了但实例仍未分开”这两个缺口。 坐标采样的动手入口是 [LAB 03](https://deepnote.com/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/49a2c030eafa4e1db6fc4f1a08c3810a);多尺度和集合匹配留在本册后部选读。它们不要求在理解像素预测前先完成。 一个框可以同时包住杯身、杯把和杯把中的背景。框坐标全对,仍不代表我们知道每个像素属于谁。若两只杯子接触,语义分割可以把它们都标成“杯子”,但要分别计数和操作,就还需区分实例身份。这里不是同一个答案换显示颜色,而是输出空间和监督单位发生了变化。 ## 一张类别图怎样成为可训练的输出 语义分割的输出通常为 $Z\in\mathbb R^{N\times C\times H\times W}$,其中 $N$ 是 batch,$C$ 是类别数,$H,W$ 是空间大小。目标 $Y\in\{0,\ldots,C-1\}^{N\times H\times W}$ 是整数类别图。对每个有效像素做 softmax 交叉熵,再按有效像素数平均: $L=-\frac{1}{|\Omega|}\sum_{(n,u,v)\in\Omega}\log p_{n,Y_{nuv},u,v}.$ $\Omega$ 排除 ignore label,例如未标注区域。ignore 不应变成一个额外背景类,也不进入评价混淆矩阵。二类任务可以用一个 foreground logit 加 sigmoid/BCE,也可以用两个 logits 加 softmax;张量形状和损失接口必须与这种选择一致。 FCN 用卷积保持空间网格并输出位置相关分数,再把较粗分辨率恢复到目标大小。U-Net 的编码—解码结构把深层上下文与浅层高分辨率特征通过跳连结合;这种连接提供额外可用信息,而不仅是把同一张粗图放大。[D2L §14.11 FCN](https://d2l.ai/chapter_computer-vision/fcn.html) · [U-Net 原论文](https://arxiv.org/abs/1505.04597)。图像和 mask 的裁剪、翻转、缩放必须使用同一几何变换,否则网络被要求把一个位置的像素对应到另一个位置的标签。 ## 上采样能增加格子,不能单凭格子恢复被删掉的区别 最近邻复制相邻值;双线性插值对邻域数值加权。给二维网格 $F=\begin{pmatrix}0&10\\20&30\end{pmatrix},$ 在横坐标 $x=0.25$、纵坐标 $y=0.5$ 处,四点权重为 $0.375,0.125,0.375,0.125$,插值得到 12.5。它精确说明怎样从已有数值取连续位置,不能保证 12.5 就是原始图像那一点的真实内容。 如果两个 $2\times2$ 图案“左半亮”和“右半亮”都被平均成 0.5,任何只拿这个平均值的确定性解码器都必须给二者相同输出。增加一个“左减右”通道后才可以区分。这是 [LAB 03](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/49a2c030eafa4e1db6fc4f1a08c3810a?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=49a2c030eafa4e1db6fc4f1a08c3810a&utm_term=get_notebook) 的表示碰撞例;它解释为什么需要保留空间信息,而非只提高显示分辨率。 类别 mask 本身是离散 ID,通常用最近邻几何采样。对类别编号 1 和 3 做双线性插值,得到 2 并不意味着中间真的存在第 2 类。模型的连续 logits 或概率图则可以按适当约定插值,再 argmax/阈值。插值坐标约定也要固定,例如是否对齐端点;同样叫 bilinear 的两个设置可能在边界位置不同。 ## 一个 8×8 反例怎样澄清四种指标 设真值前景有 16 像素,从真值 mask 平均降采样再最近邻恢复并阈值化后,预测前景有 24 像素,其中真阳性 16、假阳性 8、假阴性 0、真阴性 40。这是采样机制例,预测过程直接使用了真值 mask,不能当作看图模型的能力证据。 ![真值掩码、降采样恢复和错误区域](/course/repair/assets/cls09-mask-metrics.svg) 三张网格由同一组 8×8 数组绘制。目标矩形为行 2–5、列 3–6(从 0 计数);阈值化最近邻恢复多出了 8 个前景像素。 | 指标 | 计算 | 本例结果 | | --- | --- | --- | | 前景 IoU | $16/(16+8+0)$ | $2/3$ | | 背景 IoU | $40/(40+0+8)$ | $5/6$ | | 两类 mIoU,含背景 | $(2/3+5/6)/2$ | 0.75 | | 像素准确率 | $(16+40)/64$ | 0.875 | “mIoU=0.667”在这个例子里错在名称:0.667 是单类前景 IoU。若报告不含背景的类均值,应写清类别集合;若某类真值和预测都为空,要说明是忽略该类还是采用约定值。背景占比很高时,全预测背景也可能有高像素准确率,所以要看逐类混淆和边界错误,而不只看一个总数。 真正视觉模型必须从图像推断 mask。[LAB 11](https://deepnote.com/workspace/ise3309jingao-5ba66b0a-4283-4f5a-ae06-3f68d3201e99/project/38755e4e-23f6-4f5f-8c68-8a2e4114b1c1/notebook/9e268706471944e3a59e6f568f9ce9a3?utm_source=openai&utm_medium=mcp&utm_campaign=openaimcp&utm_content=9e268706471944e3a59e6f568f9ce9a3&utm_term=get_notebook) 先保留上述采样例及最近邻/双线性比较,再进入小型像素模型。两段实验分别检验采样损失和学习能力,结论不互相替代。 主实验在 2026-09-22 本地 CPU 完成训练,384 张训练图、128 张保留图,输入 48×48 RGB。三类为背景、红矩形、蓝椭圆,目标形状为 `[B,48,48]`,logits 为 `[B,3,48,48]`,ignore label 255 在损失与指标中均被排除。20,590 参数的小型 FCN 将 12×12 粗 logits 双线性上采样并融合精细跳连,训练 20 epoch;另训练只有 12 个参数的逐像素 RGB 线性读出作基线。 | 保留图像条件 | 小型 FCN 三类 mIoU | RGB 逐像素线性读出 mIoU | | --- | --- | --- | | 原始合成图 | 0.99041 | 1.00000 | | 对象尺度变为 0.45 倍 | 0.94396 | 1.00000 | | RGB 图作 5×5 模糊 | 0.92397 | 0.84996 | RGB 基线满分说明原数据颜色已直接泄露类别,不能据 FCN 高分宣称它学会了复杂形状或需要深层上下文。模糊后边缘颜色混合,FCN 在这个干预下更稳健;这才是当前对照支持的具体比较。原始条件下 FCN 的逐类 IoU 为背景 0.99861、矩形 0.99833、椭圆 0.97429,较细曲线边界更难。 ![真实图像、mask、FCN输出与错误](/assets/display/f2028b85a049b53efbcbbb7a.webp) ![小对象条件下的错误分布](/assets/display/a3b94d7df0f7bd4472d4f87d.webp) 保持已训练参数,测试时仅把粗 logits 的双线性插值改为最近邻,mIoU 降到 0.91180。这说明当前网络对训练时的采样约定敏感,不能把它读作“最近邻永远更差”,因为网络没有在两种上采样设置下分别重训。前面的已知 mask 热身中,双线性分支前景 IoU 仍为 2/3,背景 IoU 为 0.88462、两类 mIoU 为 0.77564;指标差异与模型泛化仍须分开。