直播时各种背景是怎么实现的?聊一聊虚拟背景背后的技术

随笔 0 529
小小草
小小草 2021年7月30日 23:42 发表
摘要:​SINet(WACV2020)则侧重于在提升人像分割网络的速度,由包含空间压缩模块(spatial squeeze module)的编码器和包含信息屏蔽机制的解码器(information blocking scheme)组成,网络框架上图所示。空间压缩模块(如下图)在 shuffleNetV2

SINet(WACV2020)则侧重于在提升人像分割网络的速度,由包含空间压缩模块(spatial squeeze module)的编码器和包含信息屏蔽机制的解码器(information blocking scheme)组成,网络框架上图所示。空间压缩模块(如下图)在 shuffleNetV2 模块的基础上,在不同路径上使用不同尺度的池化操作压缩特征空间分辨率,提取不同感受野的特征来应对不同尺度的人像,减少计算延时。信息屏蔽机制则是根据深层低分辨率特征预测的人像置信度,在融合浅层高分辨率特征时,屏蔽高置信度区域,只融合低置信度区域的浅层特征,避免引入无关的噪声。SINet 在 EG1800 人像分割测试集的 MIOU 为 95.3%,但模型参数大小只有 86.9K,和 PortraitNe 相比减少 95.9% 的参数。

image.png

人像抠图

image.png

一张图像可以简单的看成是由两部分组成,即前景(Foreground)和背景(Background),图片抠图,就是将一张给定图像的前景和背景区分开来,如上图所示。由于图片抠图是一个欠约束问题,传统抠图算法和早期的基于深度学习的算法方法,主要通过输入额外的语义信息作为约束,最常见的是由前景、背景和不确定区域组成的 trimap,如下图所示。抠图算法的精度受 trimap 的精度影响很大,当 trimap 较差时,基于 trimap 的算法的预测结果下降严重。trimap 的获取主要通过其他算法生成(如语义分割)或人工标注生成,但是通过其他算法生成的 trimap 一般较为粗糙,而人工标注精确的 trimap 则费时费力。trimap-free 的抠图算法逐渐进入人们的视野,本小节将主要对近期的 trimap-free 的人像抠图算法进行介绍。

image.png

Background Matting: The World is Your Green Screen

image.png

Background Matting(CVPR2020)尝试通过引入静态的背景信息来提升人像抠图的效果,相比于使用人工精细标注的 trimap,获取前景所在的静态背景要相对容易,该方法的操作流程如上图所示,首先获取场景的两张图片,一张包含前景,另一张不包含,然后使用深度网络预测 alpha 通道,进而进行背景合成,因此,这个方法主要针对的场景是静态背景下只有轻微相机抖动的人像抠图。

image.png

该方法的模型结构如上图所示,模型处理流程大体如下:给定输入图片和背景图片,首先通过分割模型(如 deeplab)获取前景图片的粗分割结果,然后同 Context Switching Block 模块,对不同的输入信息的组合进行选择,随后输入到解码器中同时预测前景和 alpha 通道。训练过程分成两个阶段,首先在 Adobe 的合成数据集上进行训练,为了降低合成图片和真实图片的 domain gap 造成的影响,使用 LS-GAN 在无标签的真实图片和背景图片上进行第二阶段的对抗训练,通过拉近预测的 alpha 通道合成的图片和真实图片的距离,提升抠图的效果。当背景变换较大或与前景差异较大时,该方法的效果不佳。

Boosting Semantic Human Matting with Coarse Annotations

image.png

这篇文章(CVPR2020)认为影响人像抠图算法效果的原因主要来自两个方面,一是 trimap 的准确性,二是获取人像精确标注的成本高、效率低,导致人像抠图数据集图片数量较少,因此这篇文章提出了一种只需部分精细标注数据(上图 (b))结合大量粗标数据(上图 (a))提升人像抠图效果的方法。

image.png

该方法的网络结构如上图所示,由 3 个模块组成:MPN,粗 mask 预测网络;QUN:mask 质量统一网络;MRN,matting 细化网络,coarse-to-fine 地逐步优化分割的结果。训练时,首先使用粗标数据和精标数据同时训练 MPN,获取粗 mask,然后使用精标数据训练 MRN,细化分割结果。但是文章作者发现,由于粗标数据和精标数据的标注差异,导致两者 MRN 预测预期存在较大的 GAP,从而影响性能,因此,作者提出了 QUN,对粗 mask 的预测结果进行质量统一。

image.png

实验效果如上图所示,相比于只使用精标数据训练,结合粗标数据对于网络语义信息的提取有较大的帮助。同时,结合 QUN 和 MRN,可以对已有数据集的粗标数据进行细化,降低精细标注的获取成本。

Is a Green Screen Really Necessary for Real-Time Human Matting?

现有的人像抠图算法,或需要额外输入(如 trimap、背景), 或需要使用多个模型,无论是获取额外输入的开销还是使用多个模型的计算开销,使得现有方法无法实现人像抠图的实时应用。因此,文章作者提出了一种轻量的人像抠图算法,只使用单张输入图片即可实现实时人像抠图效果,在 1080Ti 上处理 512x512 大小的图片,可以到达 63FPS 的效果。

