目标检测第6步:YOLOv5(5.0)如何在Colab中训练自定义数据集?(更新时间:2022.3.22)

(请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客)       

如果看完这篇博文,你的问题还是没有解决,那么请关注我的公众号,后台发消息给我吧,当天回复!

目录

一、收集数据

二、人工标记

1、下载labelimg

2、进行预训练

A、打开界面,滑动到如下图所示位置

B、滑动鼠标滚轮,找到如下位置

C、按照原来训练的命令执行,将coco128数据集下载到本地,观察目录结构。

3、labelimg软件基本操作

A、打开Labelimg软件

B、点击“Open Dir”按钮

C、点击“Change Save Dir”

D、选择标签的类型为YOLO

E、使用默认标签

F、将输入法切换到英文,“w”代表写标签,“d”代表下一张

G、备份整个数据集 

三、训练

1、确认照片的数量和标记之后生成的txt文件数量一致

2、构造yaml文件

3、最后确认目录结构

4、正式训练(谷歌的Colab,需要科学上网)

A、打包数据集

B、上传压缩包

C、在Colab中安装YOLOv5

D、探索数据集文件夹和YOLOv5的目录关系

E、将压缩包移动到笔记本内

F、上传yaml文件或者修改yaml文件

四、正式开始训练


       本文仅是介绍训练自定义数据集的通用方法,重在类比。其中的文件目录结构、文件名称等在熟悉本方法后,可自行修改(通过修改配置文件的路径),以理解为主。

一、收集数据

        要想训练自己的数据集,第一步要做的事情就是拍照,将图片上传到电脑,构造自己的数据集。图片可以来源于现实生活,也可以来源于网络,只要图片中有你想要的内容,就可以将此图片作为数据集中的“一员”。值得注意的是,图片的分辨率不易太大,否则在训练时,对GPU要求较高。本文接下来的操作流程是按照实际的成功操作流程进行叙述的,请放心参考。

二、人工标记

        我们需要下载labelimg工具对数据集中的每一张图片进行标记,也即贴标签。

1、下载labelimg

下载的链接为:GitHub - tzutalin/labelImg: 🖍️ LabelImg is a graphical image annotation tool and label object bounding boxes in images

无法下载labelimg软件的同学,欢迎关注我的微信公众号,后台留言,一天之内必定回复。

2、进行预训练

        预训练的目的是了解YOLOv5数据集的目录结构,并不是需要将官方的训练集完全训练一次。请各位同学,根据文字内容及截图示意进行操作。

A、打开界面,滑动到如下图所示位置

不知道怎么打开的,请看我上一篇文章:目标检测第5步:如何在Windows 10系统下,搭建YOLOv5(5.0)环境?保姆级,没有人比这个更详细了(更新时间2022.3.22)_liO_Oil的博客-CSDN博客_yolov5环境搭建win10

B、滑动鼠标滚轮,找到如下位置

C、按照原来训练的命令执行,将coco128数据集下载到本地,观察目录结构。

通过下载、解压、观察后发现,他的目录结构是这样的:

         其中images和labels分别存放的是官方数据集中的图片和对应label的txt文档,LICENSE和README是许可文件和相关信息,都得保存下来,不可删除。接下来我们剖析这个文件的目录,我们先看images的目录结构:

 再看labels的目录结构:

       最后两幅图中的txt文件,即为官方数据集中记录图片中标记位置的坐标。里面存储了矩形框的坐标(左上和右下),这是已经标记好的,我们不用标记了,如果时间不是很紧迫,那就可以先训练一下试试,测试一下电脑性能。如果时间紧迫,那么就接着参考本文,尽快训练数据集。 

       通过这个目录结构,想必你也知道了数据集构造需要哪些文件了吧。没错,一级目录中显示的四个文件,缺一不可,详情见下图。

       各位同学可以边阅读此篇文章,边根据目录结构准备相应的文件。可以先创建一个文件夹叫coco128,随后在这个文件夹里创建images和labels,2个文件夹。将上述截图中红色框内的2个文件拷贝到自己创建的coco128文件夹内,再按照上述介绍的文件目录把已经收集好的照片拷贝到对应的文件夹里。接下来,就可使用labelimg软件贴标签了!所以,接下来有关labelimg的操作务必非常重视。此步结束时,你的数据集目录应该是这样的: 

3、labelimg软件基本操作

        首先,需要了解软件的设定和操作,避免做无用功,同时提高效率。我曾经有1000多张图片的数据集,就因为软件操作不当,重新标记了2-3回(当然也是因为样本的扩充,需要重新标定)。在打开软件前,首先要做的就是更改预存标签。操作如下图所示: 

