加速传感器融合嵌入式视觉应用
|
传感器在我们的世界经历了快速的推广,事实上,传感器现在已经非常普遍,以至于我们每个人日常所使用的手机里都有好几种不同类型的传感器。这些传感器能检测压力、温度、加速度和重力的简单变化,还有更高级的传感器,例如 GPS、RADAR、LIDAR 和图像传感器。 传感器融合是指从几种不同的传感器中提取数据,以生成靠单个传感器无法提供的信息。随后,可以对该信息做进一步处理和分析。并根据最终应用,必要时还可用传感器来制定决策。传感器融合分为两大类: 实时传感器融合 – 提取并融合传感器数据,并根据得到的信息实时制定决策。 离线传感器融合 – 这种方案是提取并融合传感器数据,但在过后的某个时间制定决策。 就嵌入式视觉系统和传感器融合应用而言,大部分应用适合实时传感器融合。 嵌入式视觉应用 嵌入式视觉应用正在经历迅猛增长,涉及领域广泛,从机器人、高级驾驶员辅助系统 (ADAS) 到增强现实,不一而足。这些嵌入式视觉应用对最终应用的成功运行有很大帮助。将嵌入式视觉系统提供的信息与来自不同传感器或多个传感器的信息进行融合,有助于更好理解环境,从而提升所选应用的性能。 很多嵌入式视觉应用只使用一个图像传感器来监控一个方向,例如只监测汽车的前方。利用这样的图像传感器能够检测、分类和跟踪物体。然而,由于只使用一个传感器,因此就无法测量与图像中对象的距离。也就是说,我们可以检测和跟踪到另一个车辆或行人,但如果不借助另一个传感器,我们就无法确定是否存在碰撞风险。本例中,我们还需要另一个能提供与检测到的对象的距离的传感器,如 RADAR 或 LIDAR。由于这种方法能够将来自多个不同类型传感器的信息融合,因此称为异构传感器融合。 图 1- ADAS异构传感器融合实例 另一种方案是提供第二个图像传感器,以实现立体视觉。这种方案是让两个图像传感器朝着相同方向,但分开一小段距离,就像人的两个眼睛那样,通过视差确定对象在视场中的深度。像这样使用多个相同类型的图像传感器,称为同构传感器融合。 当然,本例中的应用针对所用的架构和所选的传感器类型确定驾驶要求。这包括深度感的范围、测量精度、环境光和天气条件、实现成本以及实现复杂程度。 嵌入式视觉不仅可用于对象检测和汽车防撞,还可以作为导航系统的一部分,用来识别交通标志信息。未来还可融合更多种不同图像,例如医用 X 光、MRI(核磁共振成像)和 CT,或者安防和观察应用的可见图像和红外图像。 我们通常认为嵌入式视觉应用只使用可见电磁光谱,其实很多嵌入式视觉应用能融合来自可见电磁光谱以外的数据。 器件选择 在嵌入式视觉系统中,通常使用 All Programmable Zynq-7000 或 Zynq UltraScale MPSoC 器件来实现图像处理流水线。如果这些器件能用于传统的嵌入式视觉应用,那么也适用于嵌入式视觉融合应用。处理器系统与可编程逻辑的紧密结合能消除传统 CPU/GPU 实现方案中出现的瓶颈、确定性降低和时延增加问题。可编程逻辑 IO 结构的灵活性支持实现到高带宽接口(如图像传感器、RADAR 和 LIDAR 等)的任意连接。 图 2 - 传统 CPU/GPU 方案与 All Programmable Zynq-7000 / Zynq UltraScale MPSoC 的对比 对于嵌入式视觉传感器融合应用,我们可进一步利用处理器系统提供连接众多低带宽传感器的接口。例如,加速计、磁力仪、陀螺仪和 GPS 传感器都配有串行外设接口 (SPI) 和内部集成电路 (i2c) 接口,都得到 All Programmable Zynq-7000 和 Zynq UltraScale MPSoC 器件的支持。这使软件能够快速、简便地从多种不同类型的传感器中获取所需信息,并提供给可扩展架构。需要一种方法能够利用行业标准框架(如 OpenXV、OpenCV 和 Caffe)开发传感器融合应用,这时可使用 reVISION 堆栈。 reVISION 堆栈 reVISION 堆栈使开发人员能够实现计算机视觉和机器学习技术。在这里,针对 Zynq-7000 和 Zynq UltraScale MPSoC 的高级框架和库同样适用。为此,reVISION 将支持平台、应用和算法开发的多种资源完美结合在一起。该堆栈分为三个不同等级: 1. 平台开发 – 这是堆栈的最底层,也是其余堆栈层的构建基础。该层为 SDSoC 工具提供平台定义。 2. 算法开发 – 堆栈的中间层,为实现所需算法提供支持。该层还可为在可编程逻辑实现图像处理和机器学习推断引擎加速提供支持。 3. 应用开发 – 堆栈的最高层,为行业标准框架提供支持。这样能够开发出可利用平台开发层和算法开发层的应用。 |






