找回密码
 立即注册
科技快报网 首页 数码 智能设备 查看内容

Arm 分享:从科幻到现实,移动端全息显示计算的发展进步

2020-11-07 17:54:11 来自: 映维网映华

你或许没有注意到,但全息图早已存在于我们的日常生活之中。由于难以复制,模拟全息图被广泛用作信用卡、银行票据、驾照和众多应用的防伪措施(见图 1)。

随着计算能力的提高和增强现实等新用例的出现,数字全息显示的研究和开发同样在不断地进行。在展示先进视觉化未来的时候,一众热门的科幻电影和电视都有受到全息显示的启发,例如《星球大战》、《少数派报告》和《星际迷航》等。但全息显示真的是一个遥远的未来吗?在这篇博文中,Arm 的软件工程师主任罗伯托 · 洛佩兹 · 门德斯(Roberto Lopez Mendez)介绍了有助于移动处理器支持全息显示的算法与计算进步。下面是映维网的具体整理:

图 1:钞票(左)和信用卡(右)都有使用全息图作为防伪手段。

我们首先来看看经典全息图的产生过程:

1. 记录和再现全息图的起源

在计算机时代以前,模拟全息图的记录和再现方式与黑胶唱片相似。在这个过程中,两束激光束照射目标对象(图 2)。由此产生的干涉图(全息图)编码了对象的整体(" 全息 ")相位信息,并以极高的分辨率记录在感光胶片上。当用激光照射胶片时(图 2),发生的衍射会再现一个播放场,而它在眼睛看来是一个三维图像。这个图像完美地再现了所记录的对象,因为它保留了原始场景的深度、视差和其他属性。作为一名物理学家,这是我在大学学习全息术时所熟知的过程。

图 2:经典全息图的创建(左)与播放(右)。图源:VividQ。

在上一篇博文中,我们介绍了 Arm 与英国初创企业 VividQ 达成合作,共同致力于帮助消费电子产品实现数字全息显示。在计算全息(Computer-Generated Holography;CGH)中,干涉图案是根据各种数据源(从游戏引擎到深度感应摄像头)并以数字方式生成,然后再通过一个微型显示器进行显示。其中,所述显示器相当于经典全息图中的感光胶片,并且在用激光照射时可以同样地再现三维图像。但 CGH 的计算量非常巨大,在过去一副数字全息图像的生成需要耗费数天时间。当第一次访问离 Arm 剑桥总部不远的 VividQ 时,我简直不敢相信眼前的一切。采用 VividQ 软件实现的全息显示器原型能够在我面前实时地投射出一个 Unity 动画场景的 3D 全息视频。我感到非常不可思议。下面我们来看看这一切是如何实现的。

延伸阅读:Arm 与 VividQ 合作,在 Mali GPU 中兼容全息显示技术,提升 AR 体验

2. 数字全息术的革命:基于快速傅里叶变换(Fast Fourier Transform;FFT)的全息图生成

传统的计算全息术是用基点计算(Point-Based Compute;PBC)来实现。三维虚拟对象可以表示为点云,点云携带颜色和深度信息。在 PBC 中,计算虚拟对象的每个点到显示器的每个像素的光线,并将相关值相加。这一过程所需的计算能力非常巨大,并且会随着分辨率的增大而急剧扩展:大约需要 O(N4)运算,其中 N 是显示器的边长。

业界直到数年前才真正提出了实际的解决方案,而这个突破就像是从模拟音频处理到数字音频处理的转变。对于音乐,数字化过程以固定的时间间隔对音频信号进行采样。相比之下,全息领域的新举措是对三维虚拟对象的深度切片进行采样。图 3 总结了用于全息投影的切片过程和干涉图(全息图)的生成。

图 3:基于 FFT 的 CGH 管道

在切片过程中,点云的每个点被划分为深度层。在下一步中,深度层将重新采样并栅格化为深度网格。在这个阶段,每个深度栅格包含处于相同深度的点。在实际应用中,每个深度网格可以看作是一个二维图像,而每个深度层的点可以有效地视为像素。这种分层方法允许我们将计算全息问题简化为具有 O(N2 log N)时间复杂度的快速傅立叶变换问题(其中 N 是显示器的边长)。接下来,我们进行色度网格划分,将深度网格划分为 RGB 通道。然后利用 FFT 对深度网格进行衍射计算,并且生成全息图。每个 RGB 通道都需要自己的 FFT 计算,因为衍射速率取决于每个颜色波长。最后,将 RGB 通道全息图合并成单色全息图。

当生成全息图(干涉图)后,我们应该在哪里记录或打印并用激光束重建及产生全息投影呢?数字技术已经在这一领域获得长足的进步,所谓的空间光调制器(SLM)取代了模拟胶片。SLM 可以动态显示计算出的衍射图样,并在用红绿蓝三种激光二极管照明时产生全息投影。

