Disentangled Image Matting
论文链接:https://arxiv.org/abs/1909.04686
发表出处:2019 CVPR
1.背景
以前的大多数图像匹配方法都需要一个大致指定的trimap作为输入,并为trimap未知区域中的所有像素估计分数alpha值。
直接从粗糙的Trimap估计alpha matte是先前方法的主要局限性,这忽略了输入的trimap的不精确性。
2.文章观点
本文认为,在利用trimap作为额外输入的图像抠图中存在着一个分类问题没有得到充分解决。
如果仔细观看trimap,未知区域的像素将会分入三个集合:不透明前景,不透明背景以及半透明区域。前两类称之为不透明像素,后一类称之为混合像素。
抠图方法的期望行为是为不透明像素生产精确的 0 和 1,同时精确评估混合像素的微小不透明度(介于 0 和 1 之间)。
由此可见,抠图这一任务包含两个相关但又不同的任务。第一个是分类未知区域中的像素以确认混合像素,本文称之为 trimap adaptation,第二个是精确计算混合像素的不透明值,本文称之为 alpha estimation。
针对上述问题,文章认为不能像先前的方法一样,将抠图看作是一个简单的单一回归任务,并且由于发现抠图可分为 trimap adaptation 和 alpha estimation两个任务,本文提出了一个简单但强大的抠图框架,称之为 AdaMatting (Adaptation and Matting),借助多任务的方式在两个不同的解码器分支内执行这两个任务。
3.trimap adaptation
我们首先先了解一下文章提出的trimap adaptation,再去看文章的整体框架
所谓的trimap adaptation其实就是旨在预测最优的trimap T opt,直观来讲, 就是把半透明的区域与不透明的前景和背景分开。文中通过下面这个公式去定义最优的trimap
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/22a20ce0331c5d35bc33d73e9dd1afa7.png#pic_center)
根据 T opt 的定义,抠图自然地分为两步:
1)确定 α 是否正好为 0、1 或者两者都不是;
2)如果区域是半透明的,精确计算 α。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/38f340a3126a874a9a79b25f43138b00.png#pic_center)
图中可以看到第一次输入的trimap中的未知区域很宽,而且是错误的,因为低质量的标签没有覆盖所有的头发。在对trimap进行调整后,不仅缩小了输出trimap的范围,而且对输出trimap进行了修正,得到了更可靠的trimap。
4.网络
本文设计了一个完全端到端的 CNN 模型,称之为 AdaMatting下图描绘了AdaMatting,其包括一个产生共享表示的编码器,随后是两个相关的解码器,分别解决trimap自适应和阿尔法估计。然后,将trimap自适应的结果和中间alpha matte发送到传播单元,形成最终的alpha matte。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/07630fd92b377afcd386fd288b4b85db.png#pic_center)
多任务自动编码器包括一个编码器(ResNet- 50)生成共享表示,然后是两个解码器(类似于U-Net结构),目的是学习从共享表示到所需输出的映射,
t -解码器和a -解码器分别代表trimap解码器和alpha解码器,每个解码器由3×3个卷积层和上采样模块组成。
在交叉熵 loss的指导下,trimap解码器利用共享表示的高级特征部分,输出3通道作分类结果。alpha解码器利用共享表示的低级特征部分,输出一个1通道的alpha estimation,该估计值输入给propagation unit以进一步细化。
传播单元由两个res block和一个convolutional LSTM cell组成,将输入图像、trimap adaption和alpha estimation传播结果作为输入。
ResBlocks从输入中提取特性,而convolutional LSTM cell可以在传播时保持记忆,形成最终的alpha matte。
传播单元逐步细化预测的alpha matte,产生具有更精确的边缘细节和明显更少的不希望的伪像的最终结果。
5.损失函数
损失函数采用多任务损失
trimap自适应可以建模为分割任务,将输入图像分割成实心前景、实心背景和半透明区域。解决这种分割问题的过程可以产生丰富的语义特征,这反过来有助于解决alpha matte回归。
文章采用任务不确定性损失,而不是线性组合损失。损失可以表述为:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/652a1167d0f9f7a093bbf4ad6863b4eb.png#pic_center)
其中,T ~和α ~分别代表trimap自适应和α估计的输出,σ 1和σ 2代表动态调整的任务权重,L t和L α分别代表trimap自适应损失和α估计损失。更具体地说,L t是交叉熵损失,而L α是L1损失,仅在的未知区域(表示为u)上计算:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a0afb78b5ce51e5f5f041652435c3ea5.png#pic_center)
6.结果
(1)alphamatting.com数据集上的测试结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ac5931f8d3e13f5a33d6db89be6de720.png#pic_center)
(2)多任务VS 两阶段
一种更直观的方法是利用两个级联网络,依次解决trimap自适应和图像抠图,而不是以多任务方式训练单个网络。我们称这样的模型为Seq-AdaMatting
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a3cfe555d0a2d86f3cd0839b92e090e.png#pic_center)
结果证明多任务学习的效果比两阶段的方式更好