Snapdragon 和 Qualcomm 品牌产品是 Qualcomm Technologies, Inc.和/或其子公司的产品。
假设您刚刚度假回来,带回来几十张从不同角度拍摄的埃菲尔铁塔、泰姬陵或米开朗基罗大卫的照片。如果您希望再“虚拟地”逛一逛这些景点,该怎么办呢?这需要拼接所有的2D图像,创建一个3D场景,这样就可以从不同的自由摆放角度“参观景点”了
(如以下视频所示,点击播放视频)。
将照片合成场景以便从任意角度观察的方法有很多种。其中有一种利用机器学习的新技术 MobileNeRF,这种方法是在移动设备上使用图形硬件,但使用较旧的API:WebGL实现渲染。虽然webGL是一种易于使用的API,但不适合高性能应用,而且不能实现对GPU管道的精细控制。
因此,我们发布了新的使用Vulkan API的MobileNeRF渲染技术,并针对Qualcomm®Adreno™GPU对其进行了优化。本文将探讨基于2D图像生成逼真的实时3D重建的背景知识。对于希望更好了解GPU功能的AI开发者和使用神经网络的GPU架构师来说,此实施技术具有一定的指导意义。
对NeRF和MobileNeRF推理
新图像合成是输入并合成从任意角度拍摄的物体或场景图像的拼接过程。这在图形和计算机视觉领域是一个长期存在的问题,最近有一种方法使用基于神经辐射场(NeRF)的机器学习。NeRF是一个完全连接的神经网络,可以基于部分2D图像生成复杂3D场景或对象的新视图。
NeRF使用多层感知器(MLP)网络,是场景或对象的特定实例的隐式表示。但是性能是一个问题。原始NeRF技术在推理(渲染)时使用大型MLP,在高性能台式机GPU每帧的性能命中率大约为30秒。针对不同的用例,以及为了改进训练和/或推理过程,出现了NeRF的变体。为了更接近实时推理,MobileNeRF已经作为一种在移动设备上使用现有图形硬件的技术出现了。
Adreno团队始终努力拓宽使用场景,在我们的GPU上进行实验,了解其实际表现。这也促使我们将目光转向MobileNeRF。根据原始研究,我们开始优化技术,以便在推理过程中更有效地渲染MobileNeRF网格。我们还决定扩展MobileNeRF,在Adreno GPU上使用Vulkan API。
GPU上的神经网络–不同于游戏
NeRF尝试通过前所未有的方式使用GPU,而MobileNeRF则是试图以更接近传统的方式利用GPU。MobileNeRF训练流程确保了传统图形硬件可以相对简单处理的网格和特征纹理。
但它们与游戏中常见的网格不同,后者是一般运行在GPU上的一个用例。我们发现,MobileNeRF生成的网格和模型往往包含较小的三角形和高深度复杂性,不适合传统的GPU光栅器。我们在工作过程中,发现它们会给GPU造成一定的性能瓶颈。
这对机器学习和gpu方面的工程师来说都是一个重要的教训。例如,在游戏环境中,游戏和GPU是共存关系。游戏开发人员在开发内容时考虑到了GPU的限制,而同时,GPU架构师改进了设计,以适应游戏新的需求。但根据我们在MobileNeRF中观察到的性能瓶颈,机器学习还没有出现这种情况,因此使用GPU渲染这些资产时需要特别注意。
从Adreno上的WebGL转至Vulkan
MobileNeRF论文的作者从机器学习和计算机视觉的角度阐述了新视图的合成。他们选择在WebGL中实现渲染。我们从GPU的角度研究了他们的渲染技术,并使用更现代的图形API:VULKAN完成MobileNeRF渲染。VulkanAPI尤其适合高性能应用,并而提供对GPU管道的细粒度控制。这使应用程序能够更好地利用GPU硬件。
我们在支持Vulkan 1.3的骁龙®8 Gen 2移动平台的商用Adreno GPU进行了实验。与最初的WebGL实现相比,Vulkan API提供了更多机会优化渲染管道和着色器,可以更好地适应现代GPU。我们已经能够进一步提升性能,渲染更大、更复杂的对象和场景。
下一步
NeRF和MobileNeRF具有实时生成更详细、更逼真的3D重建和可视化的潜力,可以影响到移动设备上的增强现实等交互式体验。此外,我们还注意到了MobileNeRF与5G、边缘计算和AI服务等技术之间的集成潜力;比如医疗成像、增强导航系统和线上购物时的虚拟试穿。
我们将实现成果捐赠给了Khronos,作为Vulkan示例。您可以下载并试用,然后在Adreno GPU SDK支持论坛发表您的意见。当然,我们也将继续在GPU上实验非传统用例,包括启用除MobileNeRF之外的其他神经渲染技术,更高效地运行在Adreno GPU上。敬请关注,并订阅Qualcomm开发者网络以获取更新信息。
Snapdragon 和 Qualcomm 品牌产品是 Qualcomm Technologies, Inc.和/或其子公司的产品。