Holoportation技术分析

  • 2019 年 10 月 8 日
  • 筆記

1. 简介

这是一个端到端的可以用于VR/AR的远程会议系统。该系统使用一系列自主研发的深度摄像头对空间做实时高质量的三维重建,包括空间内的静态或动态物体。这些三维模型也可以实时传输到远端用户。这样,用户就可以带上VR/AR头盔和另外一个远程用户做实时交互,就像两者在同一个空间内交互一样。

2. 系统设置

a) 获取数据端

如上图所示,在某一个空间内的8个位置放置8组摄像头装置。

在[1]中,作者提到因为要得到非常好的深度估计效果。使用基于结构光的三维重建系统中,不同的结构光投射、捕获设备之间会互相干扰。另外一种就是类似于使用Kinect这样的三维重建系统,Multi-path问题会让他们的系统不可用。另外一种他们考虑的是使用RGB多视角重建系统,但是这种系统对于纹理特征不丰富的场景来说效果很差。所以作者所在团队就设计了如上图的摄像头组。

在这个摄像头组中,两个IR camera做stereo matching来对场景深度估计,一个RGB camera仅用做获取纹理信息。剩下一个DOE设备是类似于Kinect v1的红外光发射设备。也 是说共有(2+1)*8=24个摄像头。作者提到,相比于该系统的前一代作品[2 High-quality],使用了106个摄像头。[1]中8个摄像头组能生成8*(1 depthmap + 1 rgb image),而[2]中却只生成了24*(1 depthmap)。另外[2]还是用绿幕并且只能离线处理如下图所示。所以[1]从系统装备、性能上都是很大的进步。

在捕捉数据端,使用4台电脑生成深度数据和前景分割图。每台电脑处理两个摄像头组。[1]中介绍Holoportation使用了Intel Core i7 3.4Ghz CPU, 16 GB RAM, 2 Nvidia Titan X GPUs这样配置的电脑。

b) 计算并渲染端

捕捉端可以输出深度图和前景分割图。在计算端,Holoportation系统使用1台电脑做三维重建的计算和渲染。这台电脑和捕捉端用的电脑配置一样。

c) 数据传输和显示

为了得到实时效果,Holoportation系统建议在“捕捉端”和“计算并渲染端”使用10Gbps的网络来连接。该系统已经在one-to-one, one-to-many的应用中测试过。

Holoportation使用HoloLens做AR显示设备,当然也可以用Oculus做VR的显示设备。其中对于HoloLens这种一体显示设备,需要用Wifi和“计算并渲染端”的那台电脑做连接。[1]中提到不可能将将渲染部分全部交给HoloLens,计算能力不够达到实时的标准,只能在电脑上渲染完通过Wifi传给HoloLes仅作显示。

另外,在数据传输上,还要经过压缩算法对数据作压缩。

3. 技术大纲

1) 摄像头配置

摄像头:4MP分辨率的Grasshopper PointGrey。拍摄数据的频率为30fps。

2) 深度估计

使用PatchMatch stereo[3]实现。使用实时的CUDA在高端GPU的显卡上实现,能达到50fps。作者提到这一步在系统中的性能要求最多。

3) 前景分割

该步骤是为了找出重点区域的轮廓。这一步非常重要,不仅是为了得到性能更好的三维重建,而且还有利于我们压缩数据,这样网络传输压力不会过大。

该步骤使用CRF[4]实现。

深度估计和前景分割的效果

每个摄像头组由一台电脑来处理。这台电脑配置了2 NVIDIA Titan X GPUs,所以每个GPU处理一个摄像头组的数据。这一步使用基于GPU的PatchMatch Stereo [3]来实现。

4) 三维重建

深度估计得到深度图,前景分割得到前景分割图。在这一步里,系统使用深度图和前景分割图重建分割图中的三维模型。这步使用Fusion4D[5]论文中提到的方法。在[5]中提到的方法,是目前跟踪模型和融合数据的最好的方法。

用一台配置2 NVIDIA Titan X GPUs的电脑,用双GPU的实现方式来三维重建。其中一个GPU估计帧与帧之间的运动,另外一个GPU做模型与帧之间的运动估计。两个GPU要做到并行计算。

5) 声音同步

使用HRTF做声音同步。使用户能听到根据声音源的距离做的真实声音效果。

6) 压缩和传输

前面三维重建数据和声音数据量非常巨大。对于保证系统的实时性来说,数据压缩就变得非常重要。

对于三维模型信息信息,系统使用轻量级的LZ4压缩算法。测试说明,系统的压缩效果能达到每帧2MB的数据量。

对于模型纹理信息,系统依然使用LZ4压缩算法。测试说明,系统的压缩效果依然很好,达到每帧3MB的数据量。另外,每帧图像对应的摄像机参数信息同样要传输,这个数据量很小。

对于声音信息,声音的采样频率为11KHz,用16-bit PCM来表示。这样的数据至少需要176Kbps,另外加上9Kbps的姿态信息。在不同的应用中使用不同的传输方式。具体我不很了解。

7) 渲染

为了在显示设备达到实时的帧率,只能通过一台高配置的电脑来渲染。然后通过Wifi传输到HoloLens这样的一体式设备。[1]中提到,在HoloLens中能达到60Hz的刷新率,在Oculus Rift DK2中可以达到75Hz。

4. 局限

该系统是第一个高质量的360度沉浸式三维远程会议系统。但是需要非常昂贵的硬件配置。而且该系统使用10Gbps的网络连接才能达到实时性,最好还是带宽全占,这样其他依赖网络的应用就会被受到限制。另外因为压缩数据的必要性,显示部分还是会有一点色彩失真。

5. 参考文献

[1] Orts-Escolano, Sergio, et al. "Holoportation: Virtual 3D Teleportation in Real-time." Proceedings of the 29th Annual Symposium on User Interface Software and Technology. ACM, 2016.

[2] Collet, Alvaro, et al. "High-quality streamable free-viewpoint video." ACM Transactions on Graphics (TOG) 34.4 (2015): 69.

[3] Bleyer, Michael, Christoph Rhemann, and Carsten Rother. "PatchMatch Stereo-Stereo Matching with Slanted Support Windows." BMVC. Vol. 11. 2011.

[4] Koltun, Vladlen. "Efficient inference in fully connected crfs with gaussian edge potentials." Adv. Neural Inf. Process. Syst (2011).

[5] Dou, Mingsong, et al. "Fusion4d: Real-time performance capture of challenging scenes." ACM Transactions on Graphics (TOG) 35.4 (2016): 114.