YOLOV5实战教程(超级详细图文教程)!!!

这篇具有很好参考价值的文章主要介绍了YOLOV5实战教程(超级详细图文教程)!!!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、使用coco128数据集进行训练

2.1 数据集准备

2.2 进行训练

 三、使用自己制作的数据集进行训练和测试

3.1制作自己的数据集

3.2 开始训练

3.3 模型测试

四、让输入图片显示标签数量​​​​​​​


一、前言

 1.本文的目的在于帮助读者实现yolov5的训练,测试以及使用,偏重应用,将有较少代码讲解

2.本文将首先示范使用coco128数据集进行训练,向读者展示整个模型的使用过程,之后介绍如何制作自己的数据集并进行训练,最后一部分讲解如何让输出图片显示各个标签数量

3.本文使用的数据集coco128放在网盘里了,如果没有这个数据集的话可以去网盘上下载,yolov5的环境配置可以参考站内其他文章。

链接:https://pan.baidu.com/s/1MYSzPkPVUxpE1wt7zUxO0g 
提取码:8r4i

二、使用coco128数据集进行训练

2.1 数据集准备

    下好的数据集应该是如下图所示

YOLOV5实战教程(超级详细图文教程)!!!images文件夹里存放的是我们要训练的图片,labels文件夹里存放的是打过标签的图片

目标检测需要手动进行打标签,这个我会在后面介绍使用自己数据集时进行详细介绍

2.2 进行训练

编译器这里我使用的Pycharm,打开项目如下图

YOLOV5实战教程(超级详细图文教程)!!!

这里我们需要知道两个yaml文件

第一个是data文件夹下的coco128.yaml     数据集参数文件

YOLOV5实战教程(超级详细图文教程)!!!

打开这个文件如下图,这个文件里是我们需要更改训练集以及测试集路径的地方,下面的names是每一个标签,可以看到coco128数据集里的标签数量是非常大的,我们平时自己玩的时候一般不会用到这么多标签。

 YOLOV5实战教程(超级详细图文教程)!!!

 接着我们需要了解的另一个文件是models文件夹下的从yolov5l到yolov5s的训练权重

YOLOV5实战教程(超级详细图文教程)!!!

 我们打开yolov5s这个文件,如下图。这里nc是我们的标签数量。

YOLOV5实战教程(超级详细图文教程)!!!

 以上两个文件我们目前都不用改,只是了解一下方便我们后面使用自己数据集进行测试时讲解

接着我们打开train.py文件,找到这个位置

YOLOV5实战教程(超级详细图文教程)!!!

 --weights 初始训练权重

--cfg 模型参数位置

--data 数据集参数文件

直接开始运行train.py

YOLOV5实战教程(超级详细图文教程)!!!

慢慢等他跑完,最后的结果会存放在

YOLOV5实战教程(超级详细图文教程)!!!

exp到exp10都是你每次训练的结果,我这里训练了10次,所以有10个存放结果的文件夹

打开你最新的结果

YOLOV5实战教程(超级详细图文教程)!!!

weights是训练后模型的权重,随便点开val_batch1_pred.jpg可以看到训练后的效果

YOLOV5实战教程(超级详细图文教程)!!!

 三、使用自己制作的数据集进行训练和测试

3.1制作自己的数据集

制作自己的数据集需要用到工具labelimg,直接在命令行输入下面这行代码进行下载

pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

然后在yolov5项目的文件夹同级建立一个新的文件夹,文件夹名称可以自取,我这里使用DATA

YOLOV5实战教程(超级详细图文教程)!!!

并在DATA文件夹下创建如下两个文件夹和一个predefined_classes.txt文件

YOLOV5实战教程(超级详细图文教程)!!!

 predefined_classes.txt是用来存放你的标签名称,我这里打三个标签分别是hair,eye,hands

YOLOV5实战教程(超级详细图文教程)!!!

接着,将你想要训练的图片放到images文件夹下(数据集100张以上才有一定效果,我这里拿105张动漫图片作演示)

YOLOV5实战教程(超级详细图文教程)!!! 

命令行转到DATA文件夹 

YOLOV5实战教程(超级详细图文教程)!!!

 输入以下指令打开labelimg

labelimg images predefined_classes.txt

 打开效果如下(右下角是文件列表,之前截图时候只放了三张所以列表里只有三张,训练时候有105张)

YOLOV5实战教程(超级详细图文教程)!!!

 点击Change Save Dir选择DATA下的labels文件夹

点击SAVE下的yolo将其切换成yolo(如果刚开始不是yolo就切换成yolo,是的话就不用动)

点击Create RectBox开始画框(打标签)

YOLOV5实战教程(超级详细图文教程)!!!

你会看到下面已经有了几个你之前保存的标签

YOLOV5实战教程(超级详细图文教程)!!!

 打完一张图片的标签可以按“D”键自动保存并进入下一张

YOLOV5实战教程(超级详细图文教程)!!!

 我们可以在labels文件夹里看到自动生成的文件,上面三个是以图片名字命名的用来存放你在该图片中画框坐标位置的文件,最后一个classes是存放标签的文件。

3.2 开始训练

数据集准备好了,现在我们到之前提到的项目文件中

data/coco128.yaml,复制一个这个文件并改名成你自己喜欢的我这里起名any.yaml

YOLOV5实战教程(超级详细图文教程)!!!

打开这个文件,修改path,train和val后的地址,path就是DATA文件地址,train是DATA文件下的images地址,val是测试集,由于我这里数据量较小我就都用images了,读者可以自行添加测试集,方法是在images和labels文件夹下分别创建train和test文件夹分别放入图片

YOLOV5实战教程(超级详细图文教程)!!!

 接着来到我们之前提到的models文件夹下的yolov5s.yaml文件

YOLOV5实战教程(超级详细图文教程)!!!

 复制该文件,并命名为5s_any.yaml,并打开,将nc修改为3(因为有三个标签)

YOLOV5实战教程(超级详细图文教程)!!!

 最后打开train.py,修改如下地址

YOLOV5实战教程(超级详细图文教程)!!!

 只需要改上图三行的地址就可以了,点击运行开始训练

等待训练结束后在runs/train文件夹中可以看到结果,下图是训练效果

YOLOV5实战教程(超级详细图文教程)!!!

 

3.3 模型测试

首先在DATA文件夹下创建test文件夹,在其中放入你想要测试的图片

YOLOV5实战教程(超级详细图文教程)!!!

我们来到项目文件里的detect.py文件,打开,找到如图所示位置

YOLOV5实战教程(超级详细图文教程)!!!

 改--weights后面的地址为runs/train/exp10/weights/last.pt

这里exp10是我第十次训练结果,读者根据自己训练的文件夹名改写,我们打开这个weights文件夹

发现有如下两个文件

YOLOV5实战教程(超级详细图文教程)!!!

 best.pt和last.pt这些都是你训练好的模型权重,你可以理解为这就是你训练好的模型

best.pt是看起来最好的一次,last.pt是最后一次,虽然best是看起来最好的一次但是可能泛化能力不强,所以我这里选择last

我们回到detect.py中继续修改地址

YOLOV5实战教程(超级详细图文教程)!!!

这里--source后的地址要改成你在DATA文件夹下的test文件地址

--data后的地址改成data/any.yaml

点击运行开始detect

结果存放在runs/detect/exp中,可以到这个文件夹查看

四、让输入图片显示标签数量

该部分参考YOLOv5_6.1检测界面显示计数结果-CSDN博客

在detect.py文件中修改如下代码

            if len(det):
                # Rescale boxes from img_size to im0 size
                det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0.shape).round()
                Results = "Results: "
                # Print results
                for c in det[:, -1].unique():
                    n = (det[:, -1] == c).sum()  # detections per class
                    s += '\n'+f"{n} {names[int(c)]}{'s' * (n > 1)}"  # add to string
                    Results += '\n'+f"{n} {names[int(c)]}" # TODO 加了一个变量Results
                    #s += f"{n} {names[int(c)]}{'s' * (n > 1)}, +"  # add to string
 
 
                # Write results
                for *xyxy, conf, cls in reversed(det):
 
                    if save_txt:  # Write to file
                        xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist()  # normalized xywh
                        line = (cls, *xywh, conf) if save_conf else (cls, *xywh)  # label format
                        with open(txt_path + '.txt', 'a') as f:
                            f.write(('%g ' * len(line)).rstrip() % line + '\n')
 
                    if save_img or save_crop or view_img:  # TODO # Add bbox to image
                        c = int(cls)  # integer class分类数
                        label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f} {(det[:, -1] == c).sum()}') # TODO 标签计数展示加在了末尾
 
                        annotator.box_label(xyxy, label, color=colors(c, True))
                        if save_crop:
                            save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True)
 
            # Stream results
            im0 = annotator.result()
            if view_img:
                cv2.imshow(str(p), im0)
                cv2.waitKey(1)  # 1 millisecond
 
            # Save results (image with detections)
            if save_img:
                # 需用循环的方式显示多行,因为cv2.putText对换行转义符'\n'显示为'?'
                y0, dy = 50, 40
                for i, txt in enumerate(Results.split('\n')):
                    y = y0 + i * dy
                    cv2.putText(im0, txt, (50, y), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 255, 0), 2, 2)
                    #cv2.putText(im0, Results, (10, 10), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0, 0, 255), 3) # TODO 左上角显示检测标签和数量

运行detect.py即可得到如下效果,绿色的1 hair显示了标签数量 

YOLOV5实战教程(超级详细图文教程)!!!文章来源地址https://www.toymoban.com/news/detail-469484.html

