题目:Reparo: Loss-Resilient Generative Codec for Video Conferencing 链接:https://arxiv.org/abs/2305.14135 作者:Tianhong Li,Vibhaalakshmi Sivaraman,Pantea Karimi,Lijie Fan,Mohammad Alizadeh,Dina Katabi等人 内容整理:胡玥麟
视频会议中常常受到网络丢包的影响,导致视频质量下降甚至视频冻结。传统解决方案如重传丢失的数据包在实时应用中往往不切实际。采用前向纠错(FEC)技术恢复丢失的包具有挑战性,因为很难设定合适的冗余度。
提出了一个基于生成式深度学习模型的抗丢包视频会议框架Reparo。核心思想是在丢帧或部分丢帧时利用生成模型根据已接收的数据生成丢失的内容,而不是发送冗余包或请求重传。具体包括:
Reparo由五部分组成:
Reparo将编解码器组合称为神经编解码器,而其他组件则在编解码器之上帮助进行损失恢复。编码器、封装器和比特率控制器位于发送端,而损耗恢复模块和解码器位于接收端。
图 1
使用一个名为VQGAN的标记器tokenizer,它由一个编码器、一个解码器和一个码本组成。编码器是一个卷积神经网络(CNN),它在图像中获取补丁,并将它们中的每一个映射到码本中最近的邻居向量,即最近的标记。解码器也是一个CNN,它接受表示图像的令牌并再现原始图像。 VQGAN实现的压缩取决于它的两个参数:每帧使用的令牌token数量和码本的大小。由于图像被分成小块,每块映射到一个令牌,令牌的数量指示图像中每个补丁的大小。随着令牌数量的增加,每个补丁变得越小。
图 2
在将原始图像编码成令牌之后,Reparo将它们分成几个数据包,以便为传输做准备。分组策略旨在避免将相邻的令牌放在同一个数据包中,因为当令牌丢失时,图像空间中最接近的令牌对恢复最有帮助。每个数据包都有一个报头,其中包括帧索引、数据包索引和数据包大小,以便接收方可以识别令牌属于哪个帧以及该特定帧有多少数据包。
视频会议应用程序经常需要调整其比特率以响应网络拥塞。在以前的工作中,这是通过改变压缩程度来满足所需的比特率来实现的。相比之下,Reparo可以通过丢弃令牌来轻松调整其比特率,因为它对丢失的令牌具有高度的弹性,并且随着损失率的增加而优雅地降级。
“自主丢弃”: 因为Reparo甚至在传输令牌之前就选择自己投放令牌。值得注意的是,Reparo可以容忍高达50%的令牌损失,对视频PSNR的影响最小,在实践中,Reparo根据帧索引和包索引确定地选择它丢弃的令牌(图3右上行)。这是为了确保接收方可以简单地根据接收到的包头中的帧和包索引来识别哪些令牌位置被丢弃了。有了这些信息,接收器可以解码(图3底部左行)比特率控制器删除的令牌的位置。
图 3
Reparo进行损失恢复的关键因素是一个深度生成模型,该模型利用收到的令牌和视频会议领域知识来生成丢失的令牌。例如,生成模型可以基于这些标记的子集合成与特定人脸相关的所有标记。类似地,它可以根据前一帧的标记生成与移动的手相对应的标记。
网络体系结构
将接收到的令牌按照它们在原始帧中的位置组织起来作为输入。丢失的令牌用一个特殊的令牌表示,称为Mask令牌[M],如图4所示。它还将过去T帧中的令牌作为输入,这些令牌为场景提供了上下场景信息。网络使用一种称为Vision Transformer(ViT)的通用神经网络架构。ViT在每一层使用一个注意力模块来聚合图像中所有令牌的信息。
图 4
为了预测缺失的令牌,注意力模块使用接收到的令牌,并根据它们与缺失令牌的相关性对它们进行加权。为了将标准视觉转换器结构扩展到视频片段,我们使用了时空注意力模块。在每个 transformer 块中,我们对时间维度(跨相邻帧)执行注意,然后对帧内的空间维度执行注意。这使我们的损失恢复模块能够利用同一帧的空间信息和连续帧的时间信息。具体来说,为了生成缺失的令牌,模块可以在空间和跨帧中使用附近的令牌,因为这些令牌与缺失的令牌有很强的相关性。按时间和空间顺序执行注意力显著降低了计算成本。同时对空间和时间进行注意力需要占用GPU内存
,先对时间进行注意力然后对空间进行注意力只需要占用GPU内存
.
时空ViT在解码当前帧时利用前六帧,允许跨帧重用接收到的令牌,以实现更好的比特率和损失率。无论前一帧的生成结果如何,每个帧都被生成和解码,并且完全基于实际接收到的前一帧的令牌。如果在之前的帧中丢失了更多的令牌,则当前帧生成的质量可能会更差,但与经典编解码器不同,Reparo永远不会停止生成或解码。
Baseline : ULPFEC和flexFEC是WebRTC中包含的两种音频和视频丢包恢复方案。Tambur是最近在VP9视频编解码器之上的基于流码的FEC解决方案,已被证明比传统的基于块的FEC技术性能更好。实验将Tambur的延迟期限设置为3帧,所有baseline的带宽开销约为50%。帧率设置为30fps,视频分辨率设置为512×512,一般用于视频会议。 我们使用512×512帧大小并将其压缩为32×32令牌。码本大小为1024,每个令牌需要10位来表示其索引。
实验报告了不同损失水平下基线和Reparo的平均和最差10% PSNR、SSIM和LPIPS。PSNR和SSIM越高越好,LPIPS越低越好。我们改变了Reparo的目标比特率和基线,以覆盖不同的实现比特率。在所有有损条件下,Reparo的视觉质量都明显好于基线,而在没有损耗的情况下,它也能达到类似的效果。
图 5
在不同丢包率(比特率为 320 Kbps)下,具有基线和Reparo的帧间 PSNR 分布如下所示。框表示第25和75百分位的 PSNR,框内的线表示中位数PSNR,而细线表示平均 PSNR±1.5×standard偏差。无论损耗水平如何,Reparo 都能将其PSNR保持在35 dB左右的窄带内,而 Tambur 的最差帧在更高的损失率下PSNR降至20 dB以下。
图 6
图 7 时间序列比较了 Tambur 和 Reparo 在一个视频和损失模式。每当一组帧丢失,相应的PSNR降低时,Tambur都会经历短暂的冻结。Reparo继续渲染帧,它的视觉质量在整个间隔期间更加稳定。
图 7
图 8 比较在Reparo和基线之间的非渲染帧的百分比。在所有的损失水平下,所有baseline都比Reparo经历更多的非渲染帧。
图 8
图9 :Tambur 和 Reparo 在 Tambur 短暂冻结8帧期间的定性结果。GE丢包通道在4、5、6、8帧处于bad状态,导致VP9+Tambur和Reparo丢包。由于丢失数据包,Tambur从第3帧到第10帧完全冻结,导致非常低的PSNR。另一方面,虽然与Tambur经历相同的GE损失状态,但它产生了大部分帧并保持了较高的PSNR。即使在30 PSNR以下的帧,它仍然产生合理的输出,并准确地跟踪手部运动.
图 9
图 10:每帧大小的VP9+Tambur和Reparo为一个3分钟的视频。Reparo在所有帧中保持相同的帧大小,而VP9在相邻帧和大周期关键帧之间显示差异。
图 10
图 11 :在固定链路容量为320 Kbps时,不同目标比特率下的平均PSNR。Reparo的平均PSNR随着目标比特率的增加而提高。然而,VP9+Tambur在超过120kbps的目标比特率时,由于队列中不适合大的关键帧,它的固定大小队列开始出现丢失。
图 11
当前的Reparo实现是在PyTorch中实现的,并且使用了比传统视频编解码器和基于 FEC 的方法计算更密集的 transformer。它需要相当于苹果 M2 Max GPU 来实时运行。这限制了可以部署Reparo的设备范围,并且目前的实现不适合智能手机或平板电脑等低端设备。然而,可以使用更高效的模型架构、硬件设计和知识蒸馏等技术来加速边缘设备的机器学习模型。随着时间的推移,更强大的gpu被集成到边缘设备中,自然为在其上运行复杂的神经网络铺平了道路。