算法移植概述
Last updated
Last updated
视频/图片解码
输入预处理
模型推理
输出后处理
而且,因为算法往往会包含多个不同模型的推理,所以,步骤2-4会根据需要反复执行多次。实际上,只针对神经网络运算进行加速,已经无法满足真实场景的需求。1684为了提高算法的运行效率,包含了若干硬件加速模块以及相应的软件接口库,分别针对以上几个步骤进行加速,协助用户开发高效的算法。
为了满足客户对不同风格接口的偏好,我们还对硬件加速接口库进行了多次封装,用户可以自行选取合适的接口库进行开发,具体总结如下:
值得一提的是,为了提高算法效率以及硬件特性的要求,用户在调用硬件加速接口的时候需要注意以下几个 方面,后续的文档会通过实例来进行具体阐述:
1. 内存零copy
2. 申请物理连续内存
3. 将多个预处理步骤进行合并
4. 凑4batch进行推理
目前提供了三种编程接口的支持,BMRuntime、 BMCV、 BMLib三个模块提供给了c接口编程。python/C++接口是基于SAIL库实现的。SAIL 对 BMNNSDK2 中的 BMRuntime、 BMCV、 BMLib 进行了封装,将 BMNNSDK2中原有的“加载 bmodel 并驱动 TPU 推理”、“驱动 TPU 做图像处理”、“驱动 VPU 做图像和视频解码”等功能抽象成更为简单的 C++ 接口对外提供;并且支持使用 pybind11 再次封装,提供简洁的 python接口。目前, SAIL 模块中所有的类、枚举、函数都在“sail”名字空间下, 关于C++/python 接口详细内容请阅读 Sophon_Inference_zh.pdf
算法步骤
支持硬件加速
OPENCV接口库
FFMPEG接口库
Native接口库
视频/图片解码
支持
Y
Y
BMCV(图片)
输入预处理
支持
Y
N
BMCV
模型推理
支持
N
N
BMruntime
输出后处理
部分支持
N
N
BMCV