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