0


AI推理部署工具之Fastdeploy

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推理模型。

标签: 人工智能

本文转载自: https://blog.csdn.net/weixin_47285222/article/details/142820678
版权归原作者 码农市民小刘 所有, 如有侵权,请联系我们删除。

“AI推理部署工具之Fastdeploy”的评论:

还没有评论