乐趣区

关于阿里云:直播时各种背景是怎么实现的聊一聊虚拟背景背后的技术

作者|羿川

审校|泰一

虚构背景依靠于人像宰割技术,通过将图片中的人像宰割进去,对背景图片进行替换实现。依据其应用的利用场景,大体能够分成以下三类:

直播场景 :用于气氛营造,例如教育直播、线上年会等;

实时通信场景 :用于爱护用户隐衷,例如视频会议等;

互动娱乐场景 :用于减少趣味性,例如影视编辑、抖音人物特效等。

实现虚构背景须要用到哪些技术?

实时语义宰割

语义宰割旨在对图像的每个像素进行标签预测,在主动驾驶、场景了解等畛域有着宽泛的利用。随同挪动互联网、5G 等技术的倒退,如何在算力受限的终端设备进行高分辨率的实时语义宰割,日益成为迫切的需要。上图列举了近年来的实时语义宰割办法,本大节将对其中的局部办法进行介绍。

BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation

先前的实时语义宰割算法通过限定输出大小、缩小网络通道数量、舍弃深层网络模块来满足实时性的需要,然而因为抛弃过多空间细节或者就义模型容量,导致宰割精度大幅降落。因而,作者提出了一种双边宰割网络(BiseNet,ECCV2018),网络结构如上图所示,该网络由空间门路(Spatial Path)和语义门路(Context Path)组成,别离用于解决空间信息缺失和感触野放大的问题。

空间门路通过通道宽、深度浅的网络来获取高分辨率特色,保留丰盛的空间信息;而语义门路则是采纳通道窄、深度深的轻量骨干模型,通过疾速下采样和全局均匀池化提取语义信息。最初利用特色交融模块(FFM)对两个门路的特色进行交融,实现精度和速度之间的均衡。该办法在 cityscapes 测试集上的 MIOU 为 68.4%。

升级版 BiseNetV2 连续了 V1 版本的思维,网络结构如上图所示,V2 版本去除了 V1 空间门路中耗时的跳跃链接(skip connection),减少双向聚合层(Aggregation Layer)减少两个分支之间的信息聚合,并提出了加强训练策略进一步晋升宰割成果,在 cityscapes 测试集上的 MIOU 晋升到了 72.6%,在应用 1080Ti 的 TensorRT 上 FPS 能够达到 156。

DFANet:Deep Feature Aggregation for Real-Time Semantic Segmentation

DFANet(CVPR2019)设计了子网聚合和子阶段聚合两种特色聚合策略来晋升实时语义宰割的性能。DFANet 的网络结构如上图所示,蕴含 3 个局部:轻量骨干网络、子网聚合和子阶段聚合模块。轻量骨干网络采纳了推理速度较快的 Xception 网络,在其顶层退出全连贯注意力模块增大高层特色的感触野;子网聚合通过重用先前骨干网络提取的高层特色,将其上采样后作为下一个子网的输出,增大感触野的同时,细化预测后果;子阶段聚合模块则是利用不同子网相应阶段的特色交融多尺度构造细节,加强特色的判断能力。最初通过轻量的解码器,交融不同阶段输入的后果,从粗到细地生成宰割后果。在 Cityscapes 测试集上 MIOU 为 71.3%,FPS 为 100。

Semantic Flow for Fast and Accurate Scene Parsing

受到光流的启发,作者认为由同一张图片生成的任意两个不同分辨率的特色图之间的关系,也能够用每个像素的流动示意,提出了 SFNet(ECCV2020),网络结构如上图所示。

因而,作者提出了语义流对齐模块(Flow Alignment Module (FAM))来学习相邻阶段特色的语义流,而后通过 warping 将蕴含高层语义的特色播送到高分辨率的特色上,从而将深层特色的丰盛语义高效流传到浅层的特色,使得特色同时蕴含丰盛语义和空间信息。作者将 FAM 模块无缝插入到 FPN 网络中交融相邻阶段的特色,如上图所示。SFNet 能在实时宰割的状况下(FPS 为 26),在 Cityscapes 能够达到 80.4% mIoU。

人像宰割

