Real-Time High-Resolution Background Matting
论文链接:https://arxiv.org/pdf/2012.07810.pdf
发表出处:2020 CVPR
1.研究背景
虽然现在许多工具提供了背景替换功能,但是它们会在边界产生伪影,特别是在有细微细节的区域,比如头发或眼镜。
往往能在细微细节区域表现良好的抠图技术处理速度都比较慢,不能达到实时性的要求。
所以设计一个能够在高分辨率视频上实现实时抠图的神经网络是极具挑战性的
2.主要内容
针对视频背景抠图,文章主要内容就是下面这五个方面
1.实现了实时且高分辨率的背景抠图,在GPU上,4K分辨率上速度可以达到30帧/秒;HD分辨率上速度可以达到60帧/秒
2.实现了高分辨率alpha matte 的计算,在实时处理高分辨率图像的同时保持了发丝级别的细节
3.文章提出的抠图方法是基于背景的抠图,需要单独捕捉一帧背景图,用于重建 alpha matte 和前景层
4.采用两个神经网络,base 网络计算低分辨率结果; refine 网络在高分辨率图像所选择的图片块上实施进一步处理.
5.构建了两个新的高分辨率抠图数据集:VideoMatte240K 和 PhotoMatte 13K/85
3.前景残差
给定图像 I 以及捕捉的背景 B, 算法会预测输出 alpha matte α 和前景 F, 基于I ’=αF+(1-α)B ’,可以被任何背景来组合形成新的图片,B’就是新的背景.
相较于之前的直接求解前景,文章求的是前景残差F R=F-I,然后,可以通过将F R加入到输入图像I中,并通过F = max ( min( F R + I , 1 ) , 0 ) 来恢复F.
文章指出,这个公式提高了学习效果,并且可以通过上采样将低分辨率的前景残差应用到高分辨率的输入图像上,也就是说可以将前景预测放置在较低的分辨率网络下.
4.误差预测图
高分辨率下的抠图充满挑战,因为应用深度网络直接导致不切实际的计算和内存消耗。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e23bf9f2aacd1eda8873d4a99d5c2093.png#pic_center)
如图所示,人类的抠图通常是非常稀疏的,其中大面积的像素属于背景(α = 0 )或前景(α = 1 ),只有少数区域涉及更精细的细节,例如,头发、眼镜和人的轮廓周围。
所以,文章没有只设计一个对高分辨率图像进行操作的网络,而是引入了两个网络:基础网络在较低分辨率下操作;细化网络在原始分辨率下根据前一个网络的预测对选定的区域进行操作。
5.网络框架
由一个基础网络G base和一个细化网络G refine组成。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/30b022dc0c96091e4f29b6cb26edf0bc.png#pic_center)
给定原始图像I和捕获的背景B,首先对其进行系数为c的下采样生成I c和B c。基础网络G base将I c和B c作为输入,并预测粗粒度的alpha matte α、前景残差F R c、误差预测图E c和隐藏特征H c。
然后,细化网络G refine利用H c、I和B,只在预测误差E c较大的区域对α c和F R c进行细化,并在原始分辨率下产生α和前景残差F R。
6.基础网络
基础网络由Backbone、ASPP(空间金字塔池化)和Decoder三个部分组成
主干网络采用 ResNet50
类似于 DeepLabV3,在 backbone 网络后接 ASPP(Atrous Spatial Pyramid Pooling) 模块
解码网络的每一步采用双线性上采样,并连接来自主干网络的跳跃连接
解码器网络输出粗粒度的alpha matte 、前景残差、误差预测图和一个32通道的隐藏特征。
隐藏特征包含了对细化网络有用的全局上下文。
基础网络Backbone、ASPP(空间金字塔池化)和Decoder三个部分组成
主干网络采用 ResNet50
类似于 DeepLabV3,在 backbone 网络后接 ASPP(Atrous Spatial Pyramid Pooling) 模块
解码网络的每一步采用双线性上采样,并连接来自主干网络的跳跃连接
解码器网络输出粗粒度的alpha matte 、前景残差、误差预测图和一个32通道的隐藏特征。
隐藏特征包含了对细化网络有用的全局上下文。
7.细化网络
Refinement 网络的目标是,降低冗余计算量,并重建高分辨率抠图细节.
基础网络的输出结果是原始尺寸的1/c,C会根据输入尺寸的变化而变化,比如4K分辨率时的取值就是8,得到基础网络输出的粗略优化结构之后,文章对预测错误图Ec进行采样,使其变为原始输入尺寸的1/4,所以对于预测错误图Ec而言,就变成了E4,它的每个像素对应于原始图像分辨率的一个 4x4 图像块,从E4中选取预测误差最大的k个像素(k 是提前设定的,或着是根据抠图质量和计算量平衡的阈值计算来设定的),所以对于原始分辨率的细化像素总数是44K。
Refinement 网络是 two-stage 的,分别处理原始分辨率的二分之一和全分辨率.
(1)将粗粒度的alpha matte α、前景残差FRc、误差预测图Ec和隐藏特征Hc采样到原始输入尺寸的1/2,并且将他们合并起来,然后在E4选中的位置上裁剪出88大小的块,送入两个带有有效填充的卷积之后变成44,然后将这些中间特征再次上采样到8×8,并把它们和从原始分辨率的输入I和背景B的相应位置中提取的8×8块进行连通。然后,再送入两个带有有效填充的卷积,就获得4×4的alpha matte和前景残差结果
(2)第二步,将粗略的 alpha matte αc、前景残差 FR~c上采样到原始分辨率,并交换被细化后的 4x4 图像块,以得到最终的 alpha matte α 和 前景残差 FR。
8.损失函数
关于 GT α*和α,采用 L1 损失 计算整个 alpha matte 和对应的 Sobel 梯度损失函数:
根据预测的前景残差以及F = max ( min( FR + I , 1 ) , 0 ),得到前景层;
仅对于 GT α* >0的像素区域计算L1 损失:
其中 α*>0是布尔表达式
对于细化区域选择,将ground truth误差图定义为E*=|α- α*|。然后,计算预测误差图和ground truth误差图之间的均方误差:
这种损失会促使预测的误差图具有更大的值,其中预测的alpha与ground truth 之间的差异较大。当预测的alpha值提高时,ground truth误差图会在训练过程中随着迭代次数的变化而变化。随着时间的流逝,误差图会收敛并预测复杂区域(例如,局部区域)中的高误差。头发,如果简单地进行过采样,将导致合成效果不佳。
对于基础网络的损失函数如下:
对于细化网络的损失函数如下:
9.训练次序
(1)首先,仅训练 base 网络 ;
(2)在数据集 VideoMatte240K 上,联合训练整个模型;
(3)然后,在数据集 PhotoMatte 13K 联合训练模型,以提升高分辨率细节.
(4)最后,在公开数据集(646 张训练数据)上联合训练模型.)
10.结果
这是抠图的视觉效果,这是文章编写的zoom插件和之前的zoom抠图效果的对比
抠图的速度对比
模型参数及大小对比: