快速体验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完成模型转换后生成的示例代码非常相似。
实现效果如下:
图像分类
目标检测