通过深度学习来增强您的现实

作者:Synopsys嵌入式视觉产品营销经理Gordon Cooper

移动设备中摄像头的激增、硅工艺效率的提高以及更先进人工智能(AI)算法的出现,推动增强现实(AR)呈现出迅猛的发展势头。AR正在从与AI和嵌入式视觉相关的新兴深度学习技术中获得裨益,在教育、游戏、工业甚至自动驾驶汽车等领域得到普遍应用。摄像头捕获的图像和视频是AR系统的一个重要组成部分,也经常被输入到嵌入式视觉处理系统中。卷积神经网络(CNN)等深度学习技术可作用于AR系统中生成的图像,以创造身临其境的体验。开发AR系统需要设计人员解决深度学习带来的性能、功耗和面积的影响,将嵌入式视觉处理器搭配主机CPU一起使用可帮助缓解这些问题。

增强现实(AR)、虚拟现实(VR)和混合现实(MR)

增强现实(AR)和虚拟现实(VR)存在根本差别。虚拟现实旨在为VR头盔佩戴者利用图像和声音来创造全新的拟真式环境。您的VR头盔(图1)可以播放布达佩斯咖啡馆的录音,或者可以使用新图像将您带入最喜爱的视频游戏。全模拟的VR环境需借助图形引擎来构建虚拟世界。而AR则只是部分模拟,将生成的图像或图形与现实世界组合在一起。将来,您可以戴着AR护目镜走过那家布达佩斯咖啡馆,并查看贴在前窗上的每日特价产品清单。在AR中,真实世界需借助计算机视觉来查看并识别周遭环境,这样才能添加虚拟世界。

图1:VR护目镜可创造完全身临其境的体验

混合现实介于AR和VR之间。混合现实可能仍为全模拟,但却能将现实世界中元素的定位融入到虚拟世界中 – 知道哪只手是您自己的,以便您在魔法游戏中扮演的卡通人物能够握住魔杖;或者知道哪些家具是您的,以便通过游戏中的卡通家具或者来自外星球的同等大小的岩石来替代它。与AR一样,混合现实也需借助计算机视觉技术来定位现实世界中的元素。

用于定位和地图构建的SLAM

今天,机器人、耳机或护目镜都是需要AR/VR/混合现实的最常见的硬件设备。有关将AR添加到手机、平板电脑和汽车中的重大研究正在如火如荼地进行着。硬件设备如想“看见”周围的世界并通过内嵌的图形或图像来添加或增强现实,它们必须能够确定自己在空间中的位置并构建周围环境的地图。在受控环境中,标记 – QR码等二维符号 – 允许摄像机(连接到护目镜或嵌入在智能手机中)确定其相对于表面的位置和旋转度。但是,诸如汽车之类的应用 – 您无法在每一段路上都插入标记 – 则必须在无标记的环境中工作。

即时定位与地图构建(SLAM)算法来自机器人研究,可为AR系统提供几何定位。SLAM算法可以构建环境的3D地图,同时跟踪摄像机在该环境中的位置和方位。该算法可估算传感器(内置在摄像机、手机或护目镜中)的位置,同时对环境进行建模以创建地图(见图2)。由于知道传感器的位置和摆放方式,还能生成3D环境地图,设备(以及使用设备观察事务的用户)便可如同在现实世界中一样在虚拟环境中移动。

图2:在无标记环境中,SLAM算法可通过识别对象的点和边缘以及对数据执行平面提取操作来构建周围环境的3D地图

SLAM支持多种实施方式。视觉SLAM是不依赖于昂贵的惯性测量装置(IMU)或激光传感器的纯摄像头版本。单目视觉SLAM – 已经变得非常流行 – 则依赖于一个摄像头,例如手机中的摄像头。单目视觉SLAM一般用于执行几项关键任务:

  1. 特征提取或不同地标的识别(如形成桌子边缘的线条)。特征提取通常使用ORB、SIFT、FAST及SURF等算法完成。

  2. 帧之间的特征匹配,以确定摄像头运动如何变化。

  3. 摄像头运动估计,包括环路检测和环路闭合(识别出一个以前已经被访问过了的位置)。

执行这些任务需开展多次计算,并且会对如何选择用于AR系统的最佳硬件产生影响。

用于感知的深度学习

虽然SLAM能够确定摄像头在环境中的位置并提供环境的3D模型,但是,要想感知并识别出该环境中的物体,您将需要诸如CNN等深度学习算法。CNN是当前用于构建视觉深度神经网络的最先进的技术,可通过增强用户的AR体验或向AR系统添加新功能来补充AR系统中的SLAM算法。

