刘亚男
(安徽工商职业学院 管理学院,安徽 合肥 231131)
随着视频处理技术的发展,立体视频开始成为虚拟现实和增强显示应用厂商的关注焦点[1-2]。立体视频能够捕获三维的空间和对象,并能够描述物体在六个自由度上的运动,从而使观看者可以自由更改空间位置和方向。但是,由于移动终端设备的计算能力有限,无法满足渲染立体视频的算力需求。为了提高渲染效率,降低客户端处理的成本,可以将渲染任务从移动终端迁移至具备强大服务器的云计算平台上。因此,本研究提出了一种基于云计算的立体视频流处理框架,并设计了物体运动的预测模型来提高框架的渲染精度。
基于云计算的立体视频流处理框架的系统架构的简化版本如图1所示。
服务器端由两个主要部分组成:一个立体视频播放器和一个跨平台的云渲染库。
立体视频播放器在Unity中实现,并播放一个MP4文件,该文件具有一个包含压缩纹理数据的视频轨道和一个包含体积对象的压缩网格数据的网格轨道。在开始播放立体视频之前,播放器会注册所有必需的对象。例如,客户端可以控制那些已注册渲染视图的虚拟摄像机和体积对象。初始化后,立体视频播放器可以开始播放MP4文件。在播放期间,两个轨道都被信号分离并馈入相应的解码器(用于纹理轨迹的视频解码器和用于网格轨迹的网格解码器)。解码后,每个网格与相应的纹理同步并渲染到场景中。场景的渲染视图由Unity中的RenderTexture表示,该对象传递到我们的云渲染库中以进行进一步处理。在渲染场景时,播放器会同时向云渲染库询问先前在初始化阶段中注册的相关对象的最新位置。
我们创建了一个用C ++编写的跨平台云渲染库(如图2所示),该库可以集成到各种应用程序中。该库利用多媒体框架的实时通信插件在服务器和客户端之间进行低延迟的视频流传输,该视频流已集成到媒体管道中。此外,该库提供了一些接口,用于注册渲染场景的对象并在渲染场景时检索这些对象的最新客户端控制的转换。
在云渲染库中,网页套接字服务器用于在客户端和服务器之间交换信令数据,信令数据包括会话描述协议、交互式连接建立以及用于场景描述的特定于应用程序的元数据。此外,网页套接字连接也可用于发送控制数据。
多媒体框架模块包含媒体处理管道,该管道处理渲染的纹理并将其压缩为视频流,然后使用实时通信插件将其发送到客户端。控制器模块代表应用程序逻辑,并根据应用程序状态控制其它模块。
预测引擎实现了基于回归的预测方法,并提供了使用其它可能方法的接口。基于先前从客户端接收到的输入和所实现的算法,模块相应地更新注册对象的位置,以使渲染的场景与给定LAT之后对象的预测位置相对应。
在流会话开始之前,客户端建立与服务器的网页套接字连接,并要求服务器发送渲染场景的描述。服务器以对象和参数的列表作为响应,稍后允许客户端更新。客户端收到场景描述后,将复制场景并启动与服务器的实时通信连接。服务器和客户端通过已建立的网页套接字连接发送会话描述协议和交互式连接建立数据来开始实时通信协商过程。最后,建立连接,并且客户端开始接收与立体视频的当前视图相对应的视频流。同时,客户端可以使用网页套接字连接和实时连接将控制数据发送到服务器,以修改场景的属性。我们用JavaScript实现了网页播放器,并实现了混合现实头戴式显示器的本地应用程序。
媒体管道的输入是渲染纹理。由于渲染纹理是RGB格式,但是视频编码器需要的输入格式为YUV(Y、U和V分别代表明亮度、色度和浓度),因此使用视频转换元素将RGB纹理转换为I420格式。转换后,纹理将被传递到编码器。编码器延迟是整个延迟的重要因素,因此需要仔细评估不同编码器的编码性能并选择合适的编码器。对纹理进行编码后,将得到的视频比特流打包为实时传输协议数据包,进行加密并使用实时通信发送给客户端。
延迟的计算如式(1)所示:
T=Tserver+Tnetwork+Tclient
(1)
其中,Tserver、Tnetwork和Tclient的定义如式(2)(3)(4)所示:
Tserver=Trend+Tenc
(2)
Tnetwork=Tup+Tdown+Ttrans
(3)
Tclient=Tdec+Tdisp
(4)
其中,Trend是服务器根据实际用户姿势从立体数据渲染视图生成新帧的时间,Tenc是压缩帧的时间,取决于编码器类型和图片分辨率,Tnetwork是网络往返时间,它由传播延迟(Tup和Tdown)和传输延迟Ttrans组成。Tup是服务器从客户端检索传感器数据的时间,Tdown是服务器将压缩帧发送到客户端的时间。Tdec是在客户端设备上解码压缩帧的时间,通常比Tenc小得多,因为视频解码本质上比视频编码要快。而且,终端设备通常具有硬件加速的视频解码器,可进一步减少解码延迟。Tdisp是显示延迟,主要取决于显示的刷新率。对于60Hz的典型刷新率,Tdisp的平均值约为8毫秒,最坏情况约为17毫秒。
使用测试数据集来测试不同编码器的编码速度[3]。所使用的编码器包括了NVENC、x264、x265和Intel SVT-HEVC。测试是在服务器上进行的,服务器的操作系统是Ubuntu 21.04 Hirsute Hippo,中央处理器是英特尔至强Gold 6328H 处理器(22 M高速缓存,2.80 GHz)。
在测试结果中(图3),观察到NVENC的H.264和HEVC编码器都比x264和x265编码器要快(均使用超快速预设和零延迟调整)。NVENC能够在我们的测试数据集中对1080 p和4 K视频进行编码,编码速度分别高达800 fps和200 fps。还观察到,对于某些序列,HEVC编码比H.264编码要快,这种差异是由于HEVC的GPU实现效率更高引起的。
在实验中测试的所有低延迟预设都关闭了B帧以减少延迟。尽管如此,我们观察到NVENC在PSNR方面获得的图像质量与其他经过测试的编码器(使用低延迟预设)相当。根据分析的结果,决定在系统中使用NVENC H.264(高性能预设)。
设计了一个框架来测量系统的延迟。在云端的实例上运行服务器应用程序,而客户端应用程序在网页浏览器中运行,该浏览器通过WiFi连接到互联网。实现了一个服务器端控制台应用程序,该应用程序根据从客户端接收的控制数据发送预定义的纹理,而这些纹理由具有不同颜色的简单垂直条组成。
在客户端,实现了一个基于网页的应用程序,该应用程序连接到服务器应用程序并将接收到的视频流呈现到屏幕上。由于客户端知道这些纹理的外观,因此它可以评估传入的视频流并确定何时在屏幕上呈现所请求的纹理。客户端应用程序将P1发送到服务器后,它将立即启动计时器,并在每个网页浏览器窗口重绘事件时检查屏幕中的F1。重绘事件与显示器的刷新率匹配,一旦检测到纹理F1,客户端就停止计时器并计算延迟T。
建立连接后,用户可以通过定义独立测量的数量来开始会话。将每个视频帧的大小设置为512×512像素。使用配置有超快预设和零延迟调整的x264对数据流进行编码流,编码速度约为80 fps。设置客户端执行100次延迟测量,并计算平均、最小和最大的M2P延迟。结果表明,TM2P在41 毫秒和63毫秒之间波动,并且测得的平均延迟为58毫秒。
减轻基于云的渲染系统中增加的延迟的一项重要技术是预测用户的未来姿势。将设计用于运动预测的统计预测模型,并使用真实的用户轨迹评估其性能。
实验采用的运动轨迹数据集是从混合现实头戴式显示器收集的,该数据集记录了用户在6DoF空间中的移动轨迹。由于从混合现实头戴式显示器获得的原始传感器数据在60 Hz下不均匀采样,因此对数据进行插值以获得时间上等距的采样。使用线性插值对位置数据进行上采样,使用旋转的球面线性插值对旋转数据进行上采样[4]。最后,获得了采样率为200 Hz的均匀采样数据集。
使用简单的自回归模型根据其过去值的时间序列来预测将来的用户姿势。AutoReg模型使用变量的过去值的线性组合来预测其未来值[5]。
滞后阶ρ的AutoReg模型可以写成式(5):
yt=c+φ1yt-1+φ2yt-2+…+φρyρ-1+εt
(5)
其中yt是时间t的时间序列y的真值;εt是白噪声;φi是模型的系数。这种具有ρ滞后值的模型称为AP(ρ)模型。一些统计库可以使用统计测试自动确定滞后值。
将收集到的一条轨迹中的x和qx值用作训练数据,并分别使用Python库statsmodels[6]创建了两个自回归模型,分别用于平移和旋转分量。我们的模型具有32个样本的滞后阶数,即它考虑了过去160 毫秒的历史窗口,并使用式(5)预测了下一个样本。通常,不仅需要预测下一个样本,而且还需要预测将来要获得给定前视时间的多个样本。因此,通过将刚刚预测的样本添加到历史窗口并进行迭代式(5)来重复预测步骤,直到获得与所需前视时间相对应的未来样本。
使用经过训练的模型来预测用户的平移(x,y,z)和旋转运动(qx,qy,qz,qw)。可以从传感器获取旋转四元组,并且可以使用插值等技术进行平滑插值,因此可以对四元数域中的旋转进行预测。预测后,将预测的四元组转换为欧拉角,即章动角、旋进角和自转角,并在欧拉角域中评估预测精度,因为它们更适合于根据角度距离理解渲染偏移。
我们评估了预测对显示给用户的渲染图像准确性的影响。将预测的用户姿态与从传感器获得的真实用户姿态进行了比较。评估了一个基线情况作为基准,在该情况下,呈现的姿势落后于实际的用户姿势一个T延迟的延迟,即不执行任何预测。
对于每条用户轨迹,评估了在不同前视时间T'时间下的预测算法。在每个实验中,假定延迟等于预测时间,即T'=T,以便预测模型尝试预测在将渲染图像显示给用户时用户将达的姿势。通过计算真实值和预测值之间的平均绝对误差来评估结果。
图4呈现了本预测方法与基线方法的平均渲染误差对比的结果。观察到,本预测方法能够减少位置和旋转分量的平均渲染误差。
本研究提出了一个基于云计算的立体视频处理框架,该框架将渲染操作迁移到具有强大算力的云端服务器上,以此达到减轻客户端渲染负载的目的。为了改善延迟对框架的影响,设计了一种在六个自由度上预测立体视频中物体运动轨迹的方法。实验结果表明,该预测模型减少了由云端进行渲染而增加的延迟所导致的渲染错误。在未来的工作中,将对本框架进行全面的测试,并通过主观测试来分析延迟对用户体验的影响,并设计具有高效率的预测模型。