在COCO数据集中制作Darknet的训练集

本文介绍如何基于COCO数据集制作Darknet训练集,涉及数据下载、注释解析、图像处理和训练集配置。通过Python脚本提取COCO注释中的bounding box信息,创建JPEGImages文件夹并生成Yolo所需的训练、验证和测试图像索引文件。最后整合路径,配置coco.data和coco.names文件,进行训练。

本篇博客主要以MS COCO作为数据集,制作出Darknet的训练集

COCO数据集是一个CV数据库,里面包含了包括object detection, keypoints estimation, semantic segmentation,image caption等多个任务所需要的数据库

下载MS COCO 2017年版本的数据集, 一共25G左右的图片和1.5G左右的annotation文件,annotation文件的格式为json格式,存储了所有图片中的目标类别(总共80类),目标bounding box的精确坐标以及目标的分割轮廓信息等。

可以到官方网站下载:http://cocodataset.org/ 但是链接似乎不太管用

给出迅雷下载地址:

图片(images):

http://images.cocodataset.org/zips/train2017.zip

http://images.cocodataset.org/zips/test2017.zip

http://images.cocodataset.org/zips/val2017.zip

注释(annotations):

http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip

http://images.cocodataset.org/annotations/image_info_test2017.zip

http://images.cocodataset.org/annotations/annotations_trainval2017.zip

下载完成,解压后截图如下:


      Darknet是一个用C语言和CUDA编写的开源神经网络框架,目前基于darknet实现的目标检测算法yolov1, yolov2和yolov3在目标检测分类领域有一定的优势,主要在于yolo的网络是end-to-end的,实现简单,检测速度快。具体的算法论坛内有很多相关的说明,请自行查阅。

      提取脚本已经上传到git@github.com:ChriswooTalent/COCO_forYOLO.git中

      有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:  根据先前分离得到的注释文件,生成训练图像,验证图像,测试图像索引文件。

回归正题,Darknet对训练集有一定的要求,现在主要说明一下如何基于COCO数据集制作Darknet的训练集。

1. 首先从COCO数据集中的注释集中提取出yolo算法需要的图像中目标的bounding box信息;

  安装python 2.7以及相关的依赖库,就可以运行

  运行python batch_split_annotation_foryolo.py(注意修改程序中的绝对路径)

  得到darknet训练所需要的label信息


   

2. 结合darknet源码,考虑到darknet读取图像和对应label的规则(也可以重新写代码,不执行这一步),需要将所有图像拷贝到一

   个JPEG文件夹下,然后将步骤1生成的label文件夹移动到和JPEG统一级的目录下;

   这个脚本只需要调用一次:

   

    

3. 得到训练图像集, 验证图像集以及测试图像集的路径索引集train.txt,val.txt,test.txt;

    运行python create_yolo_list.py(注意修改程序中的绝对路径)

    生成训练图像集,验证图像集以及测试图像集

     

4. 整合路径,使Darknet框架代码能够正常调用并且训练;

      1.label文件夹和JPEGImages处于同一级文件夹下;

      2.简历一个coco文件夹,文件夹下面放置train.txt,val.txt,test.txt;

      3.创建coco.data文件,指定训练图像索引文件地址,创建coco.names文件,里面是COCO数据集的所有分类;

      


       4.将coco文件夹,coco.data文件,coco.names文件一同拷贝到darknet代码训练脚本文件夹下,创建训练脚本,开始训练      

       可以看到训练开始正常进行,如果需要达到yolov3作者训练的水平,需要漫长的时间等待,上传一张使用作者coco数据集的训练的权重进行检测的结果图,yolov3对小目标的检测是有很大优势的:

  


    小弟第一次原创,如果有写的不好的,不对的,希望各路大牛指出来,感激不尽,刚入AI坑,对深度学习在图像这一块的应用有狂热的兴趣,希望得到大牛指点。


评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值