yolov8学习笔记_01

1.将pt模型导出为onnx模型

在导出onnx库的时候,出现以下错误:

ONNX: export failure ❌ 15.3s: DLL load failed while importing onnx_cpp2py_export

这时候需要进入虚拟环境,安装onnx库

参考博客

conda安装onnx_conda onnx-CSDN博客

conda安装onnx_conda onnx-CSDN博客

1.1 安装ONNX库

首先,进入虚拟环境, 我建立的虚拟环境名称为:yolov8

打开Anacoda Prompt ,输入以下指令

conda activate yolov8

接着输入

conda install -c conda-forge onnx

输入yes

至此,库安装完成

1.2 导出代码(ONNX)

在yolov8的源码艮目录下,新建一个python文件,输入以下代码,执行

from ultralytics import YOLO #加载模型 注意.pt文件的路径 model=YOLO(model='yolov8n.pt') #导出模型 model.export(format="onnx")

1.3官方文档参考

导出 -Ultralytics YOLO 文档

导出 -Ultralytics YOLO 文档

2.导出为TensorRT模型

GITHUB地址

guojin-yan (颜国进) · GitHub

2.1 TensorRT-CSharp-API-TensorRtSharp编译

首先编译这个项目,参见附件,或者从GITHUB上下载最新的,使用最新的项目,要注意对应的编译方法,可能和附件的不一样

tensorrt-csharp-api-tensorrtsharp2.0.zip

具体步骤参见博客:【TensorRT】TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型(上篇)-CSDN博客

【TensorRT】TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型(上篇)-CSDN博客

或者这个PDF文件

【tensorrt】tensorrt c# api 项目介绍:基于c#与tensorrt部署深度学习模型(上篇)-csdn博客.pdf

这里需要注意的是:在编译TensorRT-CSharp-API-TensorRtSharp时,可能会报错

2.2 YoloDeployCsharp-yolov1

这个是模型测试平台,编译注意以下:

这个问题已经解决,是缺少某个DLL文件, 到底是哪个我也不知道,暴力解决就是:将下载TensorRt下的LIB文件(TensorRT-8.6.1.6\lib里的文件)全部复制到生成的DEBUG目录下

需要将TensorRT-CSharp-API-TensorRtSharp2.0 C++工程生成的TensorRtExtern.dll也复制进去

2.3导出注意

1.时间比较久,慢慢等待

2.在哪个GPU上导出的就在哪个GPU上用,不同的GPU需要重新导出,同时需要重新编译TensorRT-CSharp-API-TensorRtSharp项目

3.编译源码下的openvino c++样例工程

在下载的源码里面,/ultralytics-main/examples 文件夹下下面有样例工程,本次以 YOLOv8-OpenVINO-CPP-Inference 这个工程为例,详细描述如何使用cmake 生产msvc源码

3.1 新建一个Build文件夹

这个文件夹就是要存放编译好的源码的地方,名称可以随意,路径可以随意,建议:放在和源码同级目录,以build命名。

如下图所示:

3.2打开cmake

按照图下步骤,执行

1.打开源码路径

2.选择编译路径

这里建议将bulid目录放在与源码同级目录下

3.清除缓存

3.3构建MSVC2019工程

3.3.1 cmake配置1

1.勾选高级

2.配置

3.下拉选择Visual Studio 16 2019

4.下拉选择x64

3.3.2 cmake配置2

这里需要着重关注的是:opencv的路径,关于opencv,可以查看另一篇关于opencv的学习记录 opencv 学习记录

3.3.3 生成MSVC2019源码

3.3.4查看源码

生成的源码在build目录下,如下图所示,yolov8_openvino_example.sln就是VS的解决方案,使用vs2019打开

3.4 VS2019调试源码

生成的解决方案,使用VS2019打开

3.4.1 重新生成

右击detect,重新生成

报错1 openvino/openvino.hpp

无法打开包括文件: “openvino/openvino.hpp”: No such file or directory detect

无法打开包括文件: “openvino/openvino.hpp”: No such file or directory detect

解决方法

openvino是需要自行安装的,详见另一篇学习笔记 1.QT6.5使用OpenVINO

找到openvino的安装路径,引用就可以了,

打开项目属性

配置属性-常规-C/C++ 附加包含目录

添加opnvino的include路径,

重新生产

查看gif

报错2:libopenvino.so“

无法打开文件“\path\to\intel\openvino\runtime\lib\intel64\libopenvino.so“

解决方法

右击detect项目,属性-链接器-常规-附加库目录-新建-D:\openvino_2024.3.0\runtime\lib\intel64\Debug

连接器-输入-附加依赖项- 删除\path\to\intel\openvino\runtime\lib\intel64\libopenvino.solibopvino.so

连接器-输入-附加依赖项 添加以下内容

openvinod.lib openvino_cd.lib openvino_onnx_frontendd.lib openvino_paddle_frontendd.lib openvino_pytorch_frontendd.lib openvino_tensorflow_frontendd.lib openvino_tensorflow_lite_frontendd.lib

重新生成

3.4.2 调试

3.4.2.1添加调试参数

源码生成成功后,项目detect右击-属性-配置属性-调试-命令参数 输入以下内容:

D:\yolov8n.onnx D:\bus.jpg

然后重新生成。

路径根据实际来

D:\yolov8n.onnx:模型文件路径 D:\bus.jpg:测试图片路径 两者中间用空格分开

3.4.2.2设定启动项目

项目detect右击-设定为启动项目

3.4.2.3 调试

点击 本地 Windows 调试器

3.4.2.4 报错 找不到openvinod.dll

由于找不到openvinod.dll,无法继续执行代码。重新安装程序可能会解决此问题。

解决方法:

目录根据实际来

将openvino安装目录下\runtime\bin\intel64\Debug的dll复制到生产的debug目录下

我这里是安装到了C盘,具体目录如下:

C:\Program Files (x86)\Intel\openvino_2024.3.0\runtime\bin\intel64\Debug 将这个目录下的dll文件复制到vs工程生成的 debug下

我这里是在

D:\8.yolo\3.yolov8Demo\ultralytics-main\examples\YOLOv8-OpenVINO-CPP-Inference\bulid\Debug

如图所示:

重新执行调试

3.4.2.5报错 找不到tbb12_debug.dll

由于找不到tbb12_debug.dll,无法继续执行代码。重新安装程序可能会解决。

解决方法:

目录根据实际来

将openvino安装目录下\runtime\3rdparty\tbb\bin目录下的 tbb12_debug.dll 复制到 vs生成的debug目录下

如图所示

3.4.2.6报错 帧不在模块中

经过断点调试,报错的代码位置:inference.cc ->

void Inference::RunInference(cv::Mat &frame) { 
    Preprocessing(frame); // Preprocess the input frame
    inference_request_.infer(); // Run inference //执行这行代码的时候就报错 
    PostProcessing(frame); // Postprocess the inference results 
}

这个报错原因很奇怪,我也没有研究,

解决方法:

将void Inference::RunInference 方法里面的代码改成付下所示:

void Inference::RunInference(cv::Mat &frame) {
	//Preprocessing(frame); // Preprocess the input frame
	cv::Mat resized_frame;
	cv::resize(frame, resized_frame, model_input_shape_, 0, 0, cv::INTER_AREA); // Resize the frame to match the model input shape

	// Calculate scaling factor
	scale_factor_.x = static_cast<float>(frame.cols / model_input_shape_.width);
	scale_factor_.y = static_cast<float>(frame.rows / model_input_shape_.height);

	float* input_data = (float*)resized_frame.data; // Get pointer to resized frame data
	const ov::Tensor input_tensor = ov::Tensor(compiled_model_.input().get_element_type(), compiled_model_.input().get_shape(), input_data); // Create input tensor
	inference_request_.set_input_tensor(input_tensor); // Set input tensor for inference

	inference_request_.infer(); // Run inference
	PostProcessing(frame); // Postprocess the inference results
}

重新生成

3.4.3调试成功

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的内容,YOLOv8是一种目标检测模型。与YOLOv5相比,YOLOv8的yaml配置文件改动较小。YOLOv8采用了Anchor-Free的思想,使用VFL Loss、DFL Loss和CIOU Loss作为分类损失函数,并采用了Task-Aligned Assigner匹配方式进行样本匹配。此外,YOLOv8还引入了YOLOv8 Nano(速度最快)和YOLOv8 Extra Large(准确性最高)等不同规模的模型。 如果你想学习YOLOv8的相关知识,可以参考官方文档或者专业的教程。这些资源可以帮助你理解YOLOv8的原理、配置文件和模型性能,并帮助你开始使用和学习YOLOv8。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOv8模型学习笔记](https://blog.csdn.net/pengxiang1998/article/details/129151514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [YOLOv8学习笔记](https://blog.csdn.net/GoodTime1110/article/details/129767920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值