全部完成分为下面几个步骤:
1.制作自己的数据集-将visdrone转化为yolo所需的格式 (下面先完成这部分)
2.配置yolov3
3.训练验证及计算map

下篇链接:[https://blog.csdn.net/daisy_d_/article/details/105771633]

踩了很多坑,分享一下自己训练的经历~
我使用的visdrone数据集包含很多小目标,选择的darknet框架下的yolov3。也尝试了pytorch版本的不过刚开始效果不好,等的很着急后来放弃了,到后来才知道这个数据集现需要很长时间训练,我用的云服务器1080ti显卡,大概需要60个小时~

数据集下载链接:https://www.jianshu.com/p/62e827306fca
。使用的VisDrone2018-DET dataset 的trainset(1.44GB)和valset(0.07GB)

darknet的yolo下载链接:https://github.com/pjreddie/darknet.git

制作数据集

最终形成的数据集的格式:
images —— 存放.jpg图像
Annotations —— 存放图像对应的xml文件
ImagesSets/Main —— 存放用于train/test图像的名字列表txt
labels——标签
test.txt
train.txt
val.txt

我参考的链接:https://blog.csdn.net/qq_37775990/article/details/90145081
下面需要的代码我放在了百度网盘:
https://pan.baidu.com/s/17Nywnkb1d4SjMqxUdMQqJA 提取码:kPjI

1.图片标注重命名(可做可不做,只是改变了名字)
使用 rename.py图像文件进行重命名,对标注文件进行重命名(两个步骤都要做,注意修改程序中的路径)会得到下面的效果,简单示例。在这里插入图片描述
在这里插入图片描述
2.visdrone标注转换为VOC格式

运行main.py 进行转换,同样注意修改程序中的路径。注意需要新建对应文件夹Annotations_否则会报错。
visdrone的标注方式与yolo标注不一样。这个步骤是将annotations中的txt将标注转换为VOC格式的xml.

3.生成用于train、val的图像名字列表txt(生成于ImagesSets/Main下)

运行 trainnamelist.py 形成了列表txt。此处生成了四个文件(train.txt test.txt val.txt trainval.txt)可以根据自己需要修改生成相应的文件。
这个步骤是将数据库中的图像进行随机抽取,分成4部分,一部分作为train(训练),一部分作为validation(验证),一部分test(测试),(trainval暂时没明白。。)最后将这几部分图像的名字写入txt。

4.生成label文件夹和txt文件

运行label.py就会在目录下生成一个labels文件夹,三个txt文件。
lable.py下有类别,我这次只训练了10个类别,所以注释掉了第0类和第11类(’ignored regions’和’others‘)加上了if判断语句,其他类别的id数值也需要-1。这样就少了第0类和第11类,整体只有10类了。 具体位置代码里注释了一下。
这个步骤是生成labels文件夹,里面就是适合yolov3的标注文件了,和图像名称一一对应,内容意义是:
(class, x_center , y_center , w , h)
目标类别 标注框中心x轴相对坐标 标注框长宽相对长度
因为坐标和长宽都是相对整幅图像长宽的比例,所以数值应该是0-1。

第一次写博客,有什么错误请多指教
我第一次转化数据集的时候花了一天多的时间才搞明白,如果你也是第一次不要着急。加油丫~

title:yolov3训练自己的数据集(darkent)+visdrone
date: 2020-04-06 10:44:13
tags:

  • yolov3训练
  • visdrone数据集