darknet训练coco数据集2014

本文以coco数据集2014为例,因为官网下载的数据集不能直接使用,需要做个解析。

首先,下载好coco2014的数据集,文件很大,大概24个G吧。主要信息是train2014,test2014,val2014以及各自的annotation文件。

这三个文件存放的是图片,jpg格式。

darknet训练coco数据集2014

test2014的annotation存放在下面这个文件夹

darknet训练coco数据集2014

darknet训练coco数据集2014

train2014和val2014的annotation存放在这个文件夹,这两个的标注文件放在了一个文件夹 。

darknet训练coco数据集2014

darknet训练coco数据集2014

darknet需要的是图片以及图片的bbox信息和类别信息。所以接下来要做两件事,

1,利用脚本从json文件中奖每张图片的需要的信息解析出来,并且保存在图片对应的txt文件中。这里多少图片就有多少个txt 文件

2,利用脚本将每张图片所在的完整路径保存下来。分别就是train.txt,test.txt,val.txt这三个文件将会在coco.data中用到。

 

本文所需要用到Python脚本代码可以在Github上找到:https://github.com/ChriswooTalent/COCO_forYOLO 。

共包含 4 个 python 脚本:

① batch_split_annotation_foryolo.py: 批处理解析 coco 注释文件,将整体的注释文件分离成每个图像单个的注释文件;

②split_annotation_foryolo.py:分离数据文件的执行部分,在 batch_split_annotation_foryolo 中会调用;

③create_JEPG_dir.py: 将所有训练图像,验证图像,测试图像拷贝到一个 JPEGImages 文件夹下,只用调用一次;

④create_yolo_list.py:  根据先前分离得到的注释文件,生成训练图像,验证图像,测试图像索引文件。
这4个文件采用是python2,但是我用的python3,所以文件中会一些错误,修改一下就行。很简单。

步骤一:

我是根据程序建立的相应文件夹。

先在I:盘下建立一个coco_data文件,

在该文件夹下建立一个annotation文件夹,把instances_train2014.json,instances_val2014.json,image_info_test2014.json放进去,方便后面使用。再建立一个ImageSets文件夹,存放的txt包含每个图片的名称。

接着将三个数据集也放进去。

最后建立一个labels文件夹,下面再键三个文件夹分别为trai2014,test2014,val2014。

打开第一个 batch_split_annotation_foryolo.py文件和split_annotation_foryolo.py,进行相应的路径修改。主要是路径修改,自己看清楚了。

darknet训练coco数据集2014

darknet训练coco数据集2014

接着修改split_annotation_foryolo.py,因为在上一个.py文件中会调用这个文件。

虽然coco的类别是80个,但是它的category_id是跳跃编号的,一直编号到了90,所以这里要做一些修改。

不然训练的时候会一直报错,

darknet训练coco数据集2014

darknet训练coco数据集2014

cat_id = cat_id -1;

少了这个操作,id要控制在0-79;

做完这些工作就可以运行第一个py文件。

结果:ImageSets下得到三个txt文件,保存了每个图片的名称

          labels得到train和val的关于类别和bbox信息的txt文件。然后还有三个文件夹,重复之前的txt文件(不知道为什么test的信息没有解析出来,test所有的txt文件是空的????)暂时不用test,所以先搁置。

darknet训练coco数据集2014

darknet训练coco数据集2014

步骤二:

在coco_data下建立一个JPEGImages,运行create_JEPG_dir.py,将三个数据集的图片都保存在这个文件夹下面,所谓的只运行一次是因为数据集真的太大,最好一次成功。

darknet训练coco数据集2014

darknet训练coco数据集2014

步骤三:

这一步呢,生成图片的完整路径。还要在coco_data下建立一个cocoImage/labels,应该是用来整合文件的。

darknet训练coco数据集2014

我这里的img_dir和dst_img_dir是一个文件名,所以这里的删除其中一个即可。总共三处都要删除。

darknet训练coco数据集2014

文件中这个地方写的是train2014和val2014,我把val2014删除,因为我需要的是txt中是单独一个数据集的图片路径。

darknet训练coco数据集2014

结果:

darknet训练coco数据集2014

darknet训练coco数据集2014

 

存放图片位置信息的labels文件夹和JPEGImages得在一个文件夹下面。

步骤四:在darknet的项目下做一些修改。

现在data下建立一个coco文件夹。存放四个文件:

train.txt和val.txt就是存放图片完整路径的那个文件,即上述ImageSets下的。

darknet训练coco数据集2014

coco.data相应的txt文件进行修改。

darknet训练coco数据集2014

cfg文件的修改如下:

darknet训练coco数据集2014

步骤五:

上述步骤完成后。

打开darknet_yolo_v3.cmd的命令,保存执行。

darknet_no_gpu.exe  detector train data/coco/coco.data cfg/yolov3.cfg darknet53.conv.74

darknet训练coco数据集2014

 

参考博客;https://blog.csdn.net/Gentleman_Qin/article/details/87294874