《Background Matting:The World is Your Green Screen》论文笔记

主页:background-matting
参考代码:Background-Matting

1. 概述

导读:这篇文章对于自然场景下人像抠图提出了一种新的matting方法,在该方法中引入一张背景图片作为参考,此后尽量保持背景画面不动(手持设备存在合理的抖动也可以),将语义分割模型的分割结果/前后帧(可选)也引入作为额外的依据信息。为了使这些信息能够发挥最大的作用,文章引入了一个CS(Context Switching block )模块去有效选取有用信息,从而经过解码器之后得到更加准确的matting结果。此外,由于matting的过程中往往会夹杂一些背景的像素信息,文章引入GAN网络去判断融合图像的真假,并使用教师网络(已经训练收敛的网络)去引导学生网络生成matting结果,从而使得matting的融合结果更加自然。

文章的方法是不需要trimap的matting方法,使用CS模块去提取多个输入的有用信息,之后通过解码器得到最后的结果。但是一般情况下matting的结果中或多或少夹带一些背景像素信息,这就造成了边缘不够友好,通过数据增广和CS模块却是可以得到一定程度上的好转,但是还是存在较为明显的问题,对此文章是通过GAN网络/“知识蒸馏”的形式去优化最后的matting融合结果。

文章的方法也是存在下面列出的缺陷的:

  • 1)需要两张图像,一张静态背景和一张包含目标的图像;
  • 2)需要静态的背景且拍摄的时候画面的抖动尽可能小;
  • 3)文章的方法是偏向于人像的;

在下图中展示的是文章的方法的使用流程:
在这里插入图片描述

2. 方法设计

2.1 整体pipline

文章的方法结构见下图所示:
在这里插入图片描述
文章的方法主要划分为两个部分:

  • 1)由CS模块构建的编码器与解码器组合生成前景区域的彩色预测结果(fg)和alpha图;
  • 2)以训练好的网络作为teacher,再加上GAN去判断融合结果是否真实,从而优化matting的融合效果;

2.2 Adobe数据集上的监督训练

文章的方法在Adobe Matting Dataset上剔除一些包含透明目标(如玻璃杯)的图片(最后得到280张)进行训练。文章的网络包含包含4部分的输入:

  • 1)图像 I I I,该图像是背景图 B ‘ B^{‘} B和前景进行融合的结果;
  • 2)背景图 B ‘ B^{‘} B,该图像是选中的背景图,但是在实际过程中其与真实的背景 B B B是不太一样的,文章中为了拉近这两个图片的差异,在真实背景 B B B上做 γ ∼ N ( 1 , 1.02 ) \gamma\sim\mathcal{N}(1,1.02) γN(1,1.02)的gamma矫正,或是在前景区域添加 η ∼ N ( μ ∈ [ − 1 , 7 ] , σ ∈ [ 2 , 6 ] ) \eta\sim\mathcal{N}(\mu\in[-1,7],\sigma\in[2,6]) ηN(μ[1,7],σ[2,6])的高斯噪声;
  • 3)软分割的结果 S S S,文章中是通过分割网络分割得到,将得到的分割结果进行5次腐蚀和10次膨胀,之后施加 σ = 5 \sigma=5 σ=5的高斯滤波。为了更近一步模拟分割不理想的情况,文章会对分割结果使用更大力度的腐蚀和膨胀等操作;
  • 4)前后帧序列 M M M,文章还引入视频前后帧来进行信息的补充,这里采用的是前后2帧的灰度图 { I − 2 T , I − T , I T , I 2 T } \{I_{-2T},I_{-T},I_{T},I_{2T}\} { I2T,IT,IT,I2T},而在非视频的时候可以将其设置为同一图像;

结合上面的4个输入可以得到网络的组合输入 X = { I , B ‘ , S , M } X=\{I,B^{‘},S,M\} X={ I,B,S,M},之后通过网络得到最后的前景预测结果和alpha图:
( F , α ) = G ( X ; θ ) (F,\alpha)=G(X;\theta) (F,α)=G(X;θ)
为了能够更好利用上面输入的4个输入信息,避免偏向依赖问题,文章使用CS模块选择这4个输入中对最后matting最有价值的信息。也就是如图2中给出的SelectorCombinator

由于这部分网络是在Adobe数据集下完成训练,顾这里将其将其写为为 G A d o b e = G ( ⋅ , θ A d o b e ) G_{Adobe}=G(\cdot,\theta_{Adobe}) GAdobe=G(,θAdobe),以便和后面网络区分开。对与这部分网络的损失,是由4个分量组成的:alpha图的L1损失,alpha图的梯度损失,2倍的前景区域L1损失,由结果进行重建的L1损失。其表达为:
min ⁡ θ A d o b e E X ∼ p x [ ∣ ∣ α − α ∗ ∣ ∣ 1 + ∣ ∣ ∇ ( α ) − ∇ ( α ∗ ) ∣ ∣ 1 + 2 ∣ ∣ F − F ∗ ∣ ∣ 1 + ∣ ∣ I − α F − ( 1 − α ) B ∣ ∣ 1 ] \min_{\theta_{Adobe}}E_{X\sim p_x}[||\alpha-\alpha^{*}||_1+||\nabla(\alpha)-\nabla(\alpha^{*})||_1+\\ 2||F-F^{*}||_1+||I-\alpha F-(1-\alpha)B||_1] θAdobeminEXpx[αα1+(α)(α)1+2FF1+IαF(1α)B1]
文章的CS模块对结果的影响见下图所示:
在这里插入图片描述
前后帧信息对结果的影响:
在这里插入图片描述

2.3 基于GAN的融合优化

通过文章提出的CS模块和数据增广策略可以减少合成数据到真实数据之间的gap,但是这个gap依然还是存在的,特别是在以下的一些情况中表现不佳:

  • 1)在手指/胳膊/头发等区域;
  • 2)分割错误结果错误,分割模型结果有问题;
  • 3)前景与背景的颜色接近;
  • 4)后续的图像与背景之间没有对齐,存在移位,如背景的变化与抖动;

上面的问题一般会导致matting之后的结果与新的背景之间融合不正确的情况,表现为会夹带一些原有背景的像素信息。对此文章通过训练一个对抗网络去鉴别融合的真假,从而提升matting网络的matting质量。

这里将生成器定义为 ( F , α ) = G ( ⋅ , θ R e a l ) (F,\alpha)=G(\cdot,\theta_{Real}) (F,α)=G(,θReal),它与之前的网络是一致的只是参数是通过随机初始化的方式设定。原有网络 ( F ^ , α ^ ) = G ( X ; θ A d o b e ) (\hat{F},\hat{\alpha})=G(X;\theta_{Adobe}) (F^,α^)=G(X;θAdobe)的输出作为生成网络的回归目标,类似于知识蒸馏的形式。文章使用LS_GAN的形式构建对抗网络,其生成器部分目标函数为:
min ⁡ θ R e a l E X , B ˉ ∼ p X , B ˉ [ D ( α F + ( 1 − α ) B ˉ ) 2 + λ { 2 ∣ ∣ α − α ^ ∣ ∣ 1 + 4 ∣ ∣ ∇ ( α ) − ∇ ( α ^ ) ∣ ∣ 1 } + ∣ ∣ F − F ^ ∣ ∣ 1 + ∣ ∣ I − α F − ( 1 − α ) B ‘ ∣ ∣ 1 ] \min_{\theta_{Real}}E_{X,\bar{B}\sim p_{X,\bar{B}}}[D(\alpha F+(1-\alpha)\bar{B})^2+\\ \lambda\{2||\alpha-\hat{\alpha}||_1+4||\nabla(\alpha)-\nabla(\hat{\alpha})||_1\}+||F-\hat{F}||_1+\\ ||I-\alpha F-(1-\alpha)B^{‘}||_1] θRealminEX,BˉpX,Bˉ[D(αF+(1α)Bˉ)2+λ{ 2αα^1+4(α)(α^)1}+FF^1+IαF(1α)B1]
判别器部分的目标函数为:
min ⁡ θ D i s c E X , B ˉ ∼ p X , B ˉ [ ( D ( α F + ( 1 − α ) B ˉ ) ) 2 ] + E I ∈ p d a t a [ ( D ( I ) − 1 ) 2 ] \min_{\theta_{Disc}}E_{X,\bar{B}\sim p_{X,\bar{B}}}[(D(\alpha F+(1-\alpha)\bar{B}))^2]+E_{I\in p_{data}}[(D(I)-1)^2] θDiscminEX,BˉpX,Bˉ[(D(αF+(1α)Bˉ))2]+EIpdata[(D(I)1)2]
对于结果的后处理是通过阈值 α > 0.05 \alpha\gt0.05 α>0.05进行二值化,之后选择最大的 N N N个连通区域,这个数量是通过分割网络确定的。

3. 实验结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/112798124