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

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

简介

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

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

特点如下:

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

多硬件兼容 : 支持多种硬件平台,如 Intel CPUNVIDIA GPUJetsonARM 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

image.png

yolov5模型导出

yolov5 模型训练已经在前面的文章中讲解了,此处不在重复说明。本文以上篇训练的模型为测试模型。

由于 fastDeploy 需要的模型是 ONNX 格式的,所以 yolov5 需要转换模型。

yolov5 默认是注释掉了模型导出的依赖的,需要开启依赖

安装依赖

如图所示打开依赖注释,再安装依赖


pip install -r requirements.txt

image.png

export.py 脚本

export.py,这个是专门用来将 pytorch 训练出来的 .pt格式 的模型文件转化为其他格式.

这个脚本有3种导出格式,分别是 TorchScriptONNXCoreML

打开 pycharm ,点击运行调试配置。新建一个运行环境:

image.png

输入以下运行参数:


--weights ./runs/train/exp3/weights/best.pt --data ./data/head.yaml --include onnx

--weights :是你训练好的模型文件

--data :是你训练模型时的配置文件

--include :是你想要转换成的模型格式,fastDeploy 需要的模型是ONNX

导出转换模型

运行刚配置的运行配置:

image.png

查看导出目录:

image.png

模型推理

yolov5 转换的模型移到推理目录,准备好测试图片。此时项目目录如下:

image.png

新建一个推理文件 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


image.png

查看结果:

image.png

总结

FastDeploy 的设计目标是降低 AI 模型部署的复杂性和门槛,使得开发者能够快速将训练好的模型部署到实际应用中,加速 AI 技术的落地和应用。

通过提供多平台支持、多硬件兼容以及对多种主流算法模型的兼容,FastDeploy 使得 AI 模型的部署变得更加灵活和高效。

简单易用的 API 设计进一步降低了开发者的使用难度,使得模型推理过程简洁明了。

FastDeploy 不仅提高了模型部署的速度,也提升了模型在各种设备上运行的稳定性和性能,是 AI 模型部署的强大工具。



相关文章
|
18天前
|
人工智能 并行计算 安全
从零到一,打造专属AI王国!大模型私有化部署全攻略,手把手教你搭建、优化与安全设置
【10月更文挑战第24天】本文详细介绍从零开始的大模型私有化部署流程,涵盖需求分析、环境搭建、模型准备、模型部署、性能优化和安全设置六个关键步骤,并提供相应的示例代码,确保企业能够高效、安全地将大型AI模型部署在本地或私有云上。
166 7
|
28天前
|
机器学习/深度学习 人工智能 并行计算
"震撼!CLIP模型:OpenAI的跨模态奇迹,让图像与文字共舞,解锁AI理解新纪元!"
【10月更文挑战第14天】CLIP是由OpenAI在2021年推出的一种图像和文本联合表示学习模型,通过对比学习方法预训练,能有效理解图像与文本的关系。该模型由图像编码器和文本编码器组成,分别处理图像和文本数据,通过共享向量空间实现信息融合。CLIP利用大规模图像-文本对数据集进行训练,能够实现zero-shot图像分类、文本-图像检索等多种任务,展现出强大的跨模态理解能力。
77 2
|
23天前
|
存储 人工智能 分布式计算
Parquet 文件格式详解与实战 | AI应用开发
Parquet 是一种列式存储文件格式,专为大规模数据处理设计,广泛应用于 Hadoop 生态系统及其他大数据平台。本文介绍 Parquet 的特点和作用,并演示如何在 Python 中使用 Pandas 库生成和读取 Parquet 文件,包括环境准备、生成和读取文件的具体步骤。【10月更文挑战第13天】
174 60
|
18天前
|
人工智能 安全 网络安全
揭秘!大模型私有化部署的全方位安全攻略与优化秘籍,让你的AI项目稳如磐石,数据安全无忧!
【10月更文挑战第24天】本文探讨了大模型私有化部署的安全性考量与优化策略,涵盖数据安全、防火墙配置、性能优化、容器化部署、模型更新和数据备份等方面,提供了实用的示例代码,旨在为企业提供全面的技术参考。
53 6
|
20天前
|
人工智能
AI科学家太多,谁靠谱一试便知!普林斯顿新基准CORE-Bench:最强模型仅有21%准确率
【10月更文挑战第21天】普林斯顿大学研究人员提出了CORE-Bench,一个基于计算可重复性的AI代理基准,涵盖计算机科学、社会科学和医学领域的270个任务。该基准旨在评估AI代理在科学研究中的准确性,具有多样性、难度级别和现实相关性等特点,有助于推动AI代理的发展并提高计算可重复性。
39 4
|
22天前
|
人工智能 数据安全/隐私保护 UED
RAG让AI大模型更懂业务解决方案部署使用体验
根据指导文档,部署过程得到了详细步骤说明的支持,包括环境配置、依赖安装及代码示例,确保了部署顺利进行。建议优化知识库问题汇总,增加部署失败案例参考,以提升用户体验。整体解决方案阅读与部署体验良好,有助于大型语言模型在特定业务场景的应用,未来可加强行业适应性和用户隐私保护。
60 5
|
19天前
|
人工智能 分布式计算 数据可视化
大模型私有化部署全攻略:硬件需求、数据隐私、可解释性与维护成本挑战及解决方案详解,附示例代码助你轻松实现企业内部AI应用
【10月更文挑战第23天】随着人工智能技术的发展,企业越来越关注大模型的私有化部署。本文详细探讨了硬件资源需求、数据隐私保护、模型可解释性、模型更新和维护等方面的挑战及解决方案,并提供了示例代码,帮助企业高效、安全地实现大模型的内部部署。
43 1
|
19天前
|
人工智能 分布式计算 数据可视化
大模型私有化部署全攻略:硬件需求、数据隐私、可解释性与维护成本挑战及解决方案详解,附示例代码助你轻松实现企业内部AI应用
【10月更文挑战第23天】随着人工智能技术的发展,大模型在各领域的应用日益广泛。然而,将其私有化部署到企业内部面临诸多挑战,如硬件资源需求高、数据隐私保护、模型可解释性差、更新维护成本高等。本文探讨了这些挑战,并提出了优化硬件配置、数据加密、可视化工具、自动化更新机制等解决方案,帮助企业顺利实现大模型的私有化部署。
51 1
|
22天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
24天前
|
Serverless 数据安全/隐私保护 前端开发
大模型代码能力体验报告之贪吃蛇小游戏《一》:Claude.ai篇 - 生成、预览和快速部署的serverless一条龙
本文介绍了通过Claude.ai生成并优化Web版贪吃蛇游戏的过程,展示了其强大的代码生成功能及用户友好的界面设计。从初始版本的快速生成到根据用户反馈调整游戏速度,再到提供多种实用工具如文件管理、版本控制和一键部署,Claude.ai不仅是一个代码助手,更像是一个全面的serverless开发平台。文中还呼吁国内厂商关注此类技术的发展。