快速体验BaseDeploy

模型部署是AI应用的重要一环,因其涉及的框架量大、推理代码风格不一等问题,往往会对初学者的上手造成一定的难度。为此,XEdu团队推出了模型部署工具BaseDeploy,其代码风格向MMEdu对齐,通过对推理核心代码的封装,目标是用户能够更加专注于科创作品功能的设计,而将AI模块作为接口的黑盒,能够对其返回的结果进行二次创作。

当前,BaseDeploy主要支持onnxruntime的部署形式,只要将模型文件转换为onnx格式,即可轻松部署到绝大多数硬件上,如行空板、树莓派之类的边缘硬件或者开源硬件。

设计理念

绝大多数的边缘硬件支持ONNX,MMEdu和BaseNN训练的模型也提供了转换为ONNX的功能,那么就可以借助ONNX推理,实现模型在开源硬件上的使用。

BaseDeploy通过传入ONNX模型的路径加载为一个模型,通过model.inference即可完成模型的推理,从而可实现借助BaseDeploy完成模型部署。

库文件源代码可以从PyPi下载,选择tar.gz格式下载,可用常见解压软件查看源码。

文档涉及的部分代码见XEdu帮助文档配套项目集:https://www.openinnolab.org.cn/pjlab/project?id=64f54348e71e656a521b0cb5&sc=645caab8a8efa334b3f0eb24#public

【强调】:2023年10月,XEdu心推出了XEduhub,已经提供了模型推理工具,BaseDeploy将重点关注模型部署于更多开源硬件之上,关注模型的转换。如果仅仅是推理模型,建议使用XEduhub。

示例代码

示例代码一:

from BaseDT.data import ImageData
import BaseDeploy as bd
model_path = './mymodel.onnx'
dt = ImageData(img_path, backbone='训练的模型名称,例如MobileNet')
model = bd(model_path)
pred_onx = model.inference(dt)
result = model.print_result(pred_onx)

本段代码实现的功能是将BaseDT预处理好后的图片传入BaseDeploy推理函数进行推理,并将推理结果返回。关于BaseDT处理图片的说明详见BaseDT部分

示例代码二:

import BaseDeploy as bd
model_path = './mymodel.onnx'
model = bd(model_path)
pred_onx = model.inference(img_path)
result = model.print_result(pred_onx)

本段代码实现的功能是将图片路径传入BaseDeploy推理函数进行推理,并将推理结果返回。

示例代码三:

import cv2
import BaseDeploy as bd
model_path = './mymodel.onnx'
cap = cv2.VideoCapture(0)
ret, img = cap.read()
model = bd(model_path)
pred_onx = model.inference(img)
result = model.print_result(pred_onx)
cap.release()

本段代码实现的功能是将cv2调用摄像头拍摄的图片传入BaseDeploy推理函数进行推理,并将推理结果返回。此处代码与借助MMEdu完成模型转换后生成的示例代码非常相似。

实现效果如下:

  • 图像分类

../_images/base_cls.png

  • 目标检测

../_images/base_detect.png