YOLOV5(二):将pt转为onnx模型并用opencv部署

将模型转为onnx、RT等用于部署

yolov5s 6.0自带export.py程序可将.pt转为.onnx等,只需配置需要的环境即可。

1. 安装环境

activate pytorch
pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu  # CPU
pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime-gpu openvino-dev tensorflow  # GPU

报错:NVIDIA-tensorrt安装失败!
解决:从源码安装TensorRt:
①安装CUDNN和CudaToolKit等GPU配置
②从官网下载需要的rt版本:https://developer.nvidia.com/nvidia-tensorrt-8x-download
在这里插入图片描述在这里插入图片描述
③解压后,将lib文件夹添加到环境变量path中
在这里插入图片描述
④将lib中全部文件复制到CUDA的lib\x64文件夹下,并将该x64文件夹路径添加到环境变量path中
在这里插入图片描述
⑤安装RT依赖:

activate pytorch
pip install E:\Anaconda3.5\TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8\TensorRT-8.6.1.6\python\tensorrt-8.6.1-cp39-none-win_amd64.whl

安装完成后会出现successfully的字样,到这里tensorrt已经安装结束。

2. pt转onnx

yolov5自带的export.py可进行转换。yolov5 v6.0版本以后的支持opencv,不需要更改网络层。
命令行启动:

python export.py --weights yolov5s.pt --include onnx --opset 12

程序启动修改处:
在这里插入图片描述
*** opset参数与protobuf有关,当前使用的opencv470,需要设定opset参数为12时才能识别对应的onnx文件。按F5启动程序后,会在原pt文件夹下生成同名的onnx文件。***
测试①:
用yolov5自带的detect.py检测生成的onnx文件,若报错:“onnxruntime::Model::Model Unknown model file format version“
解决:降低onnxruntime版本:

pip install onnxruntime-gpu==1.14 -i  https://pypi.tuna.tsinghua.edu.cn/simple

测试②:
重新配置C++、opencv4.7环境,用opencv的dnn接口读取onnx并检测目标。
:1.用断点调试,测试net读取模型(net = readNet(netPath))能否成功,也有readNetFromONNX等。
2.注意绘图时的边界问题。
3.修改类别、图像路径、权重路径。

//main:

#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>
#include <highgui/highgui_c.h>
#include <iostream>
#include "yolov5.h"
using namespace cv;
using namespace cv::dnn;
using namespace std;
int main()
{
    string img_path = "F:/vscode/006.jpg";
    string model_path = "F:/Object Detec

猜你喜欢

转载自blog.csdn.net/abandononeself/article/details/131976832
今日推荐