Python编程详解
这个章节将会选取BMNNSDK2中的SSD检测算法作为示例(examples/SSD_object/py_ffmpeg_bmcv_sail), 来介绍python接口编程。在进行python编程介绍前有必要先阅读Sophon_Inference_zh.pdf中2.1节对sail封装的几个类的介绍。
本章主要介绍以下三点内容:
加载模型
预处理
推理
1. 加载模型
import sophon.sail as sail
engine = sail.Engine(0)
engine.load(bmodel_path)2. 预处理
class PreProcessor:
def __init__(self, bmcv, scale):
self.bmcv = bmcv
self.ab = [x * scale for x in [1, -123, 1, -117, 1, -104]]
def process(self, input, output):
tmp = self.bmcv.vpp_resize(input, 300, 300)
self.bmcv.convert_to(tmp, output, ((self.ab[0], self.ab[1]), (self.ab[2], self.ab[3]), (self.ab[4], self.ab[5])))
bmcv = sail.Bmcv(handle) #图形处理加速模块
scale = engine.get_input_scale(graph_name, input_name)
pre_processor = PreProcessor(bmcv, scale) #预处理初始化
img0 = decoder.read(handle) #解码视频输出image
img1 = bmcv.tensor_to_bm_image(input) #将推理的输入地址挂载到image
pre_processor.process(img0, img1) #预处理3. 推理
Last updated
Was this helpful?