人像宰割是语义宰割的子工作,指标是将图片中的人像从背景中宰割进去,属于二类宰割。相比于语义宰割,人像宰割绝对简略,个别利用于手机端等端侧设施,目前的钻研指标大体能够分为两类,一是通过改良网络设计轻量高效人像宰割模型,二是加强人像宰割的细节。

Boundary-sensitive Network for Portrait Segmentation

BSN(FG2019)次要关注于晋升人像的边缘宰割成果,次要通过两种边缘损失进行实现,别离是针对每幅人像的边缘 Individual Kernel 和针对人像数据集计算的均匀边缘 Global Kernel。Individual Kernel 与之前的办法相似,通过收缩、侵蚀操作获取人像边缘标签,不同的中央在于,它将边缘作为辨别于前景、背景的第三种类别,用 soft label 示意,从而将人像宰割转变为 3 类宰割问题,如上图。Global Kernel 的标签则是通过统计人像数据集边缘平均值失去,通过 Global Kernel 通知网络人像大抵所在位置的先验信息。同时,为了提供更多的人像边缘先验,作者减少了辨别长短发边缘的二分类分支,与宰割网络进行多任务协同训练。BSN 在 EG1800 人像宰割测试集的 MIOU 为 96.7%,但在速度上并无劣势。

PortraitNet:Real-time Portrait Segmentation Network for Mobile Device

PortraitNet(Computers & Graphics 2019)基于深度可拆散卷积设计了一个轻量的 u-net 构造,如上图所示,为了减少人像边缘的宰割细节,该办法通过对人像标签进行收缩、侵蚀操作生成人像边缘标签,用于计算边缘损失(Boundary loss)。同时,为了加强对光照的鲁棒性,该办法提出了一致性束缚损失(Consistency constraint loss),如下图,通过束缚光照变换前后图片的人像宰割后果保持一致,加强模型的鲁棒性。PortraitNet 模型参数大小为 2.1M,在 EG1800 人像宰割测试集的 MIOU 为 96.6%。

SINet:Extreme Lightweight Portrait Segmentation Networks with Spatial Squeeze Modules and Information Blocking Decoder

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

人像抠图

一张图像能够简略的看成是由两局部组成,即前景(Foreground)和背景(Background),图片抠图,就是将一张给定图像的前景和背景辨别开来,如上图所示。因为图片抠图是一个欠束缚问题,传统抠图算法和晚期的基于深度学习的算法办法,次要通过输出额定的语义信息作为束缚,最常见的是由前景、背景和不确定区域组成的 trimap,如下图所示。抠图算法的精度受 trimap 的精度影响很大,当 trimap 较差时,基于 trimap 的算法的预测后果降落重大。trimap 的获取次要通过其余算法生成(如语义宰割)或人工标注生成,然而通过其余算法生成的 trimap 个别较为毛糙,而人工标注准确的 trimap 则费时费力。trimap-free 的抠图算法逐步进入人们的视线,本大节将次要对近期的 trimap-free 的人像抠图算法进行介绍。

Background Matting: The World is Your Green Screen

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

该办法的模型构造如上图所示,模型解决流程大体如下:给定输出图片和背景图片,首先通过宰割模型(如 deeplab)获取前景图片的粗宰割后果,而后同 Context Switching Block 模块,对不同的输出信息的组合进行抉择,随后输出到解码器中同时预测前景和 alpha 通道。训练过程分成两个阶段,首先在 Adobe 的合成数据集上进行训练,为了升高合成图片和实在图片的 domain gap 造成的影响,应用 LS-GAN 在无标签的实在图片和背景图片上进行第二阶段的反抗训练,通过拉近预测的 alpha 通道合成的图片和实在图片的间隔,晋升抠图的成果。当背景变换较大或与前景差别较大时,该办法的成果不佳。

Boosting Semantic Human Matting with Coarse Annotations

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

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

试验成果如上图所示,相比于只应用精标数据训练,联合粗标数据对于网络语义信息的提取有较大的帮忙。同时,联合 QUN 和 MRN,能够对已有数据集的粗标数据进行细化,升高精密标注的获取老本。

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

