Robust Human Matting via Semantic Guidance
原文:https://arxiv.org/abs/2210.05210
日期:2022年10月(发布在arxiv上的日期)
开源:https://github.com/cxgincsu/SemanticGuidedHumanMatting
ACCV 2022
摘要:对于许多实际应用来说,自动人体抠图是非常需要的。我们研究了最新的人类抠图方法,并表明当语义人类分割失败时会出现常见的不良情况。这表明,语义理解对于健壮的人体抠图至关重要。在此基础上,我们开发了一个快速而准确的人体抠图框架,称为语义引导人体抠图(SGHM)。它建立在语义人类分割网络的基础上,并引入了一个只需少量计算成本的轻量级matting模块。与之前的工作不同,我们的框架是数据高效的,这需要少量的抠图真值来学习估计高质量的物体抠图。我们的实验表明,仅使用200幅抠图图像进行训练,我们的方法可以很好地推广到真实世界的数据集,并且在多个基准点上优于最近的方法,同时仍然有效。考虑到抠图数据难以承受的标注成本和广泛可用的分割数据,我们的方法成为人类抠图任务的一个实用而有效的解决方案。
1 引言
人类抠图旨在预测阿尔法抠图以从输入图像或视频中提取人类前景,这在视觉处理中有许多重要的应用。为此,演播室解决方案通常需要绿幕。然而,在许多真实场景中,绿幕并不总是可用的,例如日常视频会议和使用移动设备拍摄的背景替换效果。因此,非常需要没有绿幕的人体抠图方法。许多以前的作品使用了额外的trimap进行抠图,这表示图像中的三种区域,即前景、背景和未知。然而,它需要仔细的手动标注才能获得trimap。最近提出了使用预先记录的背景图像作为先验的背景抠图方法[1,2]。虽然获得了不错的结果,但它只能处理静态背景和固定相机姿态的情况。
最近的许多工作集中于开发自动人体抠图的方法。早期的一些尝试[6,7]试图生成伪trimap作为第一步,并根据trimap预测抠图。由于训练数据有限,这些方法不能很好地推广到现实世界的例子[2]。这些方法的另一个缺点是它们不能实时运行,这是许多应用程序所需要的,例如实时视频会议中的背景替换。最近的工作MODNet[3]提出了一种快速、全自动的肖像抠图方法。RVM[8]是另一个最近的工作,它利用视频中的时间信息来提高鲁棒性和稳定性。
在这项工作中,我们的目标是开发一种鲁棒、准确、快速的自动人体抠图方法,该方法与MODNet[3]和RVM[8]具有相同的目标。我们在真实世界的例子中研究了现有自动方法的失败案例,并观察到这些失败案例通常是由于不准确的语义理解造成的。如图1(a)所示,部分背景被错误地预测为前景或人体部分被错误地分割。这表明这些最先进的(SOTA)方法的语义理解能力较弱。为了提高他们的语义理解能力,同时保持细节的细粒度,我们试图利用语义分割任务来指导抠图过程。这种动机背后有三个原因。
1) 分割掩码决定前景和背景预测的总体准确性,细粒度结构仅出现在掩码周围。这表明,语义人类mask可以代替trimap(图1(b)),并用作抠图的先决条件[4]。
2) 高质量抠图的标签需要熟练的标注员,而且非常耗时。因此,与分割任务相比,用于抠图的可用训练数据量非常有限(数百到数千个数量级),分割任务只需要在边界周围绘制简单的线条。事实上,有许多人类分割数据集的规模比它大两个或更多数量级(图1(c))。大量的数据对真实世界图像的泛化能力具有重要意义。
3) 通过合成图像创建的合成数据集(图1(d))也用于训练抠图模型,但由于合成图像和真实图像之间存在严重的领域差距,它们有明显的局限性。这会阻止训练后的模型泛化为现实世界的示例。工作[5]系统地分析了领域差距问题。我们的方法不会因为使用较少的此类数据而受到这个问题的影响。
基于以上分析,我们提出了一个多阶段框架来依次预测语义分割mask和matting alpha。首先使用分割子网络来执行分割任务,然后重用该子网络来指导抠图过程,以聚焦于分割mask的周围区域。为了实现实时效率和更好的性能,我们让两个任务共享模型的编码器部分,这已被证明优于[5]中的分离编码器。通过这种设计,我们的抠图模块成功地处理了许多具有挑战性的案例。总之,我们的网络由一个共享编码器、一个分割解码器和一个抠图解码器组成,并且分割解码器将有用的中间信息提供给抠图解码器。在训练中,提出了两级流水线。首先,利用公开的分割数据集训练编码器和分割解码器。利用这些数据,我们的分割子网络被训练来预测健壮的人类mask。其次,使用269幅抠图图像来训练抠图解码器。为了全面评估抠图方法的性能,我们采用5个基准进行定性和定量比较。其中一个是我们从复杂场景中自行收集的数据集,例如不同背景、多人、身体附件(body accessories)和暗光。在所有基准测试中,我们的方法优于所有其他方法。
我们的贡献总结如下:
1 我们开发了一个鲁棒、准确、高效的人体抠图框架,该框架利用共享编码器进行分割和抠图。它使我们的方法能够使用强大的语义理解来指导抠图过程,同时有助于减少计算量。
2 所提出的框架可以充分利用粗掩模训练数据,减少对高质量和大量标注的抠图依赖。仅使用大约200幅抠图图像,我们的方法就能够生成高质量的alpha细节。
3 大量实验表明,我们的方法在多个基准点上达到了最先进的结果。
2 相关工作
在本节中,我们将回顾与我们的工作相关的辅助输入和自动抠图。我们还回顾了分割,因为分割提供了人类区域的粗糙掩模。
需要辅助输入的抠图。 早期的方法大多是基于优化或滤波器的,需要额外的trimap作为输入[9,10,11,12,13,14,15,16,17,18,19]。在[20,21,22]中,深度学习被引入到基于trimap的抠图方法中,这些方法使用深度网络进行trimap抠图。这些基于trimap的方法通常适用于不同的抠图目标对象,但它要求用户提供trimap标注。背景抠图[2,1]最近被提出,作为先决条件,用预先记录的背景图像代替trimap输入。尽管背景抠图可以在静态背景上产生良好的效果,但它不能应用于相机移动环境。最近提出的mask-guided方法[4]只要提供了粗糙mask,就实现了SOTA结果。在他们的工作中,mask是从手动标注或分割输出中生成的,这极大地限制了使用的便利性。我们的目标是将mask生成融入抠图过程中,从而实现全自动抠图并保持实时运行。
自动抠图。 无需任何额外输入即可实现全自动抠图[23,24,25]。[26,27]中的方法研究了类不可知抠图,但不能很好地泛化。像[6,7,28,29,30]这样的一些方法专门用于人体抠图。在这个方向上,最新的MODNet[3]旨在实现快速人像抠图,而RVM[8]则致力于使用时间信息实现鲁棒的人体抠图。对于MODNet,它在肖像图像中表现良好,但在全身图像中很容易失败。最近的工作P3M Net[31]提出了一种双解码器来进行人体抠图,这与我们相似。但有几个显著的差异:1)P3M网络使用分割解码器生成伪trimap,而我们的分割预测真实mask。P3M网络仅在trimap未知区域预测alpha细节。当错误预测trimap时,此设置会输出错误的抠图结果。我们的抠图解码器将mask视为指导,并在整个图像上回归alpha。在此设置下,抠图解码器有机会纠正语义错误。2) 我们的分割解码器和抠图解码器在两个不同的阶段进行训练。在分割训练阶段,分割解码器受到大数据集的强监督。因此,分割解码器预测的结果比P3M网络中的弱监督结果更鲁棒。3) 我们的模型的另一个优点是数据效率高,因为我们只使用非常少量的高精度数据来训练抠图解码器。
分割。 语义分割为场景中的每个像素分配一个语义类标签。它与抠图的区别在于,它预测一个属于前景或背景的硬二值mask,不能像抠图那样生成精细细节和透明值。因此,直接将分割掩码应用于图像和视频合成将在前景对象处生成硬边界,在替换背景时会留下明显的伪影。然而,分割可以提供对象位置的强烈语义线索,这有助于我们的抠图任务。许多基于深度学习的语义分割是完全卷积的,并提出了一些有效的模块,如孔洞空间金字塔池(ASPP)[32]。我们在分割网络设计中遵循它们。
3 方法
给定一个彩色图像,抠图任务可以表述如下:
其中、是前景和背景,是表示前景部分所在位置的 alpha matte。对于图像抠图问题,我们应该从输入的彩色图像中预测 alpha matte,这是一个困难且不适定的任务。如前所述,现有方法依赖于额外的辅助输入,如trimap或预捕获背景。像RVM这样的自动方法对语义错误没有鲁棒性。基于此,我们试图设计一个框架,以更好地利用来自分割的语义先验,但产生精细的细节和透明的抠图值。一种简单的方法是依赖于语义分割掩码,并使用新的抠图网络生成抠图结果。该设置在掩模引导(MG)抠图中开发和演示[4]。两步设置将分割和抠图视为两个单独的任务,有一些缺点。首先,matting网络只使用预测的分割图,而忽略了丰富的语义特征。其次,使用单独的抠图网络将再次从图像中提取特征,并引入额外的计算,这会显著降低高分辨率时的速度。
基于以上分析,我们提出了一种新的人体抠图方法,称为语义引导人体抠图(SGHM),该方法使用分割网络以指导人体抠图。具体来说,我们在分割和抠图任务之间共享编码器。因此,matting任务可以通过重用编码器中丰富的语义特征来学习准确的语义理解,并专注于预测matting解码器中的alpha细节。
如图2所示,我们的SGHM由一个用于提取图像特征的共享编码器、一个用于预测图像分割掩码的分割解码器和一个带有渐进细化模块(PRM)的抠图解码器[4]组成,用于预测高分辨率的抠图结果。我们建议使用一个注意跳连模块(Attentive Shortcut Module,ASM)来组合来自编码器的特征和来自分割解码器的掩码,以用于抠图解码器。
3.1 共享编码器
如上所述,我们建议通过使用语义人体分割特征来改善抠图效果。因此,我们使分割和抠图任务共享一个编码器。更具体地说,我们首先将编码器和分割解码器训练为分割模型,然后固定编码器的参数,并使用从编码器提取的分割特征训练抠图解码器。对于共享编码器,我们采用ResNet50[33]作为特征提取骨干,后面接着一个ASPP模块[32]。该编码器使用1/4尺度图像为两个解码器提取了1/4、1/8、1/16、1/32、1/64尺度的特征,可表示为、、、、。
3.2 分割解码器
我们的分割解码器是一个轻量、效率高的模块,包含4个卷积层和4个上采样层。对于每个卷积层,它可以定义为:
(2)
其中是共享编码器的特征,是卷积层的输出特征。特别的,是分割解码器的直接输入。在每个卷积层之后,除了最后一个之外,还附加了一个批量归一化层和一个ReLU层。最后,我们获得输出分割掩码。我们在稍后报告结果时将分割分支表示为。
3.3 抠图解码器
我们的抠图解码器输入不同尺度的分割特征和分割mask,输出1、1/4、1/8尺度的抠图结果。首先,我们使用ASM模块将编码器的特征和分割掩码结合起来。然后我们通过几个上采样块依次处理不同尺度的特征。我们通过输出模块预测1、1/4、1/8尺度的抠图结果。最后,我们采用PRM模块,基于三个输出尺度的抠图结果产生最终的高分辨率抠图结果。
注意跳连模块。 我们的模型提出使用语义分割,通过共享分割和抠图编码器来改善人类抠图。除了来自共享编码器的特征之外,我们还将不同尺度的分割掩码作为抠图解码器的输入。对于抠图解码器来说,如何融合分割后的特征和掩模是至关重要的。一种直接的方法是将这两个输入拼接起来以便进一步处理。我们建议使用ASM融合这两个输入。在ASM的帮助下,我们可以获得更多的自适应特征。具体而言,ASM包含两个卷积层、两个SpectralNorm层[34]和一个高效的通道注意力层[35]。通道注意力可以通过计算与输入特征相对应的逐通道权重向量来产生自适应特征。
上采样块。 上采样块处理从1/64尺度到原始尺度的输入特征。首先,它元素相加当前尺度特征和由残差块上采样的前一尺度特征,从1/64尺度到1/2尺度。然后,对于1/2尺度和1尺度,我们用单个转置卷积层替换残差块,并使用批量归一化和ReLU来提高效率。
输出块。 我们预测了1、1/4、1/8尺度的抠图效果。对于每个输出尺度,我们在上采样块之后附加一个抠图结果预测块。每个预测块依次包含卷积层、批量归一化层、ReLU和卷积层。
渐进细化模块。 我们采用渐进细化模块(PRM)[4]进一步细化输出块的输出抠图alphas。PRM可以使用自引导掩模(self-guidance mask)来选择性地融合来自先前尺度和当前尺度的抠图alpha,这可以保留来自先前尺度的自信区域,并专注于在当前尺度下细化不确定区域。具体而言,当前尺度的自引导掩模是根据在先前尺度下获得的抠图alpha生成的,如下所示:
其中是先前尺度的抠图alpha。被上采样,以匹配当前尺度的原始抠图输出的大小。使用自引导掩模,当前尺度的抠图alpha可计算如下:
(4)
请注意,先前尺度预测的高置信区域中的特征被保留,而当前尺度仅专注于细化不确定区域。
4 训练
我们分两个阶段训练SGHM模型。首先,我们使用广泛可用的分割数据集训练分割网络。在此阶段,共享编码器和分割解码器的参数被同步更新。在分割网络经过训练后,共享编码器可以提取出强大的语义特征,为matting任务提供信息。接下来,我们固定共享编码器和分割解码器,只训练抠图解码器。从分割网络输出的粗掩模也用作此阶段的输入。在推理过程中,两个解码器依次执行。首先预测分割掩码,并将其馈送至抠图解码器以产生抠图结果。
4.1 分割训练
我们使用约47.2k对图像训练分割子网络,这些图像来自SPD[36](约2.5k)、Portrait Matting[7](约1.7k)、[37]中发布的数据集(约5.2k)、人类解析数据集[38](约4.7k)、PrivacyPreserving数据集[31](约9.4k)和BMV2[1](约23.7k)的绿幕数据集。我们将绿幕数据视为分割掩码,因为它提供的身体姿势多样性比alpha细节更多。请注意,我们通过标注检查删除了一些图像对,并从互联网上收集了大约35k个背景图像用于随机背景合成。
我们采用二元交叉熵(BCE)损失来训练分割模型。对于数据增强,我们采用随机仿射变换、随机水平翻转、随机噪声、随机颜色抖动、随机合成和随机裁剪到320×320。我们在8个NVIDIA Tesla A100 GPU上训练分割模型,每个GPU的批量大小为10。我们使用Adam作为优化器,学习率初始化为5e−4。使用余弦学习速率衰减调度器对模型进行了100个epochs的完全训练。
4.2 抠图训练
我们在AIM[20]数据集的前景图像(透明对象图像除外)上训练抠图模型。总共269幅前景图像,我们使用MS COCO数据集作为背景图像。
遵循MG[4],我们采用回归损失、合成损失(composition loss)[20]、拉普拉斯损失[39]作为训练抠图模型。真值表示为,预测值表示为。然后,组合损失函数可以公式化为:
(5)
我们将此组合损失应用于1、1/4、1/8尺度下的所有输出抠图阿尔法,并使用公式3计算的自适应权重,以迫使训练更专注于每个尺度下的未知区域。此外,我们为不同的尺度设置不同的权重,以形成如下的最终损失函数:
(6)
其中是不同尺度的损失权重。我们在实验中设置。
我们在4个NVIDIA Tesla A100 GPU上用10万次迭代来训练我们的抠图模型,每个GPU的批次大小为8。我们使用Adam作为优化器,学习率被初始化为1e−3。我们采用了与分割训练相同的数据增强,随机裁剪为1280×1280。我们还采用了掩码扰动进行增强。请注意,我们在训练matting模块期间固定了分割模型的参数,这可以迫使matting解码器更加关注特征以预测alpha细节。如果不固定,抠图性能将下降,因为它将过拟合一小组抠图数据。
5 实验
5.1 Benchmarks
为了验证所提方法的有效性,我们在以下5个基准上评估了性能,包括三个真实世界数据集和两个合成数据集。
AIM[20]。 我们从AIM数据集中选择12幅人体图像进行测试。每个前景人体图像被合成到20个背景,这些背景从BG-20K[40]测试集的前240张选择。
D646[26]。 与AIM相似,11幅前景图像与BG-20K测试集的最后220幅背景合成。
PPM-100[3]。 该数据集提供100幅具有各种背景的精细标注的肖像图像。来自PPM-100的图像比合成图像更逼真和自然。
P3M-500-NP[31]。 我们使用面部保留图像,而不是P3M中的面部掩蔽图像。目的是避免面部模糊对评估的未知影响。这个基准有很多不同的身体姿势。
RWCSM-289。 为了进一步验证我们的模型泛化,我们构建了一个现实世界复杂场景抠图数据集,称为RWCSM-289。它包含各种复杂的生活和工作场景。其来源包括手持式视频、在线视频会议、电视节目、现场视频和Vlogs。其中许多来自youtube,被RVM使用[8]。值得注意的是,该数据集包括运动和多人场景,这有助于评估模型的鲁棒性。真值alpha由PhotoShop标注。
5.2 定量比较
我们将我们的方法与最先进的自动抠图方法进行了比较,包括LFM[27]、SHM[6]、HATT[26]、BSHM[41]、MODNet[3]、P3MNet[31]、视频抠图方法RVM[8]和抠图引导方法MG[4]。对于MODNet,我们使用推理大小512,因为它在PPM-100上提供了最佳结果。对于RVM,我们通过对每个图像重复10次来生成10帧视频,并将最后一帧结果作为评估目标。对于P3MNet,使用推荐的测试调整策略。对于MG,我们将分割结果反馈到其网络作为掩码指导。MG和我们的方法在测试时都将图像的短尺寸保持为1280。我们使用平均绝对差(MAD)、均方误差(MSE)、空间梯度(Grad)[42]和连通性(Conn)[42〕作为alpha抠图质量度量。注意,MAD和MSE值按1000缩放,并且在整个图像上计算所有度量。
表1和表2显示了在真实世界和合成数据集上评估的不同抠图方法的结果。它表明,我们的方法在所有度量的所有真实数据集上都优于其他方法。具体而言,在PPM-100上,我们的方法领先于比较的方法。在P3M-500-NP上,我们仅将人脸掩蔽的P3M数据引入分割阶段,就获得了与P3MNet(MAD 6.50,MSE 3.50)相当的结果(MAD 6.49,MSE 3.11)。对于复杂场景数据RWCSM-289,它涵盖了更多的背景多样性、人数、人体附件、照明和图像分辨率,我们明显优于P3MNet和MODNet,并且优于基于视频的方法RVM。在合成数据集上,SGHM仍然取得了最佳结果,显示了所提出方法的一贯优异性能。
5.3 定性比较
本节显示了对真实基准的定性比较。我们在图3中展示了alpha细节,在图4中展示了模型鲁棒性。在图3的第1行至第4行中,我们比较了头发细节,发现我们预测的细粒度头发细节与基于mask的方法MG相当,后者比P3MNet、MODNet和RVM更准确。多个身体姿势显示在第5行至第8行。其他方法往往会出现语义错误(可以在第6行的MODNet、第7行的MG、第5行的P3MNet中找到),而SGHM会产生更准确的alpha抠图。值得注意的是,我们的方法能够纠正粗mask中的语义错误(参见SGHM-S至SGHM的第1、6和8行)。
(编者注:图3中,SGHM-S是本文方法语义分割结果,其边缘精细度明显超出通常语义分割方法,编者认为原因可能包括分割训练集中BGM2绿幕数据等原本用作抠图的数据占一大半。也许本文方法不应作为一种从语义分割细化出抠图效果的方法,而是将低分辨率抠图上采样并细化至高分辨率抠图的方法。)
在图4中,我们从四类视频中选择了两种SOTA方法MODNet和RVM进行鲁棒性比较。提取的前景与绿色背景合成以进行可视化。与其他两种方法相比,我们的方法预测的语义错误更少,并且对语义理解错误具有更好的鲁棒性。
5.4 尺寸和速度比较
如第3节所述,MG使用分割mask作为其抠图网络的额外输入。与MG不同,我们将mask生成阶段合并到抠图框架中。由于MG使用独立的抠图网络,它引入了更多的参数,其总参数数是分割和抠图网络的组合。因此速度减慢。我们的SGHM与分割共享编码器,这会导致边际的额外参数。在相同设置下,SGHM的运行速度也比MG快,在NVIDIA A100上的HD图像(1920×1080)上可以达到34 FPS。对于抠图质量,我们的方法实现了更好的性能。这表明我们在速度和准确性方面都优于MG。并对MODNet和RVM进行了比较。尽管它们的参数较少,但它们都有局限性。MODNet在HD推理大小(20.76 FPS)上的运行速度比512(81.01 FPS)慢。RVM在所有基准测试中预测的细粒度alpha结果不令人满意。
5.5 消融研究
分割任务的作用。 我们建议引入分割任务,以从两个方面提高alpha抠图的性能和泛化。一种是共享编码器特征,另一种是粗mask引导。表4显示了我们对PPM-100的消融研究结果。结果得出了两个结论:(1)共享语义特征对抠图任务非常有益,这有助于将MAD从7.83降低到5.97。由于我们的matting模型仅在数百幅图像上进行训练,因此鲁棒的语义特征和良好的掩码指导都有助于改进模型的泛化。
ASM的作用。 我们建议ASM结合语义特征和分割掩码,用于matting解码器。如表4的第四行和第五行所示,如果没有ASM,模型的结果会更糟。SpectralNorm和ECA层是ASM的两个关键组成部分。深入分析表明,去除ECA层时,MAD从5.97降至7.11,而去除SpectralNorm时,MAD=6.33。这表明ECA层的贡献更大,因为它明智地调整了特征的权重,使其适合于抠图。请注意,在第一行中,我们删除了mask输入,只使用编码器中的特征,并保留所提ASM中相同的Conv层。
数据集大小的作用。 我们进一步进行了实验,以验证我们方法的数据效率。如表5所示,较大的分割数据集显著改善了抠图效果,而增大抠图数据集的大小则略有改善。请注意,很容易从公开的数据集中收集这些人体分割掩码。但是,标注细粒度的抠图需要更高的标注技能水平,而且需要花费时间和金钱。这是一个重要而实用的发现,我们可以通过以简单而快速的方式收集更多粗糙的人类mask,而不是为高成本的精细alpha标注付费,从而有效地提高抠图性能。
6 结论
在这项工作中,我们研究了鲁棒人体抠图的主要挑战,并揭示了它来自于语义理解。在此基础上,我们提出了一种语义引导的人体抠图方法。我们在语义分割网络中引入了一个额外的matting解码器。通过重用语义分割编码器的特征,抠图解码器能够感知全局语义信息,并且能够生成精细的抠图细节。使用非常少量的抠图数据,我们可以训练一个鲁棒、准确和实时的抠图模型,在多个基准数据集上实现最佳性能。我们相信,我们提出的框架是一个实用的抠图应用管道,它不依赖于大量高标注成本的抠图数据。