CNN能够基于预先训练好参数的神经网络来极为准确地识别物体 — 包括定位(识别图像中物体的位置)和分类(识别图像的类别 — 即狗还是猫,拉布拉多还是德国牧羊犬)。虽然SLAM可以帮助摄像机在环境中移动而不会触碰到物体,但CNN却可以识别出物体是沙发、冰箱还是桌子,并突出显示它在视野中的位置。YOLO v2、Faster R-CNN和Single shot multibox detector (SSD)都是用于实时对象检测的常用CNN网络— 包括分类和定位。

CNN物体检测网络可以专门用于检测面部或手部。通过基于CNN的面部检测和识别,AR系统可以为AR环境中的人脸添加名称和社交媒体信息。使用CNN来检测用户的手允许游戏开发者在游戏玩家的虚拟手中放置所需的设备或仪器。检测手的存在比确定手的定位更容易。一些基于CNN的解决方案需要深度相机的输出以及R-G-B传感器的输出来训练和执行CNN网络。

CNN还可成功用于语义分割。语义分割不同于对象检测,对象检测仅关注图像中用户感兴趣的对象的像素,而语义分割则关注每一个像素。例如,在汽车场景中,语义分割CNN将把天空、道路、建筑物以及个别车辆的所有像素分别标记为一组,这对自动驾驶汽车导航是至关重要的。在AR领域,语义分割可以找到天花板、墙壁和地板以及空间中的家具或其他物体。了解场景的语义有助于在真实与虚拟对象之间实现真实互动。

硬件实现

SLAM和CNN算法都需要对每台摄像机捕获到的图像(帧)进行大量计算。为AR用户创建无缝环境 ,即在没有明显延迟的情况下将现实世界与虚拟世界合并在一起,需要每秒20-30帧(fps)的视频帧速率。这意味着AR系统大约有33到40毫秒的时间来捕获、处理、渲染帧并向用户显示结果。这些任务的完成速度越快,则帧速率越快,AR感觉越自然。

考虑到用于片上系统(SoC)的单核(单摄像头)SLAM系统,计算效率和存储器优化都是至关重要的设计因素。 如果摄像机以30 fps的速度拍摄4k图像,则代表每帧8,294,400像素或每秒需要存储和处理248,832,000像素。大多数的嵌入式视觉系统都将所有的帧统统存储在外部DDR中,然后再尽量高效地传输该图像的一部分以进行视觉处理(见图3)。

图3:视觉数据存储在片外存储器中,并通过AXI总线传输到处理器

在CPU上处理高级AR系统所必需的算法 — 例如手机的应用处理器 — 是一种低效的方法。与CPU相比,在AR系统中用于绘制图形的GPU上执行这项任务将能加快SLAM和CNN计算速度。然而,虽然GPU实现的性能提升有助于开启人工智能和深度学习计算时代,但在GPU上实施深度学习算法可能需要100W或更多功率。最好的方法是将嵌入式视觉处理能力分配给专用处理器内核。

配合使用灵活的CNN引擎与矢量DSP,将能够实现性能和功耗的最佳比。矢量DSP设计用于处理SLAM等应用,而专用CNN引擎则可以支持所有常见的CNN操作(卷积、池化和元素智能等),并且由于它是专为这些参数而定制设计的,因此可将面积和功耗降至最低。

Synopsys的EV6x Embedded Vision Processor IP已经过优化处理,能够帮助AR系统的SoC设计师解决性能/功耗问题。DesignWare® EV61、EV62和EV64嵌入式视觉处理器均集成了高性能的32位标量内核与512位矢量DSP以及经过优化处理的CNN引擎,可实现快速精确的物体检测、分类和场景分割。矢量DSP是实施SLAM算法的理想选择,并独立于CNN引擎执行任务。EV6x系列在以16纳米工艺典型条件下实现时,能够提供最大可达每秒4.5 TeraMAC的CNN性能,并支持分辨率最大可达4K的多个摄像头输入。这些处理器完全可编程和配置,兼备软件解决方案的灵活性与专用硬件的高性能和低功耗优势。

总结

诸如CNN之类的深度学习算法令我们有机会创新和改进AR系统,在游戏、教育及自动驾驶汽车等领域开辟新体验。通过将EV6x Embedded Vision Processor IP等嵌入式视觉处理器与主机CPU配套使用,您在构建具有最严格的性能、功耗和面积需求的复杂AR系统时,将能够减轻负担。EV处理器令AR系统开发人员能够同时掌握深度学习技术和不断发展演进的SLAM技术。

 

更多信息: