处理器

数字信号处理器 – Open CV

OpenCV 是开源计算机视觉库。它可以在 BSD(伯克利软件套件)授权下免费用于学术和商业用途。

德州仪器 (TI) 完全支持在所有基于 ARM® Cortex®-A 的处理器上使用 OpenCV 3.1。这包括来自 AM335x、AM437x 和 AM57xx Sitara 处理器系列以及 66AK2x 多核 DSP + ARM 处理器系列的处理器。对于具有多个 ARM Cortex-A15 内核的处理器,多核 ARM 支持所有 OpenCV 功能。

OpenCV 具有模块化结构,每个模块包含若干共享或静态库。这些模块的样例以及相关功能如下所示。

图像处理

  • 图像滤波
  • 图像转换
  • 色图
  • 结构分析
  • 功能检测

视频分析

  • 运动分析
  • 对象跟踪
  • 密集光流
  • 卡尔曼滤波器

对象检测

  • 级联分类器
  • 目标检测区域

OpenCV 的 DSP 加速

OpenCV-3.x 具有称为透明 API (T-API) 的架构概念,可供用户通过 OpenCL 自动调用加速代码。加速代码如果存在,则会变为常规 OpenCV 调用中的一个分支。例如,如果可行并且从性能方面来看具有合理性,则调用 cv::resize() 将会自动调用加速分支。

在 TI 的异构 SoC 上,T-API 可将 OpenCV 例程卸载到 TI C66x DSP 内核上并且/或对其进行加速。OpenCV 内的 ocl 模块包含约 200 个 OpenCV 算法的 OpenCL 实施,旨在用于加速卸载。

从用户的角度来看,利用 DSP 内核进行加速是透明的。OpenCV 调用未更改。

OpenCV 性能

下表显示了在两个不同 TI SoC 中的多核 ARM Cortex-A15 内核和 C66x DSP 上所测量的 OpenCV 例程的示例性能。

注意:DSP 上所测量的性能适用于 OpenCV 的 ocl 模块中包括的 OpenCL 实施。此代码已经过编译,但未针对 DSP 进行优化。当前实施未利用高效数据移动、软件环路管线或 DSP 固有函数。TI 未来的处理器 SDK 版本将提供经过优化的 OpenCV 模块,且将具有改进的性能。这些经优化模块的使用将对最终用户透明呈现。OpenCV 调用不会改变。

1 时间表示在以指定速度运行的器件的所有 ARM Cortex-A15 内核上进行处理的 ms 总数。

2 时间表示在以指定速度运行的器件的所有 C66x DSP 内核上进行处理的 ms 总数。时间包括针对缓存 OpenCL 内核的 OpenCL 开销。

3 此代码已经过编译,但未针对 DSP 进行优化。当前实施未利用高效数据移动、软件环路管线或 DSP 固有函数。优化后有可能会在这些数据上有所改进。

使用的硬件平台AM572x EVM66AK2H EVM
具有进行基准测试的内核配置的器件AM5726AM572866AK2H1266AK2H14
进行基准测试的内核 2x ARM A152x C66x DSP从 ARM 向 DSP 移动代码时测量到的加速4x ARM A158x C66x DSP从 ARM 向 DSP 移动代码时测量到的加速
1.5GHz 频率750MHz 频率1.2GHz 频率1.2GHz 频率
OpenCV 函数测试图像详细信息时间(以 ms 为单位)1时间(以 ms 为单位)2、3时间(以 ms 为单位)1时间(以 ms 为单位)2、3
尺寸通道数数据类型
cv::add640x4804uint 87.720.70.4x5.93.61.6x
cv::dilate1920x10801uint 8164.389.81.8x201.9 18.710.8x
cv::erode1920x10801uint 8164.189.81.8x204.3 18.611.0x
cv::filter2d1920x10804float 32601.5249.42.4x721.255.513.0x
cv::GaussianBlur1920x10804uint 8707.43661.9x883.470.512.5x
cv::CascadeClassifiercv/shared/lena.png118412.20.3x10544.52.3x
cv::calcOpticalFlowFarneback不适用5535.27227.50.8x6852.71191.65.8x

上表中的“加速”列显示了可通过从器件 ARM 内核到 DSP 内核的卸载获得的相对性能改进。当加速 > 1 时,例程在指定 SoC 配置中的 DSP 内核上具有更快的运行速度。如果加速 < 1,则例程在 SoC 配置中的 ARM 内核上具有更快的运行速度。然而,可能仍然需要利用 DSP,以便从 ARM 卸载处理。

下列图表显示了这些 OpenCV 例程在指定器件 ARM 内核与 DSP 内核上的相对性能。Cortex-A15 内核的性能已标准化为 1。显示的是相对于 Cortex-A15 的 C66x 内核性能。这一比较将内核数量和处理器速度考虑在内。

下载 OpenCV

OpenCV 是 TI 的免费处理器 SDK 所包括的一部分,可使用以下链接为下列器件进行下载:

Sitara AM335x

Cortex®-A8 内核

Sitara AM437x

Cortex®-A9 内核

Sitara AM57x

单核/双核 Cortex®-A15 和 C66x DSP

C6000 DSP + ARM 66AK2Ex

最高性能双核/四核 Cortex®-A15

C6000 DSP + ARM 66AK2Hx

高性能多核 C66x DSP + ARM Cortex®-A15

C6000 DSP + ARM 66AK2Gx

单核 Cortex®-A15 和单核 C66x DSP