这个文件中的标签是有顺序的,一旦确定之后就不要所以更改,避免做无用功。随后,就可以打开软件了,鼠标双击labelimg.exe

A、打开Labelimg软件

点击“View”按钮,选择“Auto Save mode”,操作如下图所示,一定得确保Auto Save mode前面有对勾

B、点击“Open Dir”按钮

打开你的数据集照片存放的最终位置(最深层目录),目录、操作如下图所示: 

C、点击“Change Save Dir”

在更改标签(就是txt文件)的存储位置之前,你可以在labels文件夹里创建一个train2017文件夹,用来存放标签对应的txt文件。目录结构是这样的: 

 然后,点击“Change Save Dir”按钮,选择到刚才创建的文件夹。

D、选择标签的类型为YOLO

         否则,贴完标签后,将会不是txt文件格式。这一点很重要,我贴了200多张,最后发现,不是YOLO,欲哭无泪。也有相关的代码可以将VOC格式的数据转换为YOLO,大家可以从别处了解一下。

       截止到目前为止,软件操作界面的上侧、左侧都已设置完毕。像放大、缩小图片等操作,我这里就不介绍了,放大图片贴标签贴的更准确一点,建议大家耐心一点操作,会收到意想不到的效果。最好每次进入labelimg软件时,都检查一下,防止出错。接下来是右侧。      

E、使用默认标签

