论文地址:https://arxiv.org/abs/2107.07235
发表于:ICJAI’21
Abstract
自动图像抠图(AIM)是指从任意自然图像中估计软前景,而不需要像trimap那样的辅助输入,这对图像编辑很有用。先前的方法试图学习语义特征来帮助抠图过程,但仅限于具有显著不透明(salient opaque)前景的图像,如人类和动物。在本文中,我们研究了将其扩展到具有显著透明/细微前景或非显著前景的自然图像时的困难。为了解决这个问题,我们提出了一个新颖的端到端抠图网络,它可以为上述类型的任何图像预测一个通用的trimap,以作为一个统一的语义表示。同时,学习到的语义特征通过注意机制引导抠图网络关注过渡区域。我们还构建了一个测试集AIM-500,它包含了500张不同的自然图像,涵盖了所有类型的图像以及手动标记的alpha matte,这使得我们可以对AIM模型的泛化能力进行基准测试。实验结果表明,我们在现有的合成抠图数据集上训练的网络在客观上和主观上都优于现有方法。源代码和数据集可在https://github.com/JizhiziLi/AIM找到。
I. Motivation
图像抠图问题本质上是ill-posed,因此大多数方法实际上需要额外的用户输出作为约束,例如trimap(最常用的)、涂鸦或者说背景(background matting)。不过既然涉及到了额外输入,那么这些方法其实就不太适合实际自动化的工业生产环境。最近出现的自动图像抠图(automatic image matting)就是为了解决之前图像抠图需要额外输入的这一问题。
目前一般来说,主流的自动图像抠图方法都是通过学习图像中的语义特征来完成的,其应用局限在具有显著不透明前景的对象上(如人、动物),文中认为这种局限源于"这些方法的语义表征能力不够强"。
本文将针对被抠图对象的类型,将图像分为了三类:
- 第一类就是图中第一行,也是最喜闻乐见的,文中称其为Salient Opaque(SO),即图像包含显著的前景,并且该前景具有一定的不透明度
- 第二类就是图中的二行,文中称其为Salient Transparent/Meticulous(STM),其同样包含显著的前景,不过该前景可能是完全透明的或者非常精细的
- 第三类就是图中的第三行,文中称其为Non-Salient(NS),其连显著的前景都没有,例如烟雾、网格、雨滴等
本文测试了之前的matting模型,发现现有的模型要么是学习隐式的语义表征,或者直接使用显示的语义表征,因此往往只在一种类别上表现较好。换而言之,这些方法无法很好的去结合全局的语义信息与局部的抠图细节。
此外,本文还搞了个(事实上的第一个)Auto Image Matting测试集AIM-500。
II. Network Architecture
本文所用的backbone网络为ResNet-34,不过作者提到了一个问题,即ResNet这类的网络设计之初是解决"高层"分类问题的,因此这个东西实际上某种程度上缺乏局部细节信息的,为此本文对ResNet-34的结构进行了一些简单的修改。
对于ResNet的Conv1层,其先用了个stride为2的7×7卷积,此时特征图的尺寸可以降低一半到112×112;之后则是一个池化层,此时特征图的尺寸会再降低一半到56×56。作者认为,这两步会丢失许多的局部细节,因此其将这个7×7卷积的stride从2调整为1,并添加一个最大池化层以保证感受野不变;类似的,stage1~stage4中的第一个卷积stride同样被调整为1,并添加一个相应的最大池化层。
不过这里有个额外的问题,把resnet这么改了之后,是需要整个都重新train一遍的…也就是没法直接用pretrained model了。
回到网络结构上来,如果将图中Modified Backbone视为Encoder的话,那么可以发现,Encoder最终输出的id-4被输入到了两个branch中,相当于这个网络是Dual Decoder。这两个Decoder文中分别记为Unified Semantic Representation与Guided Matting Process,将在后文进行介绍。
III. Unified Semantic Representation
这一节主要讨论的就是所谓的semantic representation问题。对于大多数比较"正常"图片(第一节所讲的SO Type)而言,这个语义表征就是trimap;因此这里主要需要重点考虑的是STM与NS。
对于STM,因为他的前景可能非常小(或者干脆就是成片透明的),因此我们可以认为其没有显式的前景。从这个角度理解,此时trimap的前景部分就莫得了,因此本文搞了个"duo map",只去区分背景与不透明区域。而对于NS,前背景都十分混乱,相当于背景也爆了,此时本文搞了个"unimap",把整张图片都标记成不确定区域。形式化的定义如下: { U i = T i , type = S O U i = 1.5 T i − T i 2 , type = S T M U i = 0.5 , type = N S \left\{\begin{array}{lr} U_{i}=T_{i}, & \text { type }=S O \\ U_{i}=1.5 T_{i}-T_{i}^{2}, & \text { type }=S T M \\ U_{i}=0.5, & \text { type }=N S \end{array}\right. ⎩⎨⎧Ui=Ti,Ui=1.5Ti−Ti2,Ui=0.5, type =SO type =STM type =NS 其中的 T T T指将ground truth进行膨胀腐蚀操作得到的trimap。需要注意的是, T i T_{i} Ti只能取三个值,0表示背景,0.5表示不确定,1表示前景。上面这个式子相当于把unimap、duo map给统一回trimap的表示,即所谓的Unified Semantic Representation。
搞duomap和unimap的好处在于,对于STM与NS,此时如果去直接生成trimap,效果可能会非常差,而如果用unified representation就不会出现这个问题:
上图的第一、二、三列便对应着SO、STM、NS这三种情况下生成trimap与uni representation的比较。
回到网络结构的设计上来,既然是做auto matting,那么就还是要设计一个单独的decoder来生成trimap,对于本文则是生成uni representation。按照原文的说法,本文的这个decoder直接拿的是[1]里面的,不过除去这一点,这个decoder也比较简单,基本可以认为就是卷积层-SE Block与PPM模块的叠加。
IV. Guided Matting Process
对于本文的主Decoder,其实也没搞什么特别原创的东西…因此我们主要来看怎么利用上一节中学到的semantic representation来引导alpha matte的生成。
首先,对于上一节中decoder最后一个block所输出的特征,利用一个最大池化层与平均池化层分别对其进行处理,得到池化后的特征。将该特征利用一个卷积层与sigmoid进行处理,就可以得到一个空间注意力图。该注意力图通过与主decoder进行element-wise multiply来引导alpha matte的生成。
V. Experiment
dataset Comp-1k、HAtt、AM-2k、BG-20k
data augmentation type based
transfer learning DUTS
GPU Tesla V100
batch size 16
max epoch 50
input size 320×320
learning rate 10e-6
这里用了个transfer learning策略,看效果比较好用。
这篇文章在比较的时候有个有意思的点,其没有与其他基于trimap的SOTA进行比较,而是只比较了一个baseline DIM;主要比较的是最近的自动图像抠图方法,比如LF、HATT等;但是这又涉及到一个比较蛋疼的问题,这些自动图像抠图方法基本都没一个开源的,因此作者是自己复现了一遍再去测试效果…
一个现象:对于SO类别的图像,AIM方法还是干不过基于trimap的baseline DIM。
Ref
[1] Yaoyi Li and Hongtao Lu. Natural image matting via guided contextual attention. In AAAI, 2020.