这里写自定义目录标题
yolo v5训练自己的数据集
最近看了好多图像识别之目标检测的博文,并且尝试性的用yolo v5训练了一把OID数据集。OID是Open image dataset,是一个开放的数据集。我从github上利用 OID v4下载了两个类别的图片共计2000张左右,苹果和橘子,apple和orange,两个类别,训练了3个epoch就能预测,当然预测的准确率很低。
之前从网上下载了一个labelimg工具,当时没有深入研究怎么使用,这次趁着这个机会,找了一些图片,用yolo v5 训练一下自己的数据集。
制作自己的数据集
第一步:准备工作,下载labelimg工具
链接: link.
万里长征第一步,工欲善其事必先利其器,labelimg是一个图片标记工具,给图片加上框框,并且添加标签。
比如上面这2张图片。这两张图片是标记完以后的数据集。
下载labelimg工具
网上找到过一个labelimg软件,是打包成exe格式的,可以打开用,但是标签信息只能保存成xml格式的文件,我用yolo v5 实现的时候用的格式是txt。百度了一下,说labelimg可以直接保存txt的供yolo v5算法使用的数据集格式。
下面这张截图就是PyPi上面的labelimg的最新版本,可以编译运行。
我也是新手,这个东西下载下来后怎么使用呢,我尝试的用pycharm编译一下使用,没有成功,改天再试一下。
就直接从windows的控制台运行这个代码吧:
第一步:下载下来的这个工具解压
我截图看一下,我是解压到我的一个移动硬盘,
打开这个文件夹可以看到:
里面有这些东西,这个就是我们要用的labelimg工具了,这个具体怎么用呢?
其实下载页面里面有介绍,只是都是英文的,看到英文就头大,其实不用头大,这里的介绍很简单。
我也翻译一下,labelimg是一个图片注释工具
这个工具使用python编写,用qt做的界面
注释被保存成voc格式的xml文件,也可以保存成yolo和ml格式的
windows下怎么使用下载好的labelimg
首先打开cmd
按下win+r
输入cmd,按回车。
我这里解压到了我的移动硬盘,盘符为F盘
接着打开文件夹labelImg-1.8.5, (这里windows用的命令是cd)
最后就可以运行程序了
按下回车键,就会弹出下面的这个windows界面
这里是成功的打开的了软件,这个软件工具依赖于pyqt5和lxml这两个包,打开的时候如果失败了,注意看一下提示的原因,是不是这两个依赖包没有安装,如果没有安装就用pip安装一下。
总结
到这里准备工作1算是做完了,梳理一下
1.下载labelimg,可以从github也可以从pypi上面下载
2.解压labelimg,在cmd上面运行程序,弹出软件界面
上面的两步对于新手朋友来说也是很难的,其实,下载下来的就是labelimg的源码,只是没有打包成exe文件,需要在python里面编译使用。
关于工具labelImg标签工具的参数
用labelImg这个工具标记标签的时候,会默认的有10个标签,比如dog person 等等,怎么把这些删除呢,毕竟我们用不到,比如我们用到两个标签,一个男人,一个女人吧,man woman,怎么让软件默认这两个类别class,截图说明如下:
在labelImg-1.8.5这个文件夹内有data文件夹,打开
这里的predefined是预定义的意思,预定义类别,打开后输入我们自己想定义的类别就可以。
比如我定义了poppy_flower 和poppy这两个类别,我们打开labelImg工具看一下:
这里就会有这两个类别
第二步:准备图片,标签图片
第一步完成以后再做这一步就简单了,比如我想做一个罂粟花的数据集,就从百度上找了57张罂粟花的图片,我是先保存了57张图片,如下图
这57张图片用labelImg给标记标签,并保存成yolo格式的txt文件
打开一个txt文件看一下
这是图片poppy_00.jpg这张图片的标记文件,这张图片里面有两个标签,其中0代poppy_flower,1表示poppy,接着的两个是bbox框的中心位置,后面两位是长宽,共四个坐标信息。
标记完以后就可以训练了,但是在训练之前要把这些图片的分类放到固定格式的文件夹中。
第三步:创建yolo v5的文件夹格式
标签做完以后是上面这张图这样的,有57张图片,对应这个57个txt文件。
我用的是pycharm创建的项目,项目文件夹是pcharm_yolo-poppy,在项目文件夹下面创建一个文件夹,这个文件夹下面创建一个data,data文件夹下面创建两个文件夹images和labels文件夹,
分别在images和labels文件夹下面创建两个文件夹,一个是train,一个是valid
对应着images-train里面放图片57张,labels-train里面放标签
对于images-valid里面放几张验证数据集图片,同样labels-valid里面放标签,用来验证模型
到这里yolo数据集基本上全部建完了,下一步就是怎么用yolo训练自己的数据集,并且能输出结果