## 让 logits、标签和有效像素一一对应 先建立像素坐标与类别标签的对应,再解释损失和忽略位置。 ### 每个有效像素提供一项监督 [独立阅读](/course/blocks/pixel-cross-entropy.html) 对目标类别为 $y_{uv}$ 的像素,交叉熵是 $-\log p_{y_{uv},u,v}$。若有效像素集合为 Ω,平均损失写成 $ L=-\frac{1}{|\Omega|}\sum_{(u,v)\in\Omega}\log p_{y_{uv},u,v}. $ 三类 logits `[B,3,H,W]` 与整数目标 `[B,H,W]` 相配;不要把类别 ID 当成连续数直接算回归平方误差。二类分割也可只预测一个前景 logit,用 sigmoid 与二元交叉熵,这时标签与输出接口跟三类方案不同。 未标注位置常用 ignore=255。它表示“不在这里计算监督和指标”,不表示第四类,也不等于背景。LAB11 的损失和混淆矩阵都排除这些位置;否则模型可能因为迎合不存在的背景标签而产生错误梯度。 图像翻转、裁剪或缩放时,目标地图必须接受同一几何变换。RGB 图能用连续插值,离散 mask 通常用最近邻;把类 1 与类 3 插出“类 2”没有语义依据。先保证一处图像像素仍对应同一处目标,训练曲线才有解释价值。 **出处:**[D2L §14.11 FCN](https://d2l.ai/chapter_computer-vision/fcn.html) ## 把粗网格放大时,先看输入有没有变 ## 解释、算例与证据 # P37 · 输出变细,不意味着信息自动变多 比较增加输出格子与增加输入证据。最近邻和双线性只规定怎样利用现有数值;离散标签与连续 logits 的插值又不同。8×8 算例清楚给出前景 IoU、背景 IoU、mIoU 和像素准确率,避免同一个小数换四个名字。 图内标签与数值:Lecture 03 课堂图解 P37;已有 4 × 4 数值;最近邻 · 16 × 16;双线性 · 16 × 16;唯一的数值来源;复制邻近值;过渡更平滑;两种放大都只读原来的 16 个值,没有重新读取图像。;二值数值场的插值算例;不是视觉模型预测。双线性按输出像素中心映射,边界夹取。 同一个 4×4 二值数值场放大到 16×16,最近邻和双线性并排;两者的计算输入完全相同。 - 已有 4 × 4 数值 - 最近邻 · 16 × 16 - 双线性 · 16 × 16 - 唯一的数值来源 - 复制邻近值 - 过渡更平滑 - 两种放大都只读原来的 16 个值,没有重新读取图像。 - 二值数值场的插值算例;不是视觉模型预测。双线性按输出像素中心映射,边界夹取。同一个 4×4 二值数值场放大到 16×16,最近邻和双线性并排;两者的计算输入完全相同。 [查看对应图解状态](/#/l3-r2-p37/0)[查看完整图解](/course/figures/l3-r2-p37-0.html) ## 课堂讲述 把一个粗网格放大很容易。最近邻复制数值,双线性利用邻近位置作平滑过渡;它们可以给出更多输出位置,但没有额外读取原图。 如果深层表示中仍保存着相关差异,合适的解码和上采样能帮助利用它;如果两种不同边界已经被编码成完全一样的表示,单纯放大不会知道原来是哪一种。 所以像素预测不仅需要“把图片尺寸变回来”,还需要检查表示中保留的空间信息、解码时的读取和训练监督。不要把转置卷积叫成一般意义上的逆卷积,也不要把画面更平滑等同于边界更正确。下面看怎样把不同层次的信息结合起来。 #### 图示条件与公式约定 同一 4×4 二值数值场,最近邻 floor(outindex×4/16);双线性按 (outindex+.5)×4/16−.5 映射并对边界夹取。可比较插值,不称为从图像预测 mask 的训练实验。 #### 这条线索的展开与后续阅读 - [FCN 是独立的密集预测路线|一起算一个完整例子](/supplement.html?return=l3-r2-p37/0#/l3-fcn-dense-example/0) 本页说明 - [上采样不会自动恢复信息|问题从哪里出现](/supplement.html?return=l3-r2-p37/0#/l3-upsampling-problem/0) L03补充阅读 - [上采样不会自动恢复信息|核心改动怎样工作](/supplement.html?return=l3-r2-p37/0#/l3-upsampling-mechanism/0) L03补充阅读 - [上采样不会自动恢复信息|一起算一个完整例子](/supplement.html?return=l3-r2-p37/0#/l3-upsampling-example/0) L03补充阅读 - [上采样不会自动恢复信息|怎样检查这项解释](/supplement.html?return=l3-r2-p37/0#/l3-upsampling-evidence/0) L03补充阅读 - [上采样不会自动恢复信息|什么结论还不能推出](/supplement.html?return=l3-r2-p37/0#/l3-upsampling-boundary/0) L03补充阅读 ## 用同一张 8×8 mask 核对四种指标 已知 mask 的缩放练习隔离采样;相同错误要按明确口径计数。 ### 0.667 是前景 IoU,0.75 才是本例两类 mIoU [独立阅读](/course/blocks/mask-iou-worked-example.html) 已知 8×8 真值 mask:前景 16、背景 48。平均降到 4×4,再最近邻还原并以 ≥.5 阈值化后,预测前景 24,其中 16 个正确、8 个误把背景当成前景;没有漏掉真前景。因此 TP=16、FP=8、FN=0、TN=40。 | 口径 | 分子与分母 | 结果 | | --- | --- | --- | | 前景 IoU | 16/(16+8+0) | 2/3 | | 背景 IoU | 40/(40+0+8) | 5/6 | | 两类 mIoU,含背景 | (2/3+5/6)/2 | .75 | | 像素准确率 | (16+40)/64 | .875 | 这个过程的输入就是已知 mask,因此它隔离的是采样与阈值,不是看 RGB 图像做分割。当前 LAB11 已将名称修正,并保留最近邻与双线性两个分支。双线性分支的两类 mIoU 为 .77564,前景 IoU 仍为 2/3;平滑改变的是错误的位置和类别组成,不是自动保证每项指标都变好。 读一项 mIoU 时至少应知道平均哪些类、是否含背景、空并集怎样处理,以及先累计整份混淆矩阵还是逐图计算再平均。这些口径会改变数字;具体口径比多显示小数位更重要。 ## 给预测模块接入另一份细位置信息 上采样读取现有数值,跨层连接则把另一份特征交给预测模块。 ### 上采样改变读数位置,跨层连接提供额外证据 [独立阅读](/course/blocks/upsampling-versus-new-evidence.html) 从 12×12 分数图恢复到 48×48,可以用最近邻复制,也可以用双线性按邻域加权。输出格子多了,是为了在原图坐标上作决定;运算本身没有再次看原图。若细边界的信息已被编码成相同数值,单独放大同一张图不能判断它原来在哪。 但低分辨率并不意味着一切细节必丢。通道、相位与邻域响应可能保留可用线索,训练出的解码器可以利用它们;真正的判断是“差别有没有进入 F”,而不只是 F 的宽高。因此 P37 既不许诺放大恢复真实细节,也不否定学习上采样的价值。 跨层连接做了一件不同的事:把较细层的特征另行送进预测模块。它提供的不是同一粗特征的复制,而是另一份尚可能保留位置细节的输入。深层上下文可帮助识别这是杯子,较细响应可帮助定位杯柄与窄缝;二者仍需通过任务训练学习怎样组合。 转置卷积是可学习的线性运算形式,不是一般意义上可还原任意输入的“逆卷积”。是否保留细节,应通过同源输入、目标、预测与错误图观察。 P38 的杯柄照片只是原图参考:细、粗特征先做坐标对齐,再由预测模块学习组合,交付像素类别分数或掩码,而不是还原那张 RGB 照片。图中的特征格为结构示意,轮廓为教学标注;是否减少空洞和边界错误,要另看模型预测与目标的比较。 **出处:**[D2L §14.11 FCN](https://d2l.ai/chapter_computer-vision/fcn.html) ### 沿着图解追问 以下是备课用的模拟师生对话,不是课堂实录。 **学生:**双线性更平滑,是不是边界就更准? **教师:**平滑只描述输出变化。是否更准要对照目标轮廓与同一指标;当前已知 mask 热身中,前景 IoU 并没有因双线性变好。 ## 沿这个问题继续 沿 CLS08 的像素目标与指标阅读,再选 LAB11 查看已有预测和错误图。 **出处:**[FCN (2015)](https://arxiv.org/abs/1411.4038)