coco 2017数据集 类别提取并转换为yolo数据集

博客介绍了如何从COCO2017数据集中提取动物类别,并将这些数据转换为YOLO格式。首先解析了COCO2017数据集的标注文件结构,接着说明了如何提取特定类别,最后讲述了转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次分割的动物数据集 4G

https://download.youkuaiyun.com/download/qq_26696715/87621195

一. coco2017数据集结构

总的结构如下:

├─cocotoyolo.py
├─getanimal.py
├─annotations
├─train2017
└─val2017

其中,images存放的是训练集、验证集的图片原图;annotations中存放的是标注文件:

2017/09/01  19:04        91,865,115 captions_train2017.json
2017/09/01  19:04         3,872,473 captions_val2017.json
2017/09/01  19:02       469,785,474 instances_train2017.json
2017/09/01  19:02        19,987,840 instances_val2017.json
2017/09/01  19:04       238,884,731 person_keypoints_train2017.json
2017/09/01  19:04        10,020,657 person_keypoints_val2017.json

标注文件解析

instances_xx2017.json 是一个COCO数据集的标注文件,包含了所有训练集图片的标注信息,字段含义如下:

  1. info:数据集的相关信息,如数据集名称、版本、年份等;
  2. licenses:数据集的许可证信息;
  3. images:训练集中所有图片的信息,包括图片ID、文件名、高度、宽度等;
  4. annotations:训练集中所有标注信息,包括标注ID、图片ID、类别ID、边界框坐标等;
  5. categories:所有类别的信息,包括类别ID、类别名称、超类别名称等。

具体解释如下:

  1. info:数据集的相关信息,包括数据集名称、版本、作者、年份等。例如,info 字段中可能包含以下信息:

    “info”: {
    “description”: “COCO 2017 Dataset”,
    “url”: “http://cocodataset.org”,
    “version”: “1.0”,
    “year”: 2017,
    “contributor”: “COCO Consortium”,
    “date_created”: “2017/09/01” }

  2. licenses:数据集的许可证信息,包括许可证ID、许可证名称等。例如,licenses 字段中可能包含以下信息:

    “licenses”: [
    {
    “id”: 1,
    “name”: “Attribution-NonCommercial-ShareAlike License”,
    “url”: “http://creativecommons.org/licenses/by-nc-sa/2.0/”
    } ]

  3. images:训练集中所有图片的信息,包括图片ID、文件名、高度、宽度等。例如,images 字段中可能包含以下信息:

    “images”: [
    {
    “id”: 1,
    “file_name”: “000000000009.jpg”,
    “height”: 480,
    “width”: 640,
    “date_captured”: “2013-11-14 17:02:52”,
    “license”: 1
    } ]

  4. annotations:训练集中所有标注信息,包括标注ID、图片ID、类别ID、边界框坐标等。例如,annotations 字段中可能包含以下信息:

    “annotations”: [
    {
    “id”: 1,
    “image_id”: 1,
    “category_id”: 1,
    “bbox”: [96.0, 120.0, 112.0, 80.0],
    “area”: 8960.0,
    “iscrowd”: 0
    } ]

  5. categories:所有类别的信息,包括类别ID、类别名称、超类别名称等。例如,categories 字段中可能包含以下信息:

    “categories”: [
    {
    “id”: 1,
    “name”: “person”,
    “supercategory”: “person”
    } ]

二. 提取需要的类别重新封装成coco数据集(这里以动物类别为例)

提取完成后的新文件夹为

├─animal_detection
│  ├─annotations
│  └─images
│      ├─train2017
│      └─val2017

提取代码 getanimal.py

import os
import json
import shutil

# 定义要提取的类别
categories = ['bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe']

# 定义数据集路径
data_dir = './'

# 定义输出路径
output_dir = './animal_detection'

# 创建输出目录
os.makedirs(os.path.join(output_dir, 'annotations'),exist_ok=True)
os.makedirs(os.path.join(output_dir, 'images', 'train2017'),exist_ok=True)
os.makedirs(os.path.join(output_dir, 'images', 'val2017'),exist_ok=True)



'''
训练集
'''
# 加载原始instances文件
with open(os.path.join(data_dir, 'annotations', 'instances_train2017.json'), 'r') as f:
    train_instances = json.load(f)

# 筛选动物类别的id
# 筛选动物类别的id
animal_ids = []
new_categories <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图像处理大大大大大牛啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值