SOPHON SDK实现模型转换程序优化方案

SOPHON SDK实现模型转换程序优化方案

  • 前后处理加速
  • 模型编译
  • bmlang开发
  • 推理加速
  • 流程优化加速

前后处理加速

编解码使用bm_ffmpeg/bm_opencv
前处理中图片处理部分尽量采用bmcv来进行加速,优先使用带有vpp的接口
必要时候使用libyuv,基于ARM neon加速(SoC)
nms等后处理使用硬件加速接口

模型编译

  1. 精度满足的条件下,使用轻量级的模型

  2. 打开Winograd选项 (使能Winograd需要在calibration_use_pb和bmnetu命令中同时打开相应选项;Winograd优化仅针对卷积核为3x3的卷积运算)

bmlang开发

  1. 使用尽可能少的操作
  2. 让数据访问只发生在本地存储
    • 尽量少使用 全局操作;
    • 集中且连续的使用 本地操作来完成计算;
    • 编程中相邻 本地操作尽可能是生产者消费者关系。
  3. 科学切割数据,合理的Tensor 数据排布将提升 TPU 计算单元使用率
  4. 使能数据切分优化(尽量设置 shape 不大于 4 维,若数据很大,在设置 shape 时优先将大数设置在 S2 维度,其次 S0 维度)

推理加速

  1. 推理的时候采用4N batch模式
  2. 使用INT8量化模型推理
  3. 对动态网络使能cache

流程优化加速

  1. 优化模型流水线,多线程方式优化,VPU/JPU/VPP/CPU/TPU的并行
  2. 减少不必要的内存拷贝
  3. 视频流抽帧处理,我们的ffmpeg支持只解关键帧的设置

你可能感兴趣的:(SOPHON,SDK常见问题,人工智能)