COCO 数据集是一个大型数据集,里面包含了包括 object detection, keypoints estimation, semantic segmentation,image caption 等多个任务所需要的图像数据及其标注信息。

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

完整的COCO2017数据集下载好并解压缩后应包含以下几部分:

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

Darknet 成名于YOLO目标检测框架的提出,它是一个用 C 语言和 CUDA 编写的开源神经网络框架,目前基于 darknet 实现的目标检测算法 YOLOv1,YOLOv2 和YOLOv3 在目标检测领域有一定的优势,是One-Stage目标检测算法的代表之一。

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

 

那么如何基于 COCO 数据集制作 适用于Darknet 的训练集?

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

  ①保证安装好 python 2.7 以及相关的依赖库,就可以运行脚本代码;

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

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

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

   2. 结合 darknet 读取图像和对应 label 的规则,需要将所有图像拷贝到一个文件夹下,然后将步骤 1 生成的 label文件移动到和图片同一文件目录下(这个脚本只需要调用一次):

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

   3. 获取训练图像集、验证图像集、测试图像集的路径索引文件  train.txt    val.txt     test.txt:

    运行 python create_yolo_list.py (注意修改程序中的绝对路径),生成训练图像集,验证图像集以及测试图像集的对应.txt。

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

     4. 按照Darknet 的规则整合路径,使 Darknet 框架能够正常调用数据集并且训练;

      1.label(标签)文件和 JPEGImages(图片)处于同文件夹下;

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

      3. 创建 coco.data 文件,指定训练图像索引文件.txt地址和权重保存路径;

      4.创建 coco.names 文件,里面是 COCO 数据集的所有类别名称 。

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

       4. 将 coco 文件夹、coco.data 文件、coco.names 文件一同拷贝到 Darknet 环境文件夹下,使用YOLOv3开始训练。    

在Darknet环境下训练MS COCO 2017数据集(目标检测)(YOLOv3)

--------------------------------------------------------------------------------------------------------------------

本文参考于https://blog.csdn.net/u014281900/article/details/80198347