4.3 Python编程详解

BMNNSDK通过SAIL库向用户提供Python编程接口。

SAIL (Sophon Artificial Intelligent Library) 是 Sophon Inference 中的核心模块。SAIL 对 BMNNSDK 中的 BMLib、BMDecoder、BMCV、BMRuntime 进行了封装,将 BMNNSDK 中原有的“加载 bmodel 并驱动 TPU 推理”、“驱动 TPU 做图像处理”、“驱动 VPU 做图像和视频解码”等功能抽象成更为简单 的 C++ 接口对外提供;并且使用 pybind11 再次封装,提供简洁易用的 python 接口。

这个章节将会选取BMNNSDK2中的SSD检测算法作为示例, 来介绍python接口编程。

样例代码路径:${BMNNSDK}/examples/SSD_object/py_ffmpeg_bmcv_sail

目前,SAIL 模块中所有的类、枚举、函数都在“sail”命名空间下,核心的类包括:

  • Handle:BMNNSDK中BMLib的bm_handle_t的包装类,设备句柄,上下文信息,用来和内核驱动交互 信息。

  • Tensor:BMNNSDK中BMLib的包装类,封装了对device memory的管理以及与system memory的同步。

  • Engine:BMNNSDK中BMRuntime的包装类,可以加载bmodel并驱动TPU进行推理。一个Engine实例可以加载一个任意的bmodel,自动地管理输入张量与输出张量对应的内存。

  • Decoder:使用VPU解码视频,JPU解码图像,均为硬件解码。

  • Bmcv:BMNNSDK中BMCV的包装类,封装了一系列的图像处理函数,可以驱动 TPU 进行图像处理。

其他关于接口的更相信的信息,请阅读${BMNNSDK}/documents/Sophon_Inference_zh.pdf。

本章主要介绍以下三点内容:

  • 加载模型

  • 预处理

  • 推理

4.3.1 加载模型

4.3.2 预处理

4.3.3 推理

最后更新于