image.png

如上图所示,本文的方法可以分为 3 个部分,首先是在标注数据上通过多任务监督学习的方式训练人像抠图网络,然后通过 SOC 自监督策略在无标注的真实数据上进行微调,增强模型泛化能力;在测试时,使用 OFD 策略提升预测结果的平滑性,下面会对这 3 个部分进行详细介绍。

image.png

MODNet 的网络结构如上图所示,作者受到基于 trimap 的方法的启发,将 trimap-free 的人像抠图任务分解成了 3 个相关连的子任务进行协同训练,分别是语义预测、细节预测和语义 - 细节融合。通过低分辨率的语义分支捕捉人像主体,通过高分辨率的细节分支提取人像边缘细节,最后通过融合语义、细节得到最终的人像分割结果。

当应用到新场景的数据时,3 个分支产生的结果可能会有差异,因此作者提出了利用无标注的数据的 SOC 自监督策略,通过让语义 - 细节融合分支预测结果在语义上和语义分支预测结果保持一致,在细节结果上和细节分支预测结果保持一致,增强不同子任务之间预测结果一致性约束,从而增强模型的泛化能力。

image.png

直接对视频的每帧图片进行单独预测会导致相邻帧预测结果存在时序上的不一致,从而出现帧间跳闪的现象。作者发现,跳闪的像素点是可能可以通过相邻帧的预测结果进行纠正,如上图所示。因此,作者提出,当前一帧和后一帧的像素预测结果小于一定阈值,同时当前帧预测结果和前后帧的预测结果大于一定阈值时,则可以用前后帧的预测结果的平均作为当前帧的预测结果,从而避免不同帧预测结果时序上的不一定导致的帧间跳闪现象。

Real-Time High-Resolution Background Matting

image.png

现有的人像抠图算法虽然可以生成比较精细的抠图结果,却无法做到实时地处理高分辨率的图片,例如 Background Matting 在 GPU 2080Ti 上每秒只能处理约 8 张 512x512 大小的图片,这无法满足实时应用的需求。文章作者发现,对于高分辨率的图片,只有少部分区域是需要精细分割(如上图所示),大部分区域只需粗分割即可,如果让网络只对需要精细分割的少部分区域进行进一步的分割优化,就可以节省大量的计算。作者借鉴了 PointRend 的思路,基于 Background Matting,提出了一种实时处理高分辨率图片的双阶段人像抠图网络,在 2080Ti 上处理高清图片(分辨率为 1920x1080)可以达到 60FPS,对于 4K 图片 (分辨率为 3840x2160),可以达到 30FPS。

image.png

本文提出的双阶段网络框架如上图所示,由基础网络和细化网络组成。第一阶段的基础网络采用了类似 DeeplabV3+ 的 encoder-decoder 结构,用于生成人像粗分割结果、前景残差、错误预测图和包含全局语义的隐藏特征。第二阶段的细化网络,利用第一阶段产生的错误预测图,挑选出需要进行分割细化的前 k 个图片块,进行进一步分割优化,最后将细化后的分割结果和直接上采样放大的粗分割结果进行融合,得到最终的人像分割结果。和其他方法的对比,本文方法在速度和模型大小上均有明显的提升,如下图所示。

image.png

2.gif

视频人像分割

视频目标分割(Video Object Segmentation,简称为 VOS),旨在从视频每一帧获得兴趣目标的像素级分割结果。相比于单帧图像分割,视频分割算法主要依托于多帧间的连续性,从而实现分割结果的高平滑和高精度。目前,VOS 任务可以分为半监督(seme-supervised,one-shot)分割与无监督(unsupervised,zero-shot)两类。前者在运行时需要输入原始视频和视频首帧分割结果,而后者只需输入原始视频。现有半监督 VOS 算法很难达到精确且实时的分割,研究重心一般侧重于两者之一,现有 VOS 算法效果 [12] 如下图所示。

虚拟背景技术在视频会议中的应用

视频会议作为日常办公中高频场景,伴随着居家办公的火热,对用户隐私的保护提出了更高的需求,视频会议虚拟背景功能踏浪而来。相比于云端的高性能服务器,个人场景的视频会议载体主要是各色的笔记本电脑,不同型号笔记本电脑性能参差不齐,而视频会议对实时性要求较高,会议背景不一,这对端侧算法的性能提出了更严苛的需求。

实时性需求决定了端侧人像分割模型要做到足够轻量化,而小模型对一些困难场景(例如人像边缘与背景相似等)的处理能力较弱,同时对于数据比较敏感,这易导致背景错分为人像、人像边缘模糊等,针对这些问题,我们分别在算法和数据工程上,进行了一些针对性地调整和优化

算法探索

1) 优化边缘:

第一种优化边缘的方法构造边缘损失,参考 MODNet,通过对人像标签进行膨胀腐蚀操作,得到人像边缘区域标签,通过对边缘区域计算损失来增强网络对边缘结构的提取能力。

