在视频通话中,视频前处理模块能够有效提高用户参与实时视频时的体验,并保护用户隐私,主要包括虚拟背景、美颜和视频降噪等。腾讯会议在视频前处理场景下,遇到哪些技术难点,如何进行优化?【腾讯技术开放日 · 云视频会议专场】中,腾讯云高级工程师李峰从算法和工程优化的角度进行了分享。算法
视频前处理场景探索性能优化
视频是连续的,在转播的时候须要通过编码和解码的流程,因此视频处理须要分为前处理和后处理。所谓前处理就是指编码前的视频处理,好比背景虚化。所谓后处理就是指解码后的视频处理,好比视频超分。服务器
有哪些前处理算法能够应用在视频会议的处理场景下呢?理想状况下,多多益善,可以想到的均可以落地,可是考虑到会议场景的计算资源很是有限,并且要不影响其它高优先级的服务,因此须要挖掘用户最迫切的需求,利用有限的计算资源为用户提供更好的视频体验。网络
数据分析发现会议场景下你们开摄像头的比例不是很高,咱们分析主要有三个缘由:第一担忧泄漏隐私,第二不够自信,第三画质很差。针对这几个点腾讯会议陆续推出了虚拟背景、美颜、视频降噪、暗场景加强等一系列的处理算法。框架
虚拟背景能够很好的保护用户隐私,创造一个公平的环境,这里贴了一个用户的反馈,这是一个在线课堂老师反馈虚拟背景能够为许多孩子取消歧视,让家庭背景、家庭条件再也不成为孩子的负担。美颜的话,相信你们都是很是了解,也是常常用的,它能够鼓励你们参与到视频通话的场景中来。视频降噪能够下降摄像头的噪声,消除灯光形成闪烁的问题,进而提高视频画面的质量。暗场景加强能够提高暗光场景下的视频体验。分布式
虚拟背景的算法探索与实践函数
所谓虚拟背景是指容许用户在使用腾讯会议期间上传自定义的图片或者视频,做为视频场景下的虚拟背景或者将视频背景模糊掉,知足用户保护隐私和个性化视频的需求。性能
虚拟背景的框架主要包括数据、模型、损失、训练和前向推理引擎五大模块。学习
对于深度学习任务,你们都知道数据的数量和质量是效果的关键。因为腾讯会议中的数据很是敏感,涉及很是多的隐私,咱们拿不到用户使用时的真实数据,因此腾讯会议采起了自采和精细标注两种方案,目前数据流程是一种闭环式的迭代优化。训练过程当中数据也会作一系列的增广,好比说颜色变换、随机噪声、随机模糊等等来增长数据的多样性。测试
从模型层面,利用编码器获得输入图像的多层特征表示,其中第一层分辨率比较高,编码了人像的边缘细节信息,而高层特征空间分辨率比较低,只能编码人像的抽象语义信息。若是咱们将高层特征表示送到解码器里进行融合学习,解码过程当中分辨率又会逐级回升。腾讯会议还会在解码以后接一个轻量级的调优模块,这样就能够在高分辨率上恢复更多的细节。
网络输出后还要通过一系列的膨胀、腐蚀、边缘、羽化等等多项后处理算法的优化。损失函数也是训练流程的关键,它决定了这个网络可以聚焦在哪一些目标上进行学习,腾讯会议目前采用了多损失约束的方式来指导网络的学习。
- 交叉熵损失是对每一个象素点进行约束,分割任务中的一项基础损失。
- 为了增长时域的平滑性,要约束网络对输入通过轻微干扰和原输入的距离,这样能够在必定程度上模拟实际运行中先后帧之间的稳定性和连续性。
- 边缘准确性对于人像分割的直观体验影响很是大,因此腾讯会议还利用了一个单独的分支和边缘损失来提高网络边缘处理的准确性。
- 虚拟背景是跑在各个端上,而不是服务器上,这就对神经网络的高效、轻量提出很是高要求,这也使得网络的深度和宽度很是受限,学习能力相比服务器端的模型有较大程度的降低。为了弥补网络带来的准确率的降低,腾讯会议采用了多种蒸馏方式,约束线上的小模型与服务器之间大模型的距离,使得小模型与服务器模型之间的输出分布尽可能靠近。这种多蒸馏损失能够提高蒸馏的有效性,从而提高线上小模型的准确率与融贯性。实际训练的过程当中,腾讯会议还采用了分布式等能够快速提高训练速度的多种优化的方式,而且支持在线和离线两种蒸馏方式。
最后是前向推理引擎,它能够对算法模型进行针对性的异构和并行计算优化,从而达到性能和效果之间良好的平衡,是算法最终可以落地的一个关键技术。
1. 数据
数据流程闭环是怎么造成的?具体来说,首先是创建一个自采池,存放自采的数据。须要注意的是,因为用户数据的敏感性,腾讯会议拿不到任何线上实际的数据,因此只能模拟线上会议的场景来进行采集,好比你们一块儿进行自采,若是说这时候有用户反馈的话,会根据用户反馈的文字或者图片、或者视频的描述,来增长模拟布置相似的场景进行采集补充。
对于池子里面的数据会不断进行标注,而且把标注的数据提交到标注池,而后将标注后的数据提供给线上模型进行迭代训练。对于线上模型,会将自采的数据抽样进行自测和压测,将分割不达标的图片添加到自采池和badcase池。而且咱们会对badcase池里的全部badcase经过分析特色进行存量分布归类,对归类的数据再进行特定的补充采集。
这就是整个数据流程的闭环式迭代优化,它有效推进了线上模型质量的持续提高。
2. 模型
腾讯会议目前采用了经典的编码、解码、refine的结构。编码器会不断地下降分辨率并逐级抽象,而解码模块则是对多级特征进行融合学习,实现分辨率回升。同时腾讯会议还采用了多任务约束,下面的图中能够看到实验结果,通过多损失约束限制,输出的图会更加准确,边缘的一致性也获得了提高。
3. 损失
前面提到为了弥补网络带来的准确率的降低,腾讯会议采用了多种蒸馏方式约束线上的小模型与服务器之间大模型的距离。
为何要作蒸馏?蒸馏做为一种只增长训练耗时而不增长线上测试耗时的方法,在损失约束中被大量采用,对于线上超轻量的小模型来讲,蒸馏能够比较好的缩小服务器、教师网络和学生网络之间的差距。而且在实际操做过程当中发现通过蒸馏后的学生网络可以比蒸馏前的网络具备更好的稳定性。
目前腾讯会议支持离线蒸馏和在线蒸馏两种方式。其中离线蒸馏是单独训练老师网络,而后固定老师网络的参数,经过老师网络指导学生网络进行学习。在线蒸馏是教师网络带着学生网络一块儿学习,这样对网络而言既包括了教师网络的自我学习,还有同步指导学生模型的蒸馏学习,也包括学生网络的自我学习。
经常使用的蒸馏损失包括下面图中列出来的三种。Pixelwise蒸馏是象素级的,Affinity蒸馏是临近关系的方式,Attention蒸馏是注意力的方式。
- 象素级的蒸馏主要做用在输出层,也就是说利用教师网络的输出做为软标签约束学生网络的输出。
- 基于Affinity矩阵的蒸馏的时候,教师网络和学生网络分别计算各自的Affinity矩阵,这种可以建模象素间的关系,而后该领域的信息知识从教师网络就迁移到了学生网络里面。虽然信息迁移能有效补充单象素点独立建模信息不足的问题,可是计算量相对比较大。
- 腾讯会议目前采用的是第三种,注意力蒸馏的方式,它是一种高效的约束中间特征层的蒸馏方法。从图中能够看出,通过建模空间注意力特征图从三维直接降到了二维,以后再进行约束,这样能够大幅下降计算量,提高蒸馏的效率。
4. 前向推理引擎
深度学习算法落地的过程当中,前向推理加速是很是重要的一环。前向推理简单来讲,如图所示,以输入数据为出发点,通过一层层的神经网络获得最终的输出数据。层之间的数据一般是用tensor表示,每一个tensor就表示了一个多维矩阵。
腾讯会议自研推理引擎主要有三个方面的优点:
- 音频是腾讯会议的核心能力之一,自研推理引擎在音频算法性能优化方向积累丰富,并已经上线了量化和量化训练的支持;
- 桌面端是腾讯会议的核心场景之一,自研推理引擎在桌面端的异构计算和并行计算优化方向积累丰富,有力的支撑了桌面端的音视频算法。
- 自研推理引擎能够快速定制化和响应业务的需求,特别是对于腾讯会议这种快速迭代的产品来讲,快速定制化和迭代的能力很是重要。
目前腾讯会议前向推理框架主要分为三层:引擎层、逻辑层、接口层,从下到上。其中引擎层主要负责对各类神经网络算子进行计算优化,而逻辑层封装了与各个业务相关的逻辑,接口层是提供了跨平台的业务接口。
下面列了一些目前腾讯会议前向推理引擎支持的加速方案,因为不一样的硬件或者处理器、设计理念不一样,应用场景也不一样,所以不一样的方法在不一样的处理器上会有不一样的性能瓶颈,因此须要具体问题具体分析。举个例子,一般来讲CPU适合处理逻辑比较复杂的计算,而GPU适合处理数据并行的计算密集型运算。并且还须要考虑在不一样处理器之间的数据交互可能给性能带来的影响,这个消耗有时候会成为总体算法性能的一个瓶颈。以虚拟背景为例,视频人像分割深度学习模型适合运行在GPU上,然后处理的一些算法就更适合运行在CPU上。
看一下跟友商的虚拟背景效果的直观体验对比视频,在某些场景下腾讯会议的体验要稍好一些,好比抬手的场景,腾讯会议要分割的更准确,左边是腾讯会议。
美颜功能的算法探索与实践
你们常常用美颜。它能够提高用户的视频体验,鼓励用户参与到语视频通话的场景中来。从技术的角度来讲,美颜一般包括磨皮、美形和美妆三个部分。
看一下美颜总体解决方案的框架,它包括三个部分:预处理模块、全局美化模块、局部调整模块。输入图像首先进入预处理模块,经过全局降噪图像处理提高图像质量,在实际应用中若是检测到人脸就能够进行全局美化或者局部美化,不然就直接输出降噪后的图像。全局美化模块实现图片总体美化效果,好比全局磨皮、非皮肤区域的润化色调调节,通过全局美化后的图片是能够具有比较好的总体视觉,是能够直接输出的。固然,也能够进一步进行局部调整,在这里是基于人脸关键点配准设计的一套算法,主要是实现五官立体、化妆等局部内容调整,最后是将调整后的图片输出。
在不断优化美颜解决方案的实践过程当中,咱们会遇到一些困难,好比:
如何在性能和效果之间取得平衡?
目前腾讯会议上线的是全局美化,仍是由于性能问题要作出取舍。咱们会有更多的针对不一样机型采用不一样的美颜策略,好比中低端的机型采用磨皮美白,高端机型能够放开美形、美妆这样的能力。
强噪声的摄像头数据下如何保证美颜体验?
在进行美颜磨皮的时候须要考虑三个因素,一个是光滑皮肤的区域,二是保留人脸五官的细节,三是抑制噪声。目前腾讯会议是在图像预处理的时候会采用降噪的方式先对总体的图像进行总体预处理。要注意的是,要避免使用锐化的细节强化的处理,那样有可能致使噪声更加凸显。
为何人脸检测和人脸配准要分开设计?
一方面是基于性能的考虑,没有人脸的时候考虑降噪和加强的基本操做,有人脸的时候才须要进行美化处理。另一方面是模型的稳定性,直接对图像进行人脸配准每每包含大量背景冗余信息,会形成关键点配准难度加大并且不稳定,若是通过人脸检测以后,只对人脸区域进行人脸配准的话,一般结果是比较稳定的。
美颜策略如何适配巨大的分辨率跨度?在视频会议里面分辨率跨度大,好比网络的因素就会使得图像分辨率会在必定的范围之间波动。这里腾讯会议主要分了三种场景:第一种就是在分辨率很低的时候,会直接放弃磨皮,由于这时候整个画面比较糊,再使用磨皮每每致使整个画面更糊。第二是在中段的分辨率里面,那么采用一种叫作上采样而后进行美化以后再进行下采样的方式,这样会有优化效果,可是会增长必定的计算开销。第三是高分辨率,那就能够直接使用前面讲的那些美颜算法。
应用场景中如何精简美颜处理复杂度?
若是前面背景虚化已经把人像分割出来了,那么这时候其实不须要浪费计算资源对背景进行磨皮的操做,相似这种都是能够下降美颜处理复杂度的方式。