ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

不需要精确mask——alpha-free-matting

不需要精确mask——alpha-free-matting

alpha-free-matting

通过设计loss,只需要trimap,就可以实现毛发级别的matting

Affinity loss

Affinity loss 在图像 matting 里,本质上是利用图像中像素之间的相似关系(affinity)来约束 alpha matte 的结构,让模型在只有粗标注(比如 trimap)时,也能把 alpha 从已知区域传播到未知区域。

假设图像里有两块颜色相近的黄色毛发区域:

  • 像素 A 在粗 mask 内部,alpha 接近 1;
  • 像素 B 在粗 mask 外部,但颜色和 A 很像;
  • Affinity loss 会希望 A 和 B 的 alpha 关系符合它们在图像上的相似关系。

理想情况,一个像素i位置处的alpha要等于和像素相似的所有像素的alpha的加权和:

A is the affinity matrix,表示相似程度。

所以affinity loss 就是:

实现上,只在中心像素周围KxK的区域去寻找相似像素,并且只取最相似的K个像素去计算A。

Affinity loss 不是万能的,主要有三类局限:

  1. 不能保证边界平滑
    即使 L_affinity = 0,alpha 在边界处仍可能不是理想的平滑过渡。

  2. 均匀颜色区域容易“卡住”
    在长发、毛发等颜色接近常数的区域,线性或二次 alpha 过渡也能让 affinity loss 很小,导致发丝无法继续向外生长,也就是 growth arrest。

  3. 简单来说就是在均匀颜色区域里,affinity loss 主要约束“alpha 局部平滑”,而线性或二次下降已经是很好的平滑解;再配合粗 mask 把两端固定为 1 和 0,alpha 就会被卡在粗边界附近,无法继续向外生长到真实发梢。

  4. 只约束距离大小,不约束方向
    如果只要求距离相等,前景内部可能被拉扯出噪声;DDC loss 通过保留符号缓解这个问题。

DC loss

affinity loss 仅要求 alpha 整体呈现线性或二次变化,但并未控制其局部变化趋势。因此,当 alpha 值分布呈现如图 4 右下子图所示的状态时,affinity loss 无法提供足够的惩罚。为此,在affinity loss基础上更进一步:如果图像中的某些像素相似,那么它们对应的 alpha 值也应具有相同程度的相似性,相似程度要求alpha matte 与输入图像中相似像素对之间的欧氏距离保持一致。

虽然DC loss能恢复出毛发的细节,但是DC loss和known loss在known regions会有冲突。因为known loss会把前景都预测为1,但是DC loss又要求mask上也和原始rgb一样有像素差异,所以就会在前景处有噪声:

DDC loss

和DC loss的区别就是保留了像素差异的符号:

如果 DC loss 只约束距离大小,它可能和 known loss 发生轻微冲突:known loss 想把 alpha 压到 1,DC loss 却因为距离约束让某些像素稍微偏离 1,形成细小纹理。

DDC loss 保留方向后,相似像素的 alpha 变化会更一致,不会在前景内部或背景内部制造额外起伏,所以能缓解这种冲突。

下面就是不同loss的对比:

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进