显然,这是全息图生成过程的一个简略版本,我们在这里没有考虑与显示器本身相关的技术挑战。然而,我们可以看到所需的计算能力将随深度层的数量和深度网格的分辨率提升而增加。随着层数的增加,我们可以预期 FFT 计算的权重将更加显著。GPU 在并行计算方面非常出色。它们可以充分利用运算能力,而高端 GPU 的运算能力通常更为强大。这就是为什么今天全息图生成过程的推荐计算单元是 GPU 的原因。

在访问 VividQ 期间,我尝试了团队研发的全息头显原型(图 4)。这家公司已经为相关的软件和参考设计申请了专利,并希望加速全息显示在 AR 头显和智能眼镜、汽车平视显示器和消费电子产品领域的大规模采用。

图 4:VividQ 的双目全息头显原型,头显上方是一个深度传感器。

如今,VividQ 的全息头显原型会接入到一台 PC,而后者运行的相关程序可以渲染来自 Unity 或 Unreal 等游戏引擎的虚拟内容。虚拟内容的颜色和深度信息会发送到 CGH 管道(图 3)。当在环境中投射全息图时,所述设备同时会使用深度传感摄像头的信息来实现虚拟与真实和真实与虚拟的遮挡(图 5)。FFT 计算在 GPU 中进行。

图 5:在不同距离捕获的三维全息投影。

尝试 VividQ 的全息头显是一次令人大开眼界的经历,因为当 CGH 只存在于科幻作品描述的的未来时,我的全息知识就随着我的大学毕业而终止。这一次访问令我意识到全息技术自 80 年代以来已经发展到什么程度,但还有更多的惊喜在等着我。

3. 移动端的实时 CGH:是科幻还是现实?

将 CGH 从桌面端带到移动端似乎是一项艰巨的任务。如果在拥有强大 CPU 和 GPU 的桌面端实现 CGH 已经是一个巨大挑战,将全息图生成转移到移动设备还有意义吗?然而,如果我们仔细思考,如果我们希望看到实时全息显示器的广泛采用,转向移动端显然是下一个自然而然的步骤。

类似的过程已经在虚拟现实发生。如果你关注这个行业的发展,你应该会知道于 2016 年面世的 Oculus Rift 和 HTC Vive。这种系留头显需要接入一台功能强大的 PC,然后才能够以每秒帧数(FPS)的高分辨率为每只眼睛渲染虚拟场景。但我们在 2018 年看到了第一代 VR 一体机 Oculus Go,并在后来见证了非常成功的 Oculus Quest。一体机的形式意味着它包含了提供虚拟现实体验所需的一切组件,不再需要外接设备。这一形态的设备优势非常明显:不再需要线缆,设备可以随身携带,功耗更低。所有这一切都是通过移动 SoC 实现。将 CGH 移植到移动 SoC 可以为我们带来同样的好处,并把这项技术带到 AR 的真正未来。在这个未来里,一款形状紧凑的低功耗全息显示器将是必要事项。对于这一点,Arm 的 Total Compute(全面计算)策略将能发挥重要的作用。

4. Arm 的全面计算和 ViviQ 将如何塑造全息术的未来?

图 6:未来的全面计算解决方案的不同要素

为了满足在计算能力和功耗方面不断增长的需求,Arm 正在通过全面计算来实现战略转变:从优化单个 IP 到采用整个 SoC 设计的系统级解决方案视图(图 6)。这意味着整个系统应该无缝协作,为低功耗 SoC 封装的计算密集型工作负载提供最大性能。这种新方法将分析如何在不同的 IP 块和计算域之间最好地部署互连的数据和计算。它不仅包括主要的计算域(CPU、GPU 和 NPU),而且会纳入软件框架和计算库来提高它们的性能。同时,诸如 Performance Advisor 这样的新工具可以识别瓶颈并帮助实现整个系统的最佳性能。

这种方法特别适用于高性能计算,如 CGH 的核心要素 FFT。最新的 Mali Premium GPU(Mali-G78 和 Mali-G77),以及主流的 Mali-G57 都利用了 Arm Compute Library(ACL)。这是一个高度优化的底层函数集合,包括一个通过 OpenCL 加速的高效 FFT 计算实现。FFT 在复杂域中运行,而我们可以使用 FP32 和 FP16 浮点精度。硬件后端性能的每一次改进都直接转化为每秒乘法累加运算(MAC/s)的增加,从而转化为 FFT 计算性能的提高。这一点尤其重要,因为即使考虑到预处理和后处理操作,FFT 计算都占全息显示所需总计算量的 60%-90%。

在 2019 光场和全息显示峰会(2019 Light Field and Holographic Display Summit),VividQ 首席执行官达伦 · 米尔恩(Darran Milne)分享了在 2048 × 1536 显示器为指定数量目标层生成单帧全息图像的浮点运算要求要求(表 1)。

表 1: 使用 ViviQ 实时算法生成单个 2048 × 1536 帧的浮点运算要求。

