YOLO训练自己的数据集

很高兴现在已经有几百人通过我的教程成功地使用YOLO处理自己的数据集。


最近一直在用CNN的模型做图像二分类,但苦于效果不佳,于是把图像分类问题转作目标识别问题。做目标识别选择了Yolo(you only look once),一个最近推出的方法,突出的优点就是速度快。查找了网上关于yolo的训练自己数据集的方法,大都存在一点问题,而且yolo不久前更新到version2版本。在自己的亲身试验后,将yolo的使用写成心得。

1.yolo
yolo的官网:https://pjreddie.com/darknet/yolo/
yolo的官网介绍了yolo的安装与测试。建议大家多看看英文官网,因为中文网更新的慢,而且有部分内容省略了。按照官网的步骤就不会有错。

2.数据的预处理
yolo的数据包括训练数据和验证数据(训练数据用来训练模型,验证数据用来调整模型)。训练数据和验证数据都包括:a.图片;b.标签。需要说明的是,如果采用VCC的话,标签需要特定xml格式,还要转化为txt。下面以我目标检测“猫”为例讲解。样本哦
a.在“Image”文件夹下存放所有的图片样本(包括训练数据和验证数据,而且最好是jpg格式)
b.下载labelImg(一种图像标记工具,给图像中的目标打上标签,且可以生成训练需要的xml格式),具体的使用方法可以百度,操作起来很简单。
c.与“Image”文件夹同级新建“xml”文件夹,“xml”文件夹存放labelImg得到的所有图片样本的标签。
d.现在就是要将所有的样本分成训练集和验证集,而且要将训练集和验证集对应的xml也分开。这里下载python脚本,直接放在“Image”和“xml”文件夹同级路径。

下载:
链接:http://pan.baidu.com/s/1hs22I7U 密码:wdv0
运行traindata.py:生成trainImage文件夹,存放训练图片;生成trainImageXML文件夹,存放训练图片xml标签;生成validateImage文件夹,存放验证集图片;生成validateImageXML文件夹,存放验证集图片的xml标签。
运行trans.py,生成trainImageLabelTxt文件夹,存放训练图片通过xml标签转化得到的txt文件(若在训练过程提示txt文件找不到,则把此文件夹下的txt文件夹移动到trainImage文件夹);生成validateImageLabelTxt文件夹,道理一样。
另外得到的trainImagePath.txt和validateImagePath.txt存放着训练图片和验证图片的路径。

3.修改配置文件
接下来就是修改配置文件了:
a.cfg/voc.data文件中:
classes= 1
train = /home/pdd/pdwork/darknet2/darknet/VOC/cat/trainImagePath.txt
valid = /home/pdd/pdwork/darknet2/darknet/VOC/cat/validateImagePath.txt
names = data/cats.names
classes存放类别总数(这里只有cat一种),train 和valid 放着的是训练图片和验证图片的路径,cats.names存放的是方框注释,这里只有cat一行:
cats.names文件
b.yolo-voc.cfg
将[region]中的classes改为1(这里只有cat一类),将最后一个[convolutional](紧挨着[region]的前一个)中的filter改为30(filter的公式filters=(classes+ coords+ 1)* (NUM) ,我的是(1+4+1)* 5=30)。
c.cats.names
在data文件夹下新建cats.names,具体见a

4.下载预训练文件cfg/darknet19_448.conv.23
以在其他数据集上pretrain的模型做为初值,下载地址:
链接:http://pan.baidu.com/s/1dFgUk4x 密码:ynhg。放在darknet文件夹下。

5.训练
在darknet文件夹路径下运行命令:
./darknet detector train cfg/voc.data cfg/yolo-voc.cfg cfg/darknet19_448.conv.23
系统默认会迭代45000次batch,如果需要修改训练次数,进入cfg/yolo_voc.cfg修改max_batches的值。
6.测试
训练完成后,模型成功保存,输入命令测试一下这个模型吧:
./darknet detector test cfg/voc.data cfg/yolo-voc.cfg backup/yolo-voc_final.weights testpicture/001.jpg


以上就是使用Yolo2训练自己的数据集的结果,已经测试通过。小伙伴赶快试一下吧!有问题欢迎留言。

猜你喜欢

转载自blog.csdn.net/qq_34484472/article/details/73135354
今日推荐