Python——一文详解使用yolov5进行目标检测全流程(无需gpu)

这篇具有很好参考价值的文章主要介绍了Python——一文详解使用yolov5进行目标检测全流程(无需gpu)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文按步骤详细介绍了使用yolov5进行目标检测的全流程,包括:模型下载、环境配置、数据集准备和数据预处理、模型调整、模型训练、进行目标检测和检测结果分析。本文全部流程使用cpu完成(无需gpu),旨在跑通流程,模型训练过程较慢,且未能到达最优结果。需要 python版本>=3.8。

1. 模型下载

在github上进行模型下载:https://github.com/ultralytics/yolov5

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

2. 配置环境

        首先在pycharm中新建一个Project,我们取名叫deeplearn。将下上步中下载好的yolov5-master.zip解压在该目录中。
        在Anaconda prompt中切换到  '.\deeplearn\yolov5-master' 目录下,执行下面的指令安装所有需要的包(此处建议用清华镜像安装,不然会很慢):

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

        安装完成显示successfully。 

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

3.数据预处理和配置

        需要将我们的训练数据处理成yolov5支持的形式,并配置相应目录。yolov5支持的标签为 txt 格式,yml格式标签转txt格式详见文章:待补充。

3.1 建立数据集目录

        首先,数据目录结构如下:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

        我们将图片放在images文件夹中相应的训练/验证/测试文件夹下,标签放在labels文件夹中相应的文件夹下。

        图片为 jpg 格式,标签为 txt 格式。一张图片对应一个txt标签文件。txt文件的每行标识了图片中的每个目标的类别和位置信息,详情如下:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

其中,每行包含5个字段,分别为:

(1)类别编号(直接用名称会报错),名称转编号可参考如下脚本;

待补充

(2)图框中心点的相对横坐标x(即图框中心点横坐标/图片宽度);

(3)图框中心点的相对纵坐标;

(4)图框相对宽度(即图框宽度/图片宽度);

(5)图框相对高度。

3.2 配置yolov5中的数据文件

        打开 'yolov5-master/data' 路径,找到coco128.yaml,复制一份并重命名为 my_test.yaml。

        修改path参数为images和labels文件夹所在目录,修改train参数为 ./images/train,val参数为:./images/val,test参数为 ./images/test,(注意保留:后的空格),详见下图:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

        修改names为我们用的数据的类别序号和相应类别名称。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

4.模型调整

        打开 'yolov5-master/model' 目录下的 yolov5s.yaml 文件,里面即是我们用到的目标检测模型结构(注:如果用yolov5的其它模型也同理调整,yolov5s、m、l、x模型为从小到大的模型,训练速度从快到慢,效果越来越好。yolov5n是一个折中的新版本,速度比yolov5m快,效果也比它好)。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

将参数nc改成我们的数据的类别总数 20。如下图:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

进行其它简单的模型结构相关调整也在这个文件里。

5. 模型训练

复制一份 .yolov5-master 目录下的 train.py 文件,命名为 my_train.py 。找到第442行  parse_opt() 函数。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

一些必须修改的关键参数已用红框标识:

(1)第445行:--cfg:修改为我们的训练模型配置文件

(2)第446行:--data:修改为我们的训练数据配置文件

(3)第448行:--epochs:训练轮数,需要配置合理的训练轮数,保证模型收敛。(可根据训练结果判断模型是否收敛,详见本文训练结果分析章节)

(4)第449行:--batch-size:批文件数。

(5)第461行:--device:选择用gpu还是cpu运行。本处修改为用cpu运行。如果装了cuda可以用gpu,速度会加快。

还有一些其它常用参数为:

(6)第444行:--weights:模型的初始权重,不做修改会自动下载一份。自行下载相应权重并配置路径。

(7)第464行:--optimizer:模型训练使用的优化器

在my_train.py所在目录下,执行 python my_train.py

会自动下载一份模型的初始参数:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

加载完初始参数后,开始训练

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

第1个epoch,只用gpu训练是真的慢。不过好在跑起来了,坐等结果。1个epoch约20min,10个200min,差不多需要3.5个小时。可以通过增大batch_size减少运行时间。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

运行结束:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

结果在 runs\train\exp4中

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

6.结果查看

运行结果在 .\runs\train\exp4 目录下,包括

(1)模糊矩阵

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

(2)损失函数:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

从损失函数上可以看出我们的模型训练没有收敛,因为数据量小且训练训练轮次少。(受时间和资源限制,就先这样了)

(3)可以看下在验证集上的结果:

真实标签如下图所示

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

我们训练好的模型在验证集上的预测结果为:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

7.目标检测

(1)复制一份 detect.py 文件命名为 my_detect.py。

找到第242行:parse_opt()函数,进行如下调整:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

-- weights:改成我们训练好的最佳权重的路径

-- source:改成待检测图片所在目录

--data:改成我们配置的数据 yaml 文件

--device: 改成cpu

其他参数:

--conf-thres: 置信度阈值,检测结果的置信度高于该阈值。提高该值会减少检测出的目标数。默认值0.25是一个常用的经验参数。

--iou-thres: iou阈值,用于控制非极大值抑制(NMS)中的边界框合并阈值,即两个框的iou值高于该阈值,两个框进行合并。提高该值会增加检测出的目标数。默认值0.45是一个常用的经验参数。

(2)进一步,如果需要调整输出的内容,可以先找到第187行,'if save_txt'处:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

        从第189行,可以看出,加上  --save-conf 后,其输出结果按顺序为:类别编号,图框中心点的相对横坐标x(即图框中心点横坐标/图片宽度),图框中心点的相对纵坐标,图框相对宽度(即图框宽度/图片宽度),图框相对高度,置信度。

        如果我们希望输出的结果是:类别编号,置信度,x0,y0,x1,y1。则可以将第189行相应改为:

 line = (cls, conf, *xyxy) if save_conf else (cls, *xywh) 

执行:

python my_detect.py --save-txt --save-conf

加上 --save-txt 表示输出目标检测结果的txt文件,其标准输出结果同训练数据的标签。

加上 --save-conf 表示检测结果的txt文件中包含检测的置信度。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

对每个测试集图片的检测结果txt文件在labels目录下,内容如下:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

其在原图上的检测框表示在exp2目录下:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

8.查看在测试集上的表现

找到 yolov5-master/val.py,复制一份命名为 my_test.py。找到第342行 parse_opt(),并进行如下修改:

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

(1)第334行:--data:需要改为我们的数据配置yaml文件

(2)第345行:--weights:需要修改为我们训练后的最佳权重

(3)第346行:--batch-size:可以改为和之前一致的8

(4)第351行:--task:取值 test

(5)第352行:--device:使用gpu

(6)第361行:--project:检测结果存储的目录

(7)--conf-thres、--iou-thres:改成检测时用的值(截图里忘改了)

之后在Terminal中,yolov5-master目录下执行指令:

加上 --save-txt 表示输出目标检测结果的txt文件,加上 --save-conf 表示检测结果的txt文件中包含置信度。

python my_test.py --save-txt --save-conf

运行结果如下: 

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法

可以看到相应检测结果结果在 runs\test\exp3目录下,包括检测结果、检测框标记、混淆矩阵、F1曲线、PR曲线等。

python 怎么使用yolov5 模型预测,机器学习,Python,目标检测,python,yolov5,机器学习,目标检测,yolo,计算机视觉,算法文章来源地址https://www.toymoban.com/news/detail-841274.html

