评估适合嵌入式平台的高级算法

时间:2019-02-03 20:44:52

标签: image-processing computer-vision embedded real-time

要评估高级算法(主要是计算机视觉算法,用Matlab,Python等编写)以在嵌入式CPU上实时运行,您将考虑采用什么流程。

我们的想法是在您无法在目标硬件上实施或概要分析时,在早期进行可靠的评估/计算。

为了使事情集中,让我们假设您的输入是灰度QVGA帧,8bpp @ 30fps,并且您必须对每个输入帧执行完整的canny边缘检测。我们如何找到或估算成功执行此操作所需的最低处理能力?

1 个答案:

答案 0 :(得分:1)

不可能进行一般评估,而您所要求的是繁琐的体力劳动。

但是,您可以遵循一些通用步骤以得出一个大概的想法

  1. 根据基本的数学运算(例如加法和乘法)(最佳/平均/最差?您的选择)估算算法的运行时复杂度。
    您需要浮点支持吗?
    还要跟踪高级数学运算,例如饱和加/减(为什么?请参见第3点)。

  2. 消除目标处理器的ISA,并特别关注数学和分支指令。
    乘法需要几个周期?或者,您的处理器是否每个周期调度几个?

  3. 查看您的处理器是否支持类似功能,

    • 饱和数学。
      ARM Cortex-M4做到了。 PIC18单片机不会,这会产生额外的执行开销。
    • 硬件浮点运算。
    • 分支预测。
    • SIMD。
      如果可以针对您的算法进行量身定制,将会大大提高速度。
  4. 由于您明确要求输入abc,因此请查看您是否附加了CPU。图像处理算法通常受益于其中一种。

  5. 将您的操作(从步骤1开始)映射到目标处理器所支持的(在步骤3中)以得出估算值。

  6. 您需要考虑的其他因素(不计其数)

    • 您打算在目标上运行操作系统还是准系统?
    • 您的算法受IO瓶颈约束吗?
    • 如果您的处理器具有缓存,那么您的算法利用它的效率如何?