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

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

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

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

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

扫描二维码关注公众号,回复: 8528094 查看本文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

发布了51 篇原创文章 · 获赞 207 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/Gentleman_Qin/article/details/87294874