This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DSP 上的 ORB 功能检测器/提取器-->OpenCV 与 VLIB

Guru**** 2614265 points
Other Parts Discussed in Thread: AM5728

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658229/orb-feature-detector-extractor-on-dsp----opencv-vs-vlib

主题中讨论的其他器件:AM5728

尊敬的 TI E2E 社区:

如果我的以下假设有误、请随时纠正我的问题:

TI 支持 Open CV 的 T-API [1]。 这意味着、如果从 Open CV 调用例如 ORB-feature-descriptor、则将通过 OpenCL 加速。 这意味着、如果我使用例如 AM5728、我对 ORB-feature-descriptor 的函数调用将在 C66x DSP 上执行。

另一方面、TI 的 VLIB 3.3.0.3也为 C66x [2]提供了 FAST/ORB 实现(函数名 VLIB_ORB_*)。

我的问题是:这两种处理 ORB 功能的方法有何区别? 是否有办法找出哪种方法更快?

[1]: http://www.ti.com/processors/dsp/libraries/open-cv.html
[2]:http://software-dl.ti.com/libs/vlib/latest/index_FDS.html

此致、
 Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Daniel:

    让我首先谈谈实施中的差异。 VLIB 是一个仅用于 DSP 的库、已用 DSP 汇编/内在函数代码编写、可在 C66x 架构上提供优化的性能。 如果您希望从 ARM 使用此软件、则需要将其集成到 OpenCL/IPC 中、以便 DSP 固件将在 DSP 上加载并运行。

    OpenCV 是一种 ARM + DSP 实现、其中 IO 函数和大多数 OpenCV 函数、而不是我们添加的在 ARM 上运行 DSP 加速的函数。 对于我们在 DSP 上添加的功能、我们在内部链接了 OpenCL、这样当用户尝试使用这些功能时、它将减轻 DSP 上的处理功能。 算法代码在本质上仍然使用 OpenCV 中的 C/C++代码、并且不n`t 包含除编译器优化之外的其他优化。 下面将更详细地介绍这一点:
    processors.wiki.ti.com/.../OpenCV

    此致、
    Rahul
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rahul、

    非常感谢您快速而详细的回答。 我想了解有关这两个库的性能差异的一些信息。 您发送的站点包含演示代码:

    OpenCL 打开、canny
    BGR2GRAY tDIFF=12.064661 ms
    GaussBlur tDIFF=5.948558 ms
    Canny tdiff=5.788493 ms
    OpenCL 关闭、canny
    BGR2GRAY tdiff=4.158085 ms
    GaussBlur tdiff=2.989813 ms
    Canny tdiff=9.780171ms 

    是否有一个类似的演示示示例可用于使用 VLIB 的 C66x? 与 OpenCV/OpenCL 相比、我想了解一下 VLIB 的性能。

    此致、
     Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel:

    我知道的唯一 VLIB 基准包含在 VLIB 软件包中。  我随附测试报告供您参考。

    e2e.ti.com/.../VLIB_5F00_c66x_5F00_TestReport.html

    请n`t、这些基准标记仅在 DSP 内核上获得、因此它不包含处理器间通信号和管理异构内核之间高速缓存的数字、因此无法用于真正的同类比较。

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rahul、

    您能否简单地解释表列:

    -选择计算 CYC/pt
    - natc 计算 CYC/pt
    - I/O CYC/pt
    -选择兼容|| IO CYC/pt

    如何从 CYC 转换到时间? --> C66x 750 MHz?

    此致、
     Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    OPT Compute CYC/pt:函数的优化 C 内在函数实现的基准  

    natc 计算 CYC/pt: 函数自然 C 实现的基准

    IO CYC/pt:用于通信从 IO (传感器)接收数据时函数所用的时间,包括额外的系统级延迟。

    n`t 我所说的、该库不执行任何 IO 延迟测量。

    要转换为时间:我将使用每个表末尾的公式来获取函数的周期计数、 然后像您提到的那样与 DSP 时钟的时间周期相乘。 如果 DSP 以750MHz 的频率运行、则[时间=周期*(1/(750) )]希望这有所帮助。

    此致、

    此致、

    Rahul