现有的人像抠图算法,或须要额定输出(如 trimap、背景), 或须要应用多个模型,无论是获取额定输出的开销还是应用多个模型的计算开销,使得现有办法无奈实现人像抠图的实时利用。因而,文章作者提出了一种轻量的人像抠图算法,只应用单张输出图片即可实现实时人像抠图成果,在 1080Ti 上解决 512×512 大小的图片,能够达到 63FPS 的成果。

如上图所示,本文的办法能够分为 3 个局部,首先是在标注数据上通过多任务监督学习的形式训练人像抠图网络,而后通过 SOC 自监督策略在无标注的实在数据上进行微调,加强模型泛化能力;在测试时,应用 OFD 策略晋升预测后果的平滑性,上面会对这 3 个局部进行具体介绍。

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

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

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

Real-Time High-Resolution Background Matting

现有的人像抠图算法尽管能够生成比拟精密的抠图后果,却无奈做到实时地解决高分辨率的图片,例如 Background Matting 在 GPU 2080Ti 上每秒只能解决约 8 张 512×512 大小的图片,这无奈满足实时利用的需要。文章作者发现,对于高分辨率的图片,只有少部分区域是须要精密宰割(如上图所示),大部分区域只需粗宰割即可,如果让网络只对须要精密宰割的少部分区域进行进一步的宰割优化,就能够节俭大量的计算。作者借鉴了 PointRend 的思路,基于 Background Matting,提出了一种实时处理高分辨率图片的双阶段人像抠图网络,在 2080Ti 上解决高清图片(分辨率为 1920×1080)能够达到 60FPS,对于 4K 图片 (分辨率为 3840×2160),能够达到 30FPS。

本文提出的双阶段网络框架如上图所示,由根底网络和细化网络组成。第一阶段的根底网络采纳了相似 DeeplabV3+ 的 encoder-decoder 构造,用于生成人像粗宰割后果、前景残差、谬误预测图和蕴含全局语义的暗藏特色。第二阶段的细化网络,利用第一阶段产生的谬误预测图,挑选出须要进行宰割细化的前 k 个图片块,进行进一步宰割优化,最初将细化后的宰割后果和间接上采样放大的粗宰割后果进行交融,失去最终的人像宰割后果。和其余办法的比照,本文办法在速度和模型大小上均有显著的晋升,如下图所示。

视频人像宰割

视频指标宰割(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,通过解析人像姿态来更好地的捕获肢体动作信息。在测试时,只需应用训练的人像宰割分支进行推理,能在晋升宰割的准确率的同时,兼顾了性能。

4) 常识蒸馏

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

5) 模型轻量化

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

6) 策略优化

在理论散会场景中,不少参会人员在很多时候是放弃不动的。在这种状态下,用实时帧率去做人像宰割,存在肯定的浪费资源。针对这种场景,咱们设计了一种边缘地位帧差法,基于相邻帧人像边缘区域的变动,对人像是否挪动进行精确判断,同时该办法可能无效去除人物谈话、表情变动、内部区域变动等烦扰。边缘地位帧差法能够无效升高参会人员静止时人像宰割算法的频率,从而大大降低了能耗。

数据工程

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

1) 数据合成

在数据合成时,咱们利用已有模型筛选出局部较好的子数据集,利用平移、旋转、薄板变换等形式,减少人像姿势和动作的多样性,而后与会议场景的不同背景进行交融,裁减训练数据。在数据变换时,若人像标签与边界相交,则利用坐标关系,在合成新图片时,放弃标签和边界的原有相交关系,防止人像与边界拆散、浮空等景象,让生成的图片更加实在。

2) 自动化标注、荡涤

通过利用现有多种开源的检测、宰割、matting 算法,设计了一套高效的自动化标注、荡涤工具,进行数据的疾速自动化打标和荡涤质检,升高数据标注获取老本(标注无效数据 5W+)。

算法成绩

目前该算法已在外部上线应用。

1) 技术指标

2) 成果展现

照片换背景场景

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

参考文献

  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

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实际技术文章,在这里与音视频畛域一流工程师交换切磋。公众号后盾回复【技术】可退出阿里云视频云产品技术交换群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。

退出移动版