简介
FastDeploy 是一款易用、高效的 AI 模型部署工具。
它旨在简化 AI 模型从训练到部署的整个流程,支持在多种硬件和操作系统上进行模型推理。
特点如下:
多平台支持 : FastDeploy 支持在云、边、端等多种环境中部署模型,包括但不限于 Windows、Linux、Android、iOS 等操作系统。
多硬件兼容 : 支持多种硬件平台,如 Intel CPU、NVIDIA GPU、Jetson、ARM CPU 等。
多算法支持 : 支持多种主流算法模型,包括图像分类、目标检测、图像分割、人脸检测、人体关键点检测、文本识别等。
低门槛使用 : FastDeploy 提供了简单易用的 API,开发者可以通过少量代码实现模型的加载、推理和输出处理。
模型推理
FastDeploy 模型推理指的是使用 FastDeploy 工具对已经训练好的 AI 模型进行加载和执行,以完成对新的输入数据的预测任务。
在机器学习和深度学习中,"推理"(Inference)通常指的是模型对新数据进行预测的过程,与模型的训练阶段(Training)相对。
推理过程包含以下步骤:
加载模型:将训练好的模型从磁盘加载到内存中,以便进行推理
预处理输入数据:对新的输入数据进行必要的预处理,比如调整图像大小、归一化等,以匹配模型训练时的数据格式。
执行推理:将预处理后的数据输入模型,模型根据其学习到的参数进行计算,输出预测结果。
后处理输出数据:对模型的输出结果进行必要的处理,比如解码、阈值筛选、非极大值抑制(NMS)等,以获得最终的预测结果。
输出结果:将处理后的预测结果输出,这可能是分类标签、边界框坐标、分割图等,具体取决于模型的类型和任务。
安装
github:https://github.com/PaddlePaddle/FastDeploy/blob/develop/README_CN.md
新建一个目录 fastDeploy-yolo5,本文所用环境是,wind10 conda 虚拟环境 python3.9
本电脑没有 gpu ,就只能安装 cpu 版本。
切换到 fastDeploy-yolo5 目录,激活环境,输入以下安装命令:
pip install numpy opencv-python fastdeploy-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
yolov5模型导出
yolov5 模型训练已经在前面的文章中讲解了,此处不在重复说明。本文以上篇训练的模型为测试模型。
由于 fastDeploy 需要的模型是 ONNX 格式的,所以 yolov5 需要转换模型。
yolov5 默认是注释掉了模型导出的依赖的,需要开启依赖
安装依赖
如图所示打开依赖注释,再安装依赖
pip install -r requirements.txt
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
export.py 脚本
export.py,这个是专门用来将 pytorch 训练出来的 .pt格式 的模型文件转化为其他格式.
这个脚本有3种导出格式,分别是 TorchScript、ONNX、CoreML。
打开 pycharm ,点击运行调试配置。新建一个运行环境:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
输入以下运行参数:
--weights ./runs/train/exp3/weights/best.pt --data ./data/head.yaml --include onnx
--weights :是你训练好的模型文件
--data :是你训练模型时的配置文件
--include :是你想要转换成的模型格式,fastDeploy 需要的模型是ONNX
导出转换模型
运行刚配置的运行配置:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
查看导出目录:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
模型推理
把 yolov5 转换的模型移到推理目录,准备好测试图片。此时项目目录如下:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
新建一个推理文件 infer.py,写入以下内容
import fastdeploy as fd
import cv2
import os
from pathlib import Path
import sys
import platform
def parse_arguments():
import argparse
import ast
parser = argparse.ArgumentParser()
parser.add_argument("--model", default=None, help="Path of yolov5 model.")
parser.add_argument(
"--image", default=None, help="Path of test image file.")
parser.add_argument(
"--device",
type=str,
default='cpu',
help="Type of inference device, support 'cpu' or 'gpu' or 'kunlunxin'.")
parser.add_argument(
"--use_trt",
type=ast.literal_eval,
default=False,
help="Wether to use tensorrt.")
return parser.parse_args()
args = parse_arguments()
FILE = Path(__file__).resolve()
ROOT = FILE.parents[0]
if str(ROOT) not in sys.path:
sys.path.append(str(ROOT)) # add ROOT to PATH
if platform.system() != "Windows":
ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative
model_file = args.model
# params_file = os.path.join(args.model, "model.pdiparams")
model = fd.vision.detection.YOLOv5(
model_file,
"",
runtime_option=None)
# 预测图片检测结果
if args.image is None:
image = fd.utils.get_detection_test_image()
else:
image = args.image
im = cv2.imread(image)
result = model.predict(im)
print(result)
# 预测结果可视化
vis_im = fd.vision.vis_detection(im, result)
cv2.imwrite("visualized_result.jpg", vis_im)
print("Visualized result save in ./visualized_result.jpg")
YOLOv5 模型加载和初始化,其中 model_file 为导出的 ONNX 模型格式。
参数:
- ? model_file(str): 模型文件路径
- ? params_file(str): 参数文件路径,当模型格式为ONNX时,此参数传入空字符串即可
- ? runtime_option(RuntimeOption): 后端推理配置,默认为None,即采用默认配置
- ? model_format(ModelFormat): 模型格式,默认为ONNX格式
运行以下命令测试
python infer.py --model ./model/best.onnx --image ./img/666.jpg --device cpu
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
查看结果:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
总结
FastDeploy 的设计目标是降低 AI 模型部署的复杂性和门槛,使得开发者能够快速将训练好的模型部署到实际应用中,加速 AI 技术的落地和应用。
通过提供多平台支持、多硬件兼容以及对多种主流算法模型的兼容,FastDeploy 使得 AI 模型的部署变得更加灵活和高效。
简单易用的 API 设计进一步降低了开发者的使用难度,使得模型推理过程简洁明了。
FastDeploy 不仅提高了模型部署的速度,也提升了模型在各种设备上运行的稳定性和性能,是 AI 模型部署的强大工具。
– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名
本文暂时没有评论,来添加一个吧(●'◡'●)