论文地址:https://arxiv.org/abs/2004.00626
代码:https://github.com/senguptaumd/Background-Matting
背景介绍
抠图是照片编辑和视觉效果中使用的标准技术,在现有的抠图算法中,要想抠出一个好的maks一般需要三分图(trimap由前景,背景,未知片段组成)。虽然现在也有不需要三分图的算法正在发展,但是这种不需要三分图的算法,在抠图的质量与有三分图的算法没有可比性。
因此,在本算法中除了需要原图片之外,还需要一张额外的背景图片。
抠图算法的公式
:前景图(foreground),:背景图(background)。:混合系数(mixing coeffcient)。:图像的合成方程
当趋近与0的时候,就会获得背景图,相反,当趋近与1时,就会获得前景图。
方法介绍
核心方法
在本文中,核心是使用一个深度抠图网络G,对输入的图片进行前景色和进行提取,对背景色和软分割进行增强,在接上一个鉴别器网络D指导训练生成真实的结果
网络结构图
Adobe数据集上的监督训练
输入
包含对象在前景中的图像(Image),图像中对应的背景图像(Background)(这个和真实的背景图不同),对象的软分割图像(Soft Segmentation)以及对象再相邻时间上的临近帧(Motion Cues)。
为了生成软分割图像需要对图像进行Decoder-Encoder的卷积处理后获得粗分割结果,在对图片进行腐蚀,扩张以及高斯模糊。
当选择的是视频输入时,将设置为前后两帧的拼接,令每一帧的时间间隔为T,则:
这些图像被转化为灰度图像,以忽略颜色的信息而更多地倾向于对象的运动信息。
在没有选择视频输入时,把理解为图像的复制,即:
将输入集表示为,则带有权重的网络计算过程可抽象地表示为:
内容切换块(Context Switching Block)
聚焦于网路图左边部分:
输入的内容对应图中左边的四个部分,分别采用不同的Enocder对各自部分的图像进行编码,最终各自生成对应的通道数为256的feature map。接着使用Selector块将来自I的feature map与中的每一个部分分别组合,最终生成三个通道数为64的feature map。
Selector块由:1x1卷积,BatchNorm和ReLU构成
接着使用Combinator(结构与Selctor一致),将三个64通道的feature map与原始图像中256通道的feature mp进行组合,以产生编码特征(encoded features),该特征被传递到网路偶的其余部分,包括残差块和decoders。
现在看网络结构的右上角部分
将拼接好的编码特征,传递到通用的残差块(ResBLKs)中,在分别经过各自的残差块进行进一步的特征提取。对于前景图部分,将原图的256通道的feature map与经过残差块的feature map进行融合,输入到Decodor中,将前景分割出来,同时将遮罩(alpha matte)的部分进行解码,在讲两者结合通方程:
生成图像,与原图像进行对比从而优化网络。
在这个过程中的获取不是真实的,而是通过对前景区域部分进行小伽马校正或者通过添加高斯噪声来生成的。
在最后的运动线索中,合成到背景上之前,对前景和遮罩进行随机仿射变换,然后转化为灰度图。为了计算I和M,最后是用B(真实的背景图)来应用到图像合成方程中,但是,最初输入进网络的仍然是。
最后训练网络的损失函数为:
未标记真实数据的对抗训练
对于未标记的数据来说,在图像的细节部分,比如人的手指,头发以及和背景色相近的前景色区域。在这些区域的表现一般都会比较粗糙。举个例子,原来抠图的图像前景中,掺杂着一部分的背景色,对抗训练就是为了解决这个问题而设计的一个网络。
算法采用的是LS-GAN框架来训练生成器和判别器,为此,对生成器来说,要更新参数,使得以下式子最小化:
其中,表示生成器D中看到的合成背景,设置从0.05向每两轮之间衰减,使得判别器发挥更重要的作用,尤其是对图像的锐化。
对于判别器来说,也要更新参数,使得一下式子最小化:
代表的是生成器的权重,与中的含义相同
在后处理过程中,设置的阈值为并提取前N个最大的相连组间,为每一个不在这些组间中的像素将值设置为0。其中,是图像中不相交的人物分割的数量。
对生成器与判别器部分的网络结构解析
如下图所示:
首先输入还是和之前的格式一样,首先是用生成器网络和初始网络分别生成前景和系数,通过对比两个生成器的和进行参数调整。
接着使用背景图与生成器生成的和通过合成公式生成图像,在经过判别器(Discriminator)进行判断,通过自监督对抗损失(Self-Supervised Adversarial Loss)进行优化。