到了这里,关于YOLOV5实战教程(超级详细图文教程)!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • NodeMCU ESP8266 点亮LED灯手把手教程(图文并茂+超级详细)

    大家如果学过编程,那么 Hello World 往往是大家写下的第一个程序,在C语言中,看着控制台输出 hello world ,也就意味着我们敲开了编程的大门。同样的,点亮一个LED灯可以说是嵌入式里的 hello world 。 NodeMCU ESP8266是一款基于ESP8266芯片的开发板。之前我们有做过介绍,这个开发

    2024年02月05日
    浏览(64)
  • 【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi

    目录 一.【YOLOV5算法原理】 1.输入端 2.Backbone 3.Neck 4.输出端 二.【系统环境】 1.虚拟机的安装与创建 2.安装Ubuntu操作系统 3.环境的配置 3.1.Ubuntu下Anacoda安装以及虚拟环境配置 3.2.Pytorch安装 3.3.Vscode安装 3.4.Yolov5源码及环境获取安装 三. 【测试Yolov5】 四. 【实现自己输入图片/笔

    2024年02月05日
    浏览(55)
  • Yolov5 安装详细教程及目标检测和识别

    文章内容 : 1.在 Anaconda 环境下,进行目标检测程序(Yolov5)的下载及安装,实现 Yolov5 的整体安装; 2.通过调用手机摄像头进行简单的目标检测和识别。 实现目标检测程序的下载及安装,了解目标检测程序的开发过程和环境; 完成简单的目标检测,掌握移动 IP 摄像头对目标

    2024年02月06日
    浏览(50)
  • 博客3:YOLOv5车牌识别实战教程:模型训练与评估

    摘要:本篇博客将详细介绍如何使用YOLOv5进行车牌识别模型的训练与评估。我们将搭建训练环境、准备数据、配置模型参数、启动训练过程,以及使用验证集评估模型性能。 车牌识别视频 正文: 3.1 搭建训练环境   首先,我们需要搭建YOLOv5的训练环境。YOLOv5使用PyTorch框架,

    2024年02月04日
    浏览(34)
  • 使用yolov5训练visdrone2019数据集-详细教程

    首先,新建一个文件夹,命名为yolov5,在yolov5文件夹下新建datasets文件夹 下载yolov5官方源码 链接如下:https://github.com/ultralytics/yolov5 下载源码并解压后产生一个yolov5-master文件夹,将其移动到yolov5文件夹下 下载预训练权重 此外,还需下载预训练权重,根据自己需要下载相应的

    2024年02月06日
    浏览(29)
  • 《Git入门实践教程》前言+目录

    版本控制系统(VCS)在项目开发中异常重要,但和在校大学生的交流中知道,这个重要方向并未受到重视。具备这一技能,既是项目开发能力的体现,也可为各种面试加码。在学习体验后知道,Git多样化平台、多种操作方式、丰富的资源为业内人士提供了方便的同时,也造成

    2024年02月10日
    浏览(50)
  • yolov5识别cf火线敌人(FPS类的AI瞄准)详细教程一

    以下代码只可用于私服,不可商用,代码完全开源, 因为自己的研究方向也是深度学习方向,而且平时闲的时候还喜欢玩会cf火线等枪战,就想着找一个大模型做一个对游戏敌人的识别的功能,一切实现之后就想把自己的心得写出来,我打算分俩个教程分别细述整个学习以及

    2024年02月11日
    浏览(34)
  • yolov5识别cf火线敌人(FPS类的AI瞄准)详细教程二

    以下代码只可用于私服,不可商用,代码完全开源,主要用于学习, 上篇文章已经写了yolov5的基础用法,这篇文章主要是将我对yolov5模型的修改,用于实现对屏幕进行实时监测识别并将鼠标移动到人体指定位置的功能,改动的代码不是很多,我尽量说的详细一些供大家学习。

    2024年02月09日
    浏览(29)
  • YOLOv5论文作图教程(1)— 软件介绍及下载安装(包括软件包+下载安装详细步骤)

    前言: Hello大家好,我是小哥谈。 在学习YOLOv5算法的过程中,很多同学都有发表论文的需求。作为文章内容的支撑,图表是最直接的整合数据的工具,能够更清晰地反映出研究对象的结果、流程或趋势。在发表论文的时候,审稿人除了关注论文的内容和排版外,也会审核图表

    2024年02月08日
    浏览(46)
  • 认识YOLOv5模型结构目录

    接上篇【文献解读】“MOBILEViT:轻量级、通用目的、移动友好的视觉变换器”。-CSDN博客 YOLOv5是一个流行的机器学习模型,用于目标检测任务。根据您希望提升或修改的内容,改进YOLOv5可以涉及多个方面: 模型架构(位于 /models ): 如果希望改变YOLOv5的架构,需要修改通常

    2024年01月21日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包