COCO数据集训练格式转换成YOLO格式

COCO转YOLO:

比如coco2017train或coco2017val数据集中标注的目标(类别)位置在 Annotations 中以 (x, y, width, height) 来进行表示,x,y表示bbox左上角位置,width, height表示bbox的宽和高。而YOLO训练或者进行验证的时候读取的标注格式是以 (xmin, ymin, xmax, ymax) 来进行表示,xmin, ymin表示bbox左上角位置, xmax, ymax表示bbox右下角位置。

所以将COCO标注格式(.json)转换成YOLO格式(.txt)并存储,比如转换val数据集的格式,其代码如下:


```python
import json
from collections import defaultdict

"""hyper parameters"""
json_file_path = '/home/wsy/data/coco2014/annotations/instances_val2014.json'
images_dir_path = '/home/wsy/data/coco2014/val2014/'
output_path = '/home/wsy/code/pytorch-YOLOv4/data/val.txt'

"""load json file"""
name_box_id = defaultdict(list)
id_name = dict()
with open(json_file_path, encoding='utf-8') as f:
    data = json.load(f)
    annotations = data['annotations']

for ant in annotations:
    id = ant['image_id']
    name = '/home/wsy/data/coco2014/val2014/COCO_val2014_%012d.jpg' % id
    cat = ant['category_id']

    if cat >= 1 and cat <= 11:
        cat = cat - 1
    elif cat >= 13 and cat <= 25:
        cat = cat - 2
    elif cat >= 27 and cat <= 28:
        cat = cat - 3
    elif cat >= 31 and cat <= 44:
        cat = cat - 5
    elif cat >= 46 and cat <= 65:
        cat = cat - 6
    elif cat == 67:
        cat = cat - 7
    elif cat == 70:
        cat = cat - 9
    elif cat >= 72 and cat <= 82:
        cat = cat - 10
    elif cat >= 84 and cat <= 90:
        cat = cat - 11

    name_box_id[name].append([ant['bbox'], cat])

"""write to txt"""
with open(output_path, 'w') as f:
    for key in name_box_id.keys():
        f.write(key)
        box_infos = name_box_id[key]
        for info in box_infos:
            x_min = int(info[0][0])
            y_min = int(info[0][1])
            x_max = x_min + int(info[0][2])
            y_max = y_min + int(info[0][3])

            box_info = " %d,%d,%d,%d,%d" % (
                x_min, y_min, x_max, y_max, int(info[1]))
            f.write(box_info)
        f.write('\n')

voc数据集coco数据集的标注格式yolo数据集的标注格式是有一些差异的。 VOC数据集的标注格式是使用XML文件来描述每个物体的位置和类别。每个XML文件对应一张图像,其中包含了图像的宽度、高度和深度信息,以及物体的类别、边界框的坐标等。VOC数据集的标注格式相对简单,适合较小规模的目标检测任务。 COCO数据集的标注格式是使用JSON文件来描述每个物体的位置和类别。每个JSON文件对应一张图像,其中包含了图像的信息、物体的类别和边界框的坐标等。COCO数据集的标注格式相对复杂,支持多种类型的目标检测任务,并且可以标注更详细的物体属性。 而YOLO数据集的标注格式是使用TXT文件来描述每个物体的位置和类别。每个TXT文件对应一张图像,其中每一行表示一个物体的类别和边界框的坐标。YOLO数据集的标注格式相对简洁,适合实时目标检测任务。 因此,对于不同的目标检测算法,需要根据其要求选择相应的数据集标注格式,以保证算法的正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [objectDetectionDatasets目标检测数据集制作:VOC,COCO,YOLO等常用数据集格式的制作和互相转换](https://download.csdn.net/download/weixin_42614745/85278721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [YOLO目标检测+扑克牌数据集已标注可以直接使用(3400张图像+对应已标注VOC、COCOYOLO格式文件).rar](https://download.csdn.net/download/m0_62143653/87774669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [目标检测数据集VOC格式工程车辆数据集系列17渣土车数据集-3449张](https://download.csdn.net/download/FL1623863129/87454796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值