简介
FastDeploy
是一款易用、高效的 AI
模型部署工具。
它旨在简化 AI
模型从训练到部署的整个流程,支持在多种硬件和操作系统上进行模型推理。
特点如下:
多平台支持 : FastDeploy
支持在云、边、端等多种环境中部署模型,包括但不限于 Windows
、Linux
、Android
、iOS
等操作系统。
多硬件兼容 : 支持多种硬件平台,如 Intel CPU
、NVIDIA GPU
、Jetson
、ARM CPU
等。
多算法支持 : 支持多种主流算法模型,包括图像分类、目标检测、图像分割、人脸检测、人体关键点检测、文本识别等。
低门槛使用 : FastDeploy
提供了简单易用的 API
,开发者可以通过少量代码实现模型的加载、推理和输出处理。
模型推理
FastDeploy
模型推理指的是使用 FastDeploy
工具对已经训练好的 AI
模型进行加载和执行,以完成对新的输入数据的预测任务。
在机器学习和深度学习中,"推理"(Inference
)通常指的是模型对新数据进行预测���过程,与模型的训练阶段(Training
)相对。
推理过程包含以下步骤:
加载模型:将训练好的模型从磁盘加载到内存中,以便进行推理
预处理输入数据:对新的输入数据进行必要的预处理,比如调整图像大小、归一化等,以匹配模型训练时的数据格式。
执行推理:将预处理后的数据输入模型,模型根据其学习到的参数进行计算,输出预测结果。
后处理输出数据:对模型的输出结果进行必要的处理,比如解码、阈值筛选、非极大值抑制(NMS)等,以获得最终的预测结果。
输出结果:将处理后的预测结果输出,这可能是分类标签、边界框坐标、分割图等,具体取决于模型的类型和任务。
安装
github:github.com/PaddlePaddl…
新建一个目录 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 模型部署的强大工具。