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