F、将输入法切换到英文,“w”代表写标签,“d”代表下一张

        操作完E后,请将光标放置于图片上,并敲击几下。防止接下来的“W”字母出现在标签上。(这都是贴标签掉进的坑,希望大家注意

        敲击键盘w,将会出现两条互相垂直的长实线,这个就是贴标签的工具了。

 

因为在软件开始时,已经设置了自动保存模式。所以,直接叩击键盘d,跳到下一张图片。 

此时,我们再跳到数据集中,查看有什么变化。发现,照片文件夹中没什么变化。但是标签文件夹中出现了一些内容:

        其中,classes.txt文件要保存好,别小看这个文件,这个文件疏忽了,能让你的标记全白费,所以建议各位,先标记个1-10张图片,试验一下,训练程序能否进行。程序没错误,就进行标记。有错误,再回头看看本文的流程。一定得注意,打完第1-3个标签,就得打开这个文件夹进行分类名称和序号的确定。如果要改变classes.txt文件里的标签顺序,那么就得将改变顺序之前的所有图片,重新标记,否则也会出现问题。

G、备份整个数据集 

       因为刚才建议大家标记上1-10个图片,就先进行一下训练,而训练是的文件夹中不能包含classes.txt文件,所以这里,请大家再次备份一下整个coco128文件夹(包含里面的子文件),防止数据丢失或便于数据集的扩充,无论哪种情况,都不用重新再标记了。          

三、训练

        无论是你标记了10个图片之后的小试牛刀还是全部标记之后的最终一战,你都得在训练前检测以下内容:

1、确认照片的数量和标记之后生成的txt文件数量一致

        即:coco128\images\train2017目录下的图片数量和coco128\labels\train2017目下的txt文件数量一致(确保classes.txt文件已被移除)。补充说明如下图所示:

2、构造yaml文件

        通过查看训练命令行,我们知道要想训练,就得有对应的yaml文件。

 首先打开官方的yaml查看一下:

下图中关于训练集和验证集的路径只做演示,实际训练时需要对标定好的数据集进行训练集、验证集和测试集划分,比例一般是6:2:2。在训练时,分别索引到对应的数据集中,实现较为规范的训练!!! 

 

 对其中红框中的内容进行修改后,得到下图:

 这里需要注意,貌似新的coco128.yaml文件是以下样子(多出了“path”,就是下图中第一个红框内容,需要按照图片中的内容来修改相对路径):

       无论是哪一个,程序在运行时,能找到对应的文件就可以。(如果你选择colab训练,可以直接修改对应目录下的coco128.yaml文件,至于详细的方法,下文有介绍到,别着急

3、最后确认目录结构

4、正式训练(谷歌的Colab,需要科学上网)

         这里选用Colab的目的在于:训练速度快,能迅速知道自己的数据集能否正常训练。选择了Colab,就俩字“很香”。一旦colab运行成功了,想在本地训练的再进行本地训练(毕竟本地训练更稳妥一些,毕竟不会涉及到网络资源被收回的风险,至于本地如何训练自定义数据集,下一篇文章将会介绍)。Colab一旦检测到笔记本(本文提到的所有的笔记本都是在Colab中创建的,不是指你们面前的“笔记本电脑”)页面长时间没有活动,就会断开,网络资源被收回,里面的什么东西都没有了。

A、打包数据集

        将自己创建好的coco128文件整体打包成rar格式,打包是因为上传方便,同时解压后能保存目录结构。

B、上传压缩包

        因为从Colab上传文件时较慢(我个人情况是这样的,你们可以试试,快的话直接上传就好),所以,我先将coco128上传到谷歌云盘,再转移到笔记本目录。具体操作见下图:

 等待上传完成即可。

 

C、在Colab中安装YOLOv5

谷歌浏览器框输入Colab,点击搜索。

 

 点击文件,上传笔记本。

 只需将下面这个文件上传即可:

 上传完成后,将会跳转界面。然后按下图操作流程进行,下载Yolov5代码。

 下载完成后,将会出现“Setup complete”等字样。随后在文件夹目录也可以看到yolov5的文件。

 

 然后运行inference,检测yolov5是否正常。

D、探索数据集文件夹和YOLOv5的目录关系

        我们知道了coco128文件夹内的目录结构,但是还不知道coco128文件夹和YOLOv5文件夹的目录关系(其实在第二章的2中,进行本地预训练时,留心的同学已经知道解压后的coco128文件夹和YOLOv5文件夹是并列的关系,但此处再罗嗦一下)所以,接下来直接滑动滚轮到Train条目下。操作如图所示:

 

         下载完成后,我们刷新文件目录发现,yolov5和coco128的文件目录果真是并列的,此时便可大胆放心的将所有的文件搬进笔记本了。

E、将压缩包移动到笔记本内

 详细的操作用图说话:

 

 

 

 复制后,返回到笔记本界面,将代码粘贴到输入框内,敲击回车(多敲几下,会有明显的代码继续运行的反应):

 显示以下信息表示链接成功:

 

 

 

F、上传yaml文件或者修改yaml文件

       接下来上传coco128.yaml文件,但我们已经将整个yolov5的文件下载到了笔记本,不如直接在新下载的coco128.yaml文件里修改吧。在yolov5的data文件夹目录下,可以找到coco128.yaml文件。

 

 双击该文件,如下图所示,这个是已经修改过的了。

        别忘记Ctrl + s保存。保存后,关闭coco128.yaml文件即可。最后,还得去改一项内容,就是对应权重的yaml文件。(我在训练时引入了--cfg选项)

        我将用yolov5s.pt训练,那么就得修改yolov5s.yaml。下图中的yolov5s.yaml文件是在models文件夹下,截图中的红色矩形框稍有偏差。

 

         截止到目前为止,我们训练所需要的文件和数据集均已准备完毕,那么开始训练,注意训练的命令行有所更改。注意看截图!!!

四、正式开始训练

       滑动滚轮,到熟悉的Train条目下。下图将下载官方数据集的命令用#号注释掉,根据我们压缩包的类型,我们输入如下命令进行解压。(推荐用Winrar打包,其他的如7-zip解压缩工具,Colab不支持

!unrar x ../coco128.rar ../

 

       接下来,看图操作。下图中的前2个红色框后面标记了Optional,意思是待选框,可以不选。为了方便,这里就直接忽略,把目标放在最终的训练命令行。

图中的1,2,3,4的含义:

        1处的Batch:Batch大小是一个超参数,用于定义在更新内部模型参数之前要处理的样本数。这里设置的数量最好是内存的2的n次方,不可过大。

        2处的Epochs:Epoch数是一个超参数,它定义了学习算法在整个训练数据集中的工作次数。你可以慢慢提升次数,从100开始即可(我本次演示训练时也是100起步

        3处的yolov5s.yaml可以更换成其他3个权重对应的yaml文件,但要记住修改训练的类的数量

        4处的权重文件可以改成其他的权重文件。似乎得和3处的yaml文件一致。

接下来,就开始训练了:


!python train.py --img 640 --batch 16 --epochs 30 --data coco128.yaml --cfg yolov5s.yaml --weights weights/yolov5s.pt --nosave --cache

出现下图所示的显示信息时,表明你已经成功运行训练程序了!默默等待训练完成即可。 

       YOLOv5本地训练时会输出一个last.pt文件,以及一个best.pt文件,但是Colab上训练,似乎只有批次参数设置合适的时候才会出现best.pt。最后将pt文件下载,放到本地的YOLOv5的weights文件夹里,就可以识别你想识别的物体了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十五、Python第十五课——测试代码

(请先看这篇文章:https://blog.csdn.net/GenuineMonster/article/details/104495419) 也许你听过软件测试?编写函数或类时,可以为其编写对应的测试代码。通过测试,可检验代码是否能够按照编写意图工作。在…

Windows 10环境下如何安装CMake?(更新时间:2021.9.13)

(请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 1、下载Cmake 下…

Windows 10环境下AndroidStudio安装教程(内含如何配置Http Proxy)

(请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 一、AndroidStudi…

如何将Android Studio卸载的干干净净?

(请先看这篇文章:本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客) 1、打开控制面板&…

Android Studio编译后运行按钮还是灰色的解决方法

(请先看置顶博文)本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 安装配置好AndroidStudio之后&am…

OpenCV安装教程

(请先看置顶博文)本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 1、下载 下载地址&#xff1a…

WordExcel使用小技巧(1)—— 打对勾或打叉

(请先看这篇文章: ​​​​​​​ 本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-C…

如何在屏幕实时显示自己键盘的输入字符?

请先看这篇文章: 本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 大家在观看…

ERDAS IMAGINE 2015安装步骤(绝对正确,不正确,我给你远程安装)

请先看这篇文章: 本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 1、前言 很久很久…

如何将多个PDF合成为一个PDF,并且大小统一?

一、引言 前几日,老板的申报书pdf文件及专利证明pdf文件需要合并,我使用Adobe Acrobat软件合并后发现pdf文件的页面大小会因为图片的质量不一样,具体问题是:专利证明pdf文件里的图片貌似分辨率很高,无法和申报书pdf文件…

如何设置Pycharm在打开Terminal终端时,自动进入虚拟环境?

最近旧版的Pycharm不太好用,卸载了更换了新版,但是在使用Terminal时发现,居然不是虚拟环境,我明明在设置中为项目创建了新的虚拟环境,这个问题如何解决呢? 出现这个问题的原因无非是我们的Pycharm默认了Win…

目标检测第4步:显卡、GPU、CUDA、cuDNN的介绍及如何在Windows 10下安装cuDNN?

(请先看置顶博文)本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 目录 (请先看置顶博…

两个软件,让你对主机内显卡的信息和性能有一个更深刻的认识

(请先看置顶博文)本博打开方式!!!请详读!!!请详读!!!请详读!!!_Cat-CSDN博客 最近一段时间,显卡的…

YOLOv5-6.1识别中的BUG

1、引言 时间飞快,技术猛进,YOLOv5从2020年诞生之后,到2022年已经发展到了6.1的版本。YOLOv6和YOLOv7都已经开源,不知道小伙伴们是否有尝试? 2、问题描述及解决方法 我最近在使用YOLOv5-6.1版本时,遇到了两…

Pycharm更换清华、阿里、豆瓣软件源提高依赖包下载速度

很多同学都遇到过类似问题:用Pycharm下载某些依赖包时,速度比某度的云盘速度还低,而且还不稳定。我基本上遇不到这样的情况,但是为了日后方便,今天就记录一下更换软件源的两种方式。 一、GUI手动添加软件源 先附上常…

Windows 10系统下如何搭建轻量级目标检测NanoDet-plus环境?

NanoDet与YOLO一样,都是目标检测算法中的经典之作,在NanoDet-plus发布之后,很多CVer都争先恐后地进行尝试,感受其与NanoDet的不同。以上的截图已经将NanoDet-plus的优点完全概括,这里就不再赘述。新的plus版本精度和速…

本博打开方式,请详读

1、友好交流的前提是有礼貌,别直接评论遇到的问题,我最恨白嫖党!!!!!!!!!(咨询时多发几条消息,后台回复更快哦&#xff01…

C / C++ 之整体知识总结,点进来,不后悔!

文章目录1. 程序设计和C语言 算法-程序的灵魂2. 数据的表现形式3. 整型数据与字符型数据 运算符与表达式 数据的输入、输出(scanf、putchar、getchar、printf)4.1 if 与switch 语句(含举例)4.2 逻辑运算符与逻辑表达式4.3 关系运算…

C语言 表白代码(I love you!)

0-127 是 7位ASCII 码的范围,是国际标准。 至于汉字,不同的字符集用的ascii 码的范围也不一样,常用的汉字字符集有GB2312-80、GBK、Big5、unicode 等。 其中GB_2312 字符集是目前最常用的汉字编码标准,windows 95/98/2000 中使用…

Web项目:解决eclipse中jsp文件报错javax.servlet.http.HttpServlet 提示 was not found on the Java Build Path的错误

具体错误如图示如下: 具体结局方案如下: 1、右击web工程(你的项目名字)->属性或Build Path->Java Build Path->Libraries-> Add Libray…->Server Runtime ->Tomcat Server 2、切换到Java Build Path界面中的O…