特征融合的问题

可能原因

  1. 特征融合方式不平滑
    • 如果用的是简单的 add 或 cat → conv,不同来源的特征分布差别很大,容易在局部出现爆点。
    • 特别是人脸区域,分布差异会被放大,导致 decoder 输出异常颜色。 (如图鼻子处的橙色 spot)[lq, gt, decoder1, fuse, decoder2]
      特征融合不平滑
  2. 特征未完全对齐
    • 特征不严格对齐,就会在融合时留下边界/点状伪影。
    • 简单的 bilinear 插值可能不足以保证平滑过渡。
  3. 数值范围不匹配
    • 不同的 feature 可能处于不同的数值范围。
    • 如果没有做 归一化 (LayerNorm/InstanceNorm),直接相加/拼接就会出现色彩点。
  4. 过度依赖外部特征 (shortcut)
    • Decoder 可能在某些 spatial 位置几乎完全依赖外部特征,导致颜色直接来自教师分布 → 出现随机偏色点。

✅ 改进建议(减少颜色点伪影)

  1. 融合前加归一化
    • LayerNormInstanceNorm
    • 保证不同来源特征在数值范围和统计量上一致。
  2. 改进融合模块
    • CrossAttention 替代简单的 cat/add:
      • Query = 学生 decoder 当前特征
      • Key/Value = 对齐后的外部特征
      • 好处:decoder 自己“选择”要不要用外部特征,而不是被硬注入。
    • 或者轻量化尝试 LoRA CrossAttn(只训练小参数),避免大模型过拟合。
  3. 特征 Dropout
    • 训练时随机丢掉一部分外部特征通道或 spatial patch。
    • 防止 decoder 过度依赖外部特征,减少 shortcut 伪影。
  4. 损失函数中加 smooth/TV loss
    • 在图像层面约束颜色平滑性,抑制单点爆炸的颜色。