即使是 1280 × 720 显示器,对于传统的基点计算而言,每帧的计算需求大约为 7000 GFLOP。对于计算需求减少了 1000 倍,这说明了利用 FFT 和相关 Arm 库的 ViVidQ 方法更加高效。重要的是,VividQ 的解决方案不仅优化了计算要求,而且提高了图像质量。VividQ SDK 所提供的算法针对不同的显示类型、大小和位深、以及各种图像特性(如高对比度)进行了优化。由于用户或调用程序可以请求特定数量的输出层,所以对于给定的光学系统和输入场景,你只能使用所需的计算量。但值得注意的是,简单场景可能只包含几个位深的数据。这一巨大的灵活性允许运行 VividQ 软件的 Arm-Mali GPU 实时交付各种应用的全息图。

下面我们来详细谈谈 Arm Mali-G76 GPU 的计算能力。一个 Mali-G76 内核中包含 3 个执行引擎,各自具有 8 个线程,并且每个时钟周期(3x8x3=72 个浮点 / 周期 / 核心)能够传送大约 3 个 FP32 指令(MUL ADD)。这意味着三星 Galaxy S10 中以 720 MHz 运行的 10 核 G76 显卡将提供 720x106x72x10 浮点或大约 518 GFLOP/s。对于 FP16 精度,这一数字将翻倍至 1.04 TFLOP/s。这是理论上的最大值。在实践中,实际数字会受到带宽限制的影响,并最终受限于功耗。对于诸如 FFT 这样的高负载算法而言,我们依然有望获得理论最大值的相当一部分。即使我们只计算每线程每周期单个 FLOP,利用率为 60%,我们都可以达到 100 GFLOP/s。

正如我们所见,原则上带宽不应该是个问题,但实际上它可能会成为一个问题。使用 GPU 时,如果不进入热节流和出现快速电池消耗,我们就不可能维持高分辨率和复杂用例所需的处理强度。但我们有一些简单的应用程序,例如增强现实设备中的文本和图标投影,我们可以限制层的数量,并依然能够为当今的 AR 显示提供显著的优势。根据 Arm 支持团队的评估,三星 Galaxy S10 的一个切片计算需要 8ms,分辨率为 720 × 1280。这意味着一个全彩色的单层需要 24 毫秒,而且系统理论上将以 40 帧 / 秒的速度运行。这是移动 GPU 实时运行 CGH 的首次演示。VividQ 最近展示了他们的全息操作系统概念(图 7)。所述操作系统具有图标、文本和社交媒体等我们熟悉的应用程序,而它们通常只需要 2 个深度层。

图 7:VividQ 的全息操作系统概念。

但全息显示远不止 FFT 计算。CPU 在内容生成和其他计算任务中起着关键作用。为了避免瓶颈并实现全息图像的高分辨率,诸如显示器和激光驱动器等不同部分必须有效地协作。全面计算旨在作为 Arm 系统范围内设计方法的一部分以满足所述要求,并将帮助数字沉浸的下一波浪潮成为可能。同时,VividQ 团队将继续相关的算法研究,从而实现比 AR 可穿戴设备更高质量的全息图与全息应用。VividQ 的专有全息图模拟工具(由 GPU 运行)允许不同的光学设置以实现高精度模拟。这使得新光学系统的快速原型化不再需要硬件实验,并最终带来速度更快画质更优的全息图像(图 8)。令人高兴的是,所需的算法变化不会显著影响计算量,所以这种新型显示器依然与 Arm 的全面计算架构兼容,并在移动处理器实现实时性能。

图 8:目标图像(a);使用 VividQ SDK 4.2.0 和标准生成算法创建的全息图像(b);正在开发的高黑电平程序(c)。

5. 总结

计算机全息的最新发展使得全息显示从科幻变成了现实。全息术和全息显示与当今的三维显示相比具有很大的优势。从智能眼镜到汽车平视显示器和新的消费电子产品,随着计算方法的发展,全息显示可以成为 AR 商业应用的一个可行替代品。为了实现其真正的潜力,全息显示必须从基于桌面的计算转移到移动端 SOC。Arm 和 VividQ 的合作旨在帮助移动处理器实现 CGH。在这里,我们可以结合 VividQ 在全息摄影方面的深厚软件专业知识,以及低功耗、高性能的 Arm IP。VividQ SDK 允许跨不同终端支持实时的高质量 CGH,而用于沉浸式计算的全面计算方法致力于在性能和功耗方面实现整体系统改进,从而帮助未来的全息显示成为现实。

原文链接:https://yivian.com/news/79680.html

VR

  免责声明:本网站内容由网友自行在页面发布,上传者应自行负责所上传内容涉及的法律责任,本网站对内容真实性、版权等概不负责,亦不承担任何法律责任。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

发布者:科技快报网

相关阅读

微信公众号
意见反馈 科技快报网微信公众号