FastDeploy 通过提供简洁的API接口,让AI推理部署变得更加高效和灵活。适用于多种主流算法模型,且支持跨平台、多硬件兼容等优势。
- 支持 GPU、CPU、Jetson、ARM CPU、瑞芯微NPU、晶晨NPU、恩智浦NPU 等多类硬件;
- 支持Windows、Linux、Android、IOS等操作系统,可本地、服务化、Web端、移动端部署等;
- 支持CV、NLP、Speech 三大领域, 如物体检测、分类、分割、OCR、文本分类、信息抽取、跟踪、语音合成等主流算法。
2、FastDeploy安装
python虚拟环境下,直接使用pip命令,建议带上FastDeploy轮子网址,我这里安装版本为1.0.1。
#cpu版本安装
pip install fastdeploy-python==1.0.1 -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
#gpu版本安装
pip install fastdeploy-gpu-python==1.0.1 -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
如需系统学习python虚拟环境,请转至如下文章链接。
python:windows下管理虚拟环境_windows python 虚拟环境-CSDN博客文章浏览阅读1.4k次,点赞25次,收藏23次。通过miniconda工具,该工具可创建多个虚拟环境,每个虚拟环境内,都可以根据项目对版本的需求,安装python 解释器和 依赖包,并且多个虚拟环境独立管理_windows python 虚拟环境https://blog.csdn.net/weixin_47285222/article/details/141351119
3、yolov5推理部署示例
话不多说,先上推理代码。
下面代码,包含yolov5的完整推理过程,从图像读取,加载模型(onnx格式),在到推理,最后原图上画框(以验证模型推理效果)。我这里用到的模型是单类模型,无分类,示例代码如下。
import fastdeploy as fd
import cv2
#加载onnx格式的模型
self.model = fd.vision.detection.YOLOv5(self.opt.model, runtime_option=runtime_option)
#读取图像
image = cv2.imread(img_path)
#模型预测
result = self.model.predict(image.copy(),
conf_threshold=self.opt.conf_threshold,
nms_iou_threshold=self.opt.nms_iou_threshold)
boxes = result.boxes
if len(boxes) != 0:
for box in boxes:
X1 = box[0]
y1 = box[1]
x2 = box[2]
y2 = box[3]
#原图画框,这里没有区分类别,纯定位
cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), (255, 0, 0), thickness=2)
#画框后的图,保存到本地
cv2.imwrite("./draw/{}.jpg".format(shortuuid.uuid()), image)
fastdeploy工具对于yolo推理,步骤非常简单,像图像预处理(重置大小,归一化等)操作、后处理(非极大值抑制)都包含在API中了,一步到位,简直太省心了。
接下来仍以yolov5检测为例,分步骤(共两步)详解,fastdeploy工具中API的使用方法。
1、加载模型,参数说明如下
- model_file:字符串,表示模型路径
- params_file:字符串,表示参数文件路径。如果模型为ONNX格式,则可为空
- runtime_option:fastdeploy.RuntimeOption类型,以option = fd.RuntimeOption()方式创建,用于设置推理设备,数据大小,推理引擎等。如果为空,则默认使用CPU模式
- model_format:fastdeploy.ModelForamt类型,表示加载模型的格式,默认为ONNX
yolo中有导出onnx格式模型的export脚本,大家训练后可直接生成导出 。这里使用onnx格式是最简单的,因为参数默认即可。
#导包
import fastdeploy as fd
#加载模型
det_model = fd.vision.detection.YOLOv5(model_file, params_file,runtime_option,model_format)
另外,如果有NVIDIA GPU的,可在runtime_option参数中进行设置。
import fastdeploy as fd
option = fd.RuntimeOption()
if device == "GPU":
option.use_gpu()
#加载模型,onnx格式,参数params_file和model_format默认即可
det_model = fd.vision.detection.YOLOv5(model_file,runtime_option=option)
感兴趣的伙伴,可以进入 fd.RuntimeOption() 类中,里面支持很多设置API,不光有设备选择,还有支持panddle和openvion等推理引擎的。这里不一一截图了,大家可根据自己需要,自行探索。
2、模型推理API(predict),yolo检测后处理中的非极大值抑制,需要用到两个阈值参数
这里将yolo中的后处理(非极大值抑制),一并包含在推理过程中了,非常省心,可谓是端到端的一步到位,完整示例代码如下。
import fastdeploy as fd
option = fd.RuntimeOption()
if device == "GPU":
option.use_gpu()
#加载模型,onnx格式,参数params_file和model_format默认即可
det_model = fd.vision.detection.YOLOv5(model_file,runtime_option=option)
#推理
result = det_model.predict(image,conf_threshold,nms_iou_threshold)
得到的结果 result是个字典,包含以下几部分。其中,box,label,score 是我们经常需要用到的,可自行加载。
4、推理部署思路
1.2小节内容以yolov5检测为例,介绍了使用fastdeploy部署推理时,调用API时的代码。
如果大家有不同需求,譬如分类、分割等,亦或者使用其他检测模型,首先应当检查该类模型是否能用fastdeploy工具部署。
譬如先确定是检测、分类,或者是分割等大方向。使用代码提示,如下都会自动提示和填充
#检测
fd.vision.detection
#分类
fd.vision.classification
#分割
fd.vision.segmentation
确定好大方向后,可直接点进该类,查看其包含的模型都有那些。比如检测,如下图所示。
确定有你所用的模型后,在选择使用什么格式加载模型,这步就回归到1.2小节了(我只讲解了onnx格式的部署),可根据API参数说明规范使用。
以上内容,足以让一个新手小白,快速查看和使用fastdeploy工具,部署自己的AI推理模型。
版权归原作者 码农市民小刘 所有, 如有侵权,请联系我们删除。