第二种优化边缘方法是使用 OHEM 损失,相比于人像主体区域,人像边缘区域往往容易错误分类,在训练时,通过对人像分割的预测结果进行在线难例挖掘,可以隐性地优化人像边缘区域。

2) 无监督学习:

第一种无监督学习方法通过数据增强实现,参考 PortraitNet,对于给定的一张输入图片图片,对其颜色、高斯模糊和噪声组成的数据增强处理后得到变换后的图片图片,虽然图片相对图片在外观上发生了变化,但变化前后两张图片对应的前景人像是一样的,因此,可以通过 KL Loss 约束数据增强前后图片预测结果保持一致,从而增强网络对光照、模糊等外界条件变化的鲁棒性。

第二种无监督学习方法是通过利用无标签的真实图片和背景图片进行对抗训练实现,参考 Background Matting,在模型训练时,通过引入额外的鉴别器网络,判断输入鉴别器的图片是由网络预测的人像前景和随机背景合成的,还是真实的图片,减少人像预测结果中存在的 artifact。

3) 多任务学习

多任务学习通常是指增加与原任务相关的子任务进行协同训练,提升网络在原任务上的效果,例如 Mask-RCNN 中检测和分割任务。人像分割的难点之一是当视频中的人像做出一定动作时(例如挥手等),对于手臂等部位的分割效果较差。为了更好的捕捉人体的信息,我们尝试在模型训练引入人体姿势信息进行多任务训练,参考 Pose2Seg,通过解析人像姿势来更好地的捕捉肢体动作信息。在测试时,只需使用训练的人像分割分支进行推理,能在提升分割的准确率的同时,兼顾了性能。

image.png

4) 知识蒸馏

知识蒸馏被广泛的用于模型压缩和迁移学习中,通常采用 teacher-student 学习策略。首先事先训练性能较强的 teacher 模型(例如 DeeplabV3+),在训练 student 模型时,利用 teacher 模型生成的软标签作为监督信息,指导 student 模型训练。相比于原始的 one-hot 标签,teacher 模型预测的软标签包含了不同类别数据结构相似性的知识,使得 student 模型训练更易收敛。

image.png

5) 模型轻量化

针对业务场景的需要,我们选用了基于 mobilenet-V2 网络的 U-net 结构,根据 mnn 算子的特点,对模型进行优化裁剪,以满足实际业务性能需求。

6) 策略优化

在实际开会场景中,不少参会人员在很多时候是保持不动的。在这种状态下,用实时帧率去做人像分割,存在一定的浪费资源。针对这种场景,我们设计了一种边缘位置帧差法,基于相邻帧人像边缘区域的变化,对人像是否移动进行准确判断,同时该方法能够有效去除人物说话、表情变化、外部区域变化等干扰。边缘位置帧差法可以有效降低参会人员静止时人像分割算法的频率,从而大大降低了能耗。

数据工程

人像分割对于数据较为依赖,现有的开源数据集与会议场景有较大差异,而分割数据的标注获取费时费力,为了降低数据获取成本、提升已有数据的利用率,我们尝试在数据合成、自动化标注上做了一些尝试。

1) 数据合成

在数据合成时,我们利用已有模型筛选出部分较好的子数据集,利用平移、旋转、薄板变换等方式,增加人像姿态和动作的多样性,然后与会议场景的不同背景进行融合,扩充训练数据。在数据变换时,若人像标签与边界相交,则利用坐标关系,在合成新图片时,保持标签和边界的原有相交关系,避免人像与边界分离、浮空等现象,让生成的图片更加真实。

2) 自动化标注、清洗

通过利用现有多种开源的检测、分割、matting 算法,设计了一套高效的自动化标注、清洗工具,进行数据的快速自动化打标和清洗质检,降低数据标注获取成本(标注有效数据 5W+)。

算法成果

目前该算法已在内部上线使用。

1) 技术指标

image.png

2) 效果展示

照片换背景场景

除了实时通讯场景,我们利用人像分割算法在互动娱乐场景也进行了一些尝试,例如照片换背景,效果如下图所示。

image.png

参考文献

  1. BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
  2. BiSeNet V2: Bilateral Network with Guided Aggregation for Real-time Semantic Segmentation
  3. DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation
  4. Semantic Flow for Fast and Accurate Scene Parsing
  5. Boundary-sensitive Network for Portrait Segmentation
  6. PortraitNet: Real-time Portrait Segmentation Network for Mobile Device
  7. SINet: Extreme Lightweight Portrait Segmentation Networks with Spatial Squeeze Modules and Information Blocking Decoder
  8. Background Matting: The World is Your Green Screen
  9. Boosting Semantic Human Matting with Coarse Annotations
  10. Is a Green Screen Really Necessary for Real-Time Human Matting?
  11. Real-Time High-Resolution Background Matting
  12. SwiftNet: Real-time Video Object Segmentation
  13. Pose2Seg: Detection Free Human Instance Segmentation
  14. Distilling the Knowledge in a Neural Network
点赞 0 收藏(0)    分享
相关标签: 虚拟背景
问题没解决?让chatGPT帮你作答 智能助手
0 个评论
  • 消灭零评论