计算机系统应用教程网站

网站首页 > 技术文章 正文

跨平台AI模型部署神器:FastDeploy实战Yolov5

btikc 2024-09-02 16:49:39 技术文章 14 ℃ 0 评论

简介

FastDeploy 是一款易用、高效的 AI 模型部署工具。

它旨在简化 AI 模型从训练到部署的整个流程,支持在多种硬件和操作系统上进行模型推理。

特点如下:

多平台支持FastDeploy 支持在云、边、端等多种环境中部署模型,包括但不限于 WindowsLinuxAndroidiOS 等操作系统。

多硬件兼容 : 支持多种硬件平台,如 Intel CPUNVIDIA GPUJetsonARM 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种导出格式,分别是 TorchScriptONNXCoreML

打开 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同名

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表