到了这里,关于Python——一文详解使用yolov5进行目标检测全流程(无需gpu)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用Django 结合WebSocket 进行实时目标检测呢?以yolov5 为例,实现:FPS 25+ (0: 系统简介与架构)

    访问:http://127.0.0.1:8000/ObjectDetection/ObjectDetection1/ 先看下效果:两个摄像头实时展示 之后更新了效果,打算加上检测结果和 FPS ,结果加上FPS 实测了一下,好家伙一秒30-40 帧都行 在我的3060 上,这是python 写的 前后端实时检测你敢信,还两个摄像头机位。

    2023年04月08日
    浏览(48)
  • YOLOv5+BiSeNet——同时进行目标检测和语义分割

    在Gayhub上看到个项目,有人在YOLOv5的基础上,新增了一个分割头,把BiSeNet语义分割算法加入到了目标检测中,使其能够同时进行目标检测和语义分割。 项目地址:https://github.com/TomMao23/multiyolov5 先看我使用原作者提供的模型,复刻出来的效果: (本来想放视频的,不过传了两

    2024年02月07日
    浏览(46)
  • 【目标检测】yolov5模型详解

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不断进行升级迭代。 Yolov5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本。文件中,这几个模型的结构基本一样,不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数。 yolov5主要分为以下几部分: Input:输入 Backbone:

    2024年02月07日
    浏览(52)
  • 一文详解Yolov5——基于Yolov5的火灾检测系统

    ✨ 原创不易,还希望各位大佬支持一下 textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下 👍 点赞,你的认可是我创作的动力! textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是

    2024年02月03日
    浏览(40)
  • 如何使YOLOv5在检测到目标后进行声音告警提示?

    导师有一个异常行为检测的小任务(吸烟行为检测),给我让我和师弟一起去完成。本身以为在YOLOv5的detect.py检测脚本中加入语音提示很简单,但是其中的过程却是一言难尽。 这也是查阅了很多资料,尝试过了各种大佬分享的经验,集百家之长完成了这个任务,感谢CSDN中各

    2024年01月19日
    浏览(43)
  • 【极市任务——安全帽检测|yolov5】一文带你快速通过任务|使用yolov5[6.0]|和极市说明文档不一样的yolov5内容|python

    目录   时间:2022.6.23 极市的新人任务——安全帽识别通过简单的赛题带我们更好的熟悉了极市比赛、项目的打榜流程。 如果你也是深度学习爱好者,也不妨短暂停留看看!!! 1.开发环境选择 2.配置yolov5环境 3.编写代码 4.模型训练 5.模型测试 6.领取奖励 没有谁的成功是一步

    2024年02月03日
    浏览(57)
  • c++读取yolov5模型进行目标检测(读取摄像头实时监测)

    文章介绍 本文是篇基于yolov5模型的一个工程,主要是利用c++将yolov5模型进行调用并测试,从而实现目标检测任务 任务过程中主要重点有两个,第一 版本问题,第二配置问题 一,所需软件及版本       训练部分 pytorch==1.13.0  opencv==3.4.1   其他的直接pip即可       c++部署 

    2024年02月07日
    浏览(45)
  • 计算机视觉的应用7-利用YOLOv5模型启动电脑摄像头进行目标检测

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用7-利用YOLOv5模型启动电脑摄像头进行目标检测,本文将详细介绍YOLOv5模型的原理,YOLOv5模型的结构,并展示如何利用电脑摄像头进行目标检测。文章将提供样例代码,以帮助读者更好地理解和实践YOLOv5模型。 目录 引

    2024年02月10日
    浏览(58)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算

    单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置文件config中的预设还是很重要 yolo算法作为one-stage领域的佼佼者,采用anchor-based的方法进行目标检测,使用不同尺度的anchor直接回归目标

    2024年02月03日
    浏览(93)
  • 【pytorch】目标检测:新手也能彻底搞懂的YOLOv5详解

    YOLOv5是Glenn Jocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了 n、s、m、l、x 五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020年6月发布至2022年11月已经更新了7个大版本,在v7版本中还添加了语义分割的功能。本文以YOLOv5_v6为媒介,对YOLO

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包