础滨驱动的设计应用
Synopsys 产物营销经理 Gordon Cooper
卷积神经网络 (CNN) 已获得可观口碑,被推举为实现计算机视觉任务(如物体检测和识别)的前沿先进技术。对于需要视觉处理的边缘应用,例如移动电话、自动驾驶汽车和增强现实设备,具有卷积神经网络 (CNN) 加速器的专用视觉处理器可以同时实现性能的更大化和功耗的更小化。然而,物体检测的准确性可能受到输入 CNN 引擎或加速器的图像质量的影响。为获得超高质量的结果,设计人员必须确保相机输出的图像画质尽可能地得到改善。例如,在黄昏时分抓拍的图像可能存在无法区分图像和背景的问题。改善图像画质的潜在方法是使用“标准化”预处理步骤。
在示例视觉通道(图 1)中,光通过相机镜头并冲击 CMOS 传感器,此时的每个像素均表示为与强度成比例的电压。CMOS 传感器的输出输入图像信号处理器 (ISP) 以校正镜头失真并进行色彩校正。然后将该图像传递给视觉处理器以进行视觉处理和物体检测。
图 1:从摄像机到卷积神经网络输出的典型视觉系统
ISP 的一项重要任务是彩色图像去马赛克(图 2)。数码相机大多使用覆盖有滤色镜阵列 (CFA) 的单个图像传感器获得输入。使用尤为常见的滤色镜阵列(拜耳样式)时,输出结果用肉眼看是绿色的。滤色镜样式为 50% 绿色、25% 红色和 25% 蓝色,额外增加绿色有助于模拟对绿光更敏感的人眼生理结构。去马赛克功能可根据附近像素推断缺失的颜色值,从而使图像看起来更自然。这种二维 (2D) 图像的逐像素处理恰恰是 ISP 必须执行的一种处理类型。
图 2:将拜耳样式图像去马赛克得到普通 RGB 图像需要进行二维像素处理
一些相机制造商在其相机模块中嵌入了 ISP 功能。另一些制造商则会设计自己的硬连线 ISP。要想在 ISP 的图像输出上执行诸如物体检测或面部识别的计算机视觉算法,就必须设置单独的片上或片外卷积神经网络引擎。Synopsys EV62(图 3)等现代视觉处理器包含矢量 DSP 功能和神经网络加速器或引擎。视觉处理器的矢量 DSP 具有的性能完全适合执行 ISP 功能。
图 3:Synopsys DesignWare ARC EV62 视觉处理器 EV62 具有 CNN 选项,包括两个矢量 DSP 芯核和一个紧密集成的神经网络引擎。
矢量 DSP 可以在不同的数据流上同步执行乘法累加。例如,具有 512 位字长的矢量 DSP 可以执行 32 个并行 8 位乘法或 16 个并行 16 位乘法。矢量 DSP 可以将其固有的并行性与功耗和面积双双优化的架构相结合,为嵌入式视觉应用提供高效的二维图像处理解决方案。
可编程视觉处理器需要稳定的软件工具链和相关的库函数。EV62 由 DesignWare? ARC? MetaWare EV 开发工具包提供支持。工具包中含有基于 OpenVX?、OpenCV 和 OpenCL C 嵌入式视觉标准的软件开发工具。Synopsys 的 OpenVX 实现扩展了标准的 OpenVX 核心算法库,加入了新的核心算法,在优化的流水线 OpenVX 执行环境中提供类似 OpenCV 的功能。对于视觉处理,OpenVX 提供框架以及经过优化的视觉算法 - 以“核心算法”的方式实现图像功能,还可以把它们组合在一起形成以图形 (graph) 表示的图像处理应用程序。标准型和扩展型 OpenVX 核心算法已经针对 EV6x 进行了移植和优化,因此设计人员可以利用矢量 DSP 的并行性。
图 4 举例展示了使用标准型和扩展型 OpenVX 核心算法组合的 OpenVX 图形 (graph)。在该示例中,图像的裁剪是在失真校正(重映射)过程中完成的。去马赛克的输出通过失真校正(重映射)、图像缩放和图像归一化来运行。例如,归一化调整像素亮度值的范围以校正由于弱光或眩光引起的较差对比度。
图 4:用于在视觉处理器上实现 ISP 的 OpenVX 图形 (graph)
EV62 有两个视觉处理器 CPU 和一个专用的 CNN 引擎,所以能够完成双重任务。其中一个视觉处理器可以执行 ISP 算法,而第二个可以与卷积神经网络 (CNN) 引擎并行或支持其他计算机视觉算法。EV64 具有四个视觉处理器 CPU,能够实现更多并行处理操作。
有关 CNN 用例的新学术论文源源不断,包括训练 CNN 接受非正确(预 ISP)图像的提议,这表明最终将不再需要以 ISP 作为 CNN 的预处理步骤。然而也有很多用例表明,传感器的图像需要经过校正才适合人类观看。汽车后视摄像头就是其中一种情况,除了使用 CNN 执行检测和防撞算法之"外,还需要在驾驶舱内显示清晰的画面,供操作人员处理。