前言:
本文为笔者最近两天尝试使用FastDeploy进行一个快速的模型部署实践下面简单介绍一下关于FastDeploy是什么,相较于传统部署的优势,装的时候遇到的小问题,最后还有安装的教程以及简单的部署实战。
FastDeploy一个低门槛,时间快,可以做到一次训练,一套模型,随处部署,运用灵活,拓展性强大的一款高效的AI推理部署工具,覆盖当前大部分热门的部署项目,覆盖各大主流硬件NVIDIA ,intel等,4类操作系统Windows,Linux,Android,iOS.不同架构平台设备,轻松部署,所以Fastdeploy的优势不言而喻
FastDeploy GitHub链接:https://github.com/PaddlePaddle/FastDeploy/tree/develop
接下来是Fastdeploy的快速安装
安装前的要求:
- CUDA >= 11.2、cuDNN >= 8.0、Python >= 3.6
- OS: Linux x86_64/macOS/Windows 10 (win11也是可以的)
FastDeploy的安装
安装GPU版本
pip install numpy opencv-python fastdeploy-gpu-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
安装CPU版本
pip install numpy opencv-python fastdeploy-python -f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
conda安装(推荐)
conda config --add channels conda-forge && conda install cudatoolkit=11.2 cudnn=8.2
注:conda安装完可能遇到的问题(没遇到可忽略)
这里有一点需要注意如果说你在conda的虚拟环境里面成功装了CUDA11.2 最后运行告诉你FastDeploy 仍然无法正确识别你的 CUDA 路径就需要手动添加一下
解决方法:因为之前笔者的电脑装过CUDA12.1版本,这里做个解决演示
首先找到装到虚拟环境里的CUDA11.2的位置,这个一般直接在Anaconda如红箭头所示的位置pkgs这个文件夹里,点击然后复制好这个路径
接着把环境路径改一下(建议先把之前用的CUDA路径备份截个图,防止后面要改)
好了这就可以解决了!(没有遇到这个问题的可以直接忽略这个)
FastDeploy部署示例
这里笔者提供官网下载的模型(x和n模型),一张预测图片,和一个简单部署代码示例
模型和预测图片百度网盘链接(含图)
链接:https://pan.baidu.com/s/14Hs9oMtrx-4GNVuMx-EQ2w
提取码:yyds
如果是自己的pt文件要转onnx的可以看笔者另一篇博客链接:YOLOv8模型转换pt->onnx(附上代码)
原始图片如下:
简单的部署示例(代码)
使用的例子是YOLOv8x的模型
import fastdeploy as fd
import cv2
def build_option():
option = fd.RuntimeOption()
option.use_gpu()
return option
# 配置运行时环境,加载模型
runtime_option = build_option()
model = fd.vision.detection.YOLOv8('D:/Web page download/yolov8x.onnx', runtime_option=runtime_option)
# 读取图像并进行预测
image_path = 'D:/Web page download/111.png' # 图片路径
image = cv2.imread(image_path)
result = model.predict(image)
# 可视化结果
vis_frame = fd.vision.vis_detection(image, result)
# 显示图像
cv2.imshow("Frame", vis_frame)
while True:
# 按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.imwrite('result.png', vis_frame) #图像保存在当前文件夹下
break
# 释放窗口
cv2.destroyAllWindows()
进行了一个简单的图像预测并且在按下q健后释放窗口并把图片保存在了当前文件夹下
结果如图所示
至此,Fastdeploy部署YOLOv8模型的一个样例结束,也可以换成调用摄像头。。
import fastdeploy as fd
import cv2
def build_option():
option = fd.RuntimeOption()
option.use_gpu()
return option
runtime_option = build_option()
model = fd.vision.detection.YOLOv8('D:/Web page download/yolov8x.onnx', runtime_option=runtime_option)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
result = model.predict(frame)
vis_frame = fd.vision.vis_detection(frame, result)
cv2.imshow("Frame", vis_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
好了,小白的一天学习成果就是这些,若有问题恳请大家指出,非常感谢>.<