Yolov5目标检测教程——环境配置、模型训练、C#部署

目录

1、环境配置

1.1、Yolov5源码下载

1.2、Yolov5源码所需的环境和依赖包安装

1.3、安装cuda和pytorch(后续只用CPU进行训练的话可以跳过)

1.4、检验Yolov5是否能正常运行

2、模型训练

2.1、数据集准备

2.2、训练模型

2.3、验证训练好的模型(这步一般是写论文出数据用的,没需求可以不用验证)

2.4、使用训练好的模型

3、C#部署

3.1、将.pt文件导出为.onnx文件

3.2、下载Yolov5部署于C#中的源码

3.3、生成C#使用.onnx文件需要的配置文件

3.4、用C#从零编写Yolov5目标检测的窗体demo程序

3.4.1、用.NET6.0框架编写窗体程序的步骤

3.4.2、C#部署Yolov5进行自己所需的目标识别的配置以及demo程序

教程开始之前,请确保安装好AnacaondaPycharm。直接在官网下载安装就好,由于下载安装的过程比较简单,本教程不详细阐述。

1、环境配置

1.1、Yolov5源码下载

Yolov5源码官网下载地址:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

点击链接后,进入以下界面,可点击“Code”→“ Download ZIP”下载Yolov5源码。

解压后进入解压后的文件路径,如下图所示,即Yolov5的工程文件中。输入“cmd”,进入下图所示的命令行界面。

1.2、Yolov5源码所需的环境和依赖包安装

(在此之前,确保电脑下载安装好Anaconda)

下载Python解释器,创建Python的虚拟环境:在命令行界面中输入“conda create -n py385_yolov5 python==3.8.5”并按ENTER键执行,如下图所示。

如下图所示,创建虚拟环境的过程中卡在“Proceed ([y]/n)?”,直接按下ENTER键就行。

安装完成后,激活安装好的虚拟环境:如下图所示,输入“conda activate py385_yolov5”并按ENTER键执行,出现“py385_yolov5”表示激活成功,当前正处于py385_yolov5的虚拟环境下。

下一步是在这个Python的虚拟环境中安装Yolov5需要的各种依赖包,在下载各种包之前,为了防止下载速度慢甚至直接卡住,可以先切换一下中科大提供的国内镜像源:直接复制以下内容粘贴到命令行,则会自动执行切换源的指令。

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

切换了镜像源之后就可以在这个Python的虚拟环境中安装Yolov5需要的各种依赖包,Yolov5需要的所有包的名字及版本都在解压后Yolov5工程文件中的“requirements.txt”文件里,所以可以直接在命令行输入“pip install -r requirements.txt”并按ENTER键进行安装,如下图所示。

1.3、安装cuda和pytorch(后续只用CPU进行训练的话可以跳过)

如果要用GPU进行训练的话,还需要正确安装cudapytorch

在安装之前,先查看是不是已经安装好了torch,因为“requirements.txt”文件中包含了torch,上一步安装依赖包的时候已经装了一个版本。具体操作为在命令行中输入“pip show torch”,如果有torch的版本等相关信息输出,说明已经装了一个版本,我们可以用“pip uninstall torch”命令把它卸载了(因为这个torch大概率不是我们需要的GPU版本的torch,需要自己重装过),卸载完成后再用“pip show torch”命令就可以查看有没有卸载成功,没有torch的信息输出就说明卸载成功了。

在安装cuda和pytorch之前,一定要先全部确认完要安装的版本。

先确定要安装的cuda的版本:用“nvidia-smi”命令查看电脑的GPU支持的cuda的版本,如下图所示,这里是“12.3”,意思是支持版本等于或低于12.3版本的cuda,建议安装的时候选择小于12.3版本的cuda,例如“12.1”。

确定了cuda版本后先不要安装,要先确认要安装的pytorch版本,因为pytorch不一定支持所有版本的cuda。

确定要安装的pytorch版本,可进入官网Previous PyTorch Versions | PyTorch,选择一个版本的torch版本,如下图所示,这里选择2.2.0版本的torch,注意一定要选择有“# CUDA xx.x”(根据电脑GPU支持的cuda版本选择)的命令安装torch,例如这里的“conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia”或“pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu121”,这两个命令选一个粘贴在命令行中运行就可以下载torch了,这样就会安装支持cuda12.1的torch了。下载安装torch的时候可能会因为国外源的原因下载很慢或者下载失败,亲测用“conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia”命令下载安装torch会好一点。下载好之后也可以用“pip show torch”检查是否安装成功。

之后就是安装cuda了,这里已经确定了安装“12.1”版本的cuda,所以我们去官网CUDA Toolkit Archive | NVIDIA Developer选择这个版本的cuda安装就好,例如这里选择如下图所示的版本的cuda(12.1.x都可以)。

如下图所示,根据自己的电脑配置选择参数下载就可以。

下载完成后,安装就可以,安装时注意“安装选项”选择“自定义”,然后将“驱动程序组件全部勾选。默认安装路径是“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1”,记住这个CUDA的安装目录。

这样安装好CUDA后,还没有全部完成,还需要去cuDNN官网cuDNN Archive | NVIDIA Developer下载cuDNN,选择支持CUDA的版本,刚刚下载的CUDA是哪个版本就选择对应的版本,CUDA 12.x则代表支持CUDA12代版本的所有版本,这里选择如下图所示的版本。

下载完cuDNN后会得到一个压缩包,解压后如下图所示将cuDNN文件夹里面的三个文件复制到CUDA的安装目录下直

### 如何在C#环境中部署YOLOv5模型 #### 准备工作 为了成功地在C#环境下部署YOLOv5模型,需准备相应的环境和工具。这包括安装Visual Studio作为开发平台,并配置好.NET框架支持WinForms应用程序的创建[^1]。 #### 导出YOLOv5模型至ONNX格式 首先,需要将训练好的PyTorch版本的YOLOv5模型转换成ONNX(Open Neural Network Exchange)格式。此过程可以通过官方提供的脚本完成,确保导出的是适用于推理阶段优化过的YOLOv57.0版本模型[^2]。 ```bash python export.py --weights yolov5s.pt --include onnx ``` 这段命令会基于指定权重文件`yolov5s.pt`生成对应的`.onnx`文件用于后续加载到C#程序中。 #### 使用OpenCVSharp处理图像并调用模型 对于C#端而言,推荐采用开源库OpenCVSharp来辅助操作图像数据流以及利用其内置的支持深度学习网络接口(CvDnn)执行前向传播计算。具体来说,在项目里引入NuGet包`OpenCvSharp4`及其依赖项后即可着手编写核心逻辑代码。 ```csharp using OpenCvSharp; using OpenCvSharp.Dnn; // 加载预训练YOLOv5 ONNX模型 var net = Dnn.ReadNetFromONNX("path/to/yolov5.onnx"); // 设置输入尺寸和其他参数 net.SetInputSize(new Size(640, 640)); net.SetPreferableBackend(Dnn.Backend.CUDA); // 如果有GPU加速选项的话可以选择CUDA backend net.SetPreferableTarget(Dnn.Target.CPU); // 对单张图片进行预测 Mat img = Cv2.ImRead("test.jpg"); List<Mat> outputBlobs = new List<Mat>(); net.Forward(outputBlobs); ``` 上述片段展示了基本的工作流程——初始化神经网络实例、调整必要的运行时设置、读入待测样本并通过调用`Forward()`方法触发实际推断动作。 #### 实现视频或摄像头实时检测功能 除了静态图片外,还可以进一步扩展应用范围至动态场景下的人工智能视觉任务。借助于OpenCVSharp强大的多媒体处理能力,能够轻松获取来自本地磁盘上的视频文件或是连接设备传输过来的画面帧序列来进行连续不断的物体识别作业。 ```csharp VideoCapture capture = new VideoCapture(0); // 打开默认摄像机 while (true) { Mat frame = new Mat(); if (!capture.Read(frame)) break; // 当无法继续捕获新画面时退出循环 // ... 进行同样的预处理与推理步骤 ... // 显示结果窗口 Cv2.ImShow("Detection", frame); if (Cv2.WaitKey(1) >= 0) break; } ``` 以上代码段实现了简单的实时监控界面设计思路,其中包含了无限次迭代直至用户主动终止的过程控制机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值