COCO数据集转YOLO数据集

将coco格式数据集转换为yolo格式数据集 将coco格式的数据集转换成yolo格式 阅读详情
AI摘要

博客介绍了COCO数据集转YOLO数据集的相关内容,包含COCO数据格式、转换代码以及YOLO数据格式等关键信息,借助Python语言实现转换,涉及一定算法知识。

一、COCO数据格式

# 转换前的数据格式
data_coco/
├── images/
│   ├── train2017/  # 训练集图片
│   └── val2017/    # 验证集图片
└── annotations/    # 原始COCO JSON文件

二、代码

import json
import os
import argparse


class COCO2YOLO:
    def __init__(self):
        self._check_file_and_dir(json_file, output)
        self.labels = json.load(open(json_file, 'r', encoding='utf-8'))
        self.coco_id_name_map = self._categories()
        self.coco_name_list = list(self.coco_id_name_map.values())
        print("total images", len(self.labels['images']))
        print("total categories", len(self.labels['categories']))
        print("total labels", len(self.labels['annotations']))

    @staticmethod
    def _check_file_and_dir(file_path, dir_path):
        """
        文件检测和文件夹检测
        :param file_path:
        :param dir_path:
        :return:
        """
        if not os.path.exists(file_path):
            # 文件路径错误
            raise ValueError("file not found")
        if not os.path.exists(dir_path):
            # 文件夹不存在就创建
            os.makedirs(dir_path)

    def _categories(self):
        # 获取标注文件中的种类
        categories = {}
        for cls in self.labels['categories']:
            categories[cls['id']] = cls['name']
        return categories

    def _load_images_info(self):
        # 获取图片基本信息:文件名、宽、高
        images_info = {}
        for image in self.labels['images']:
            img_id = image['id']
            file_name = image['file_name']
            if file_name.find('\\') > -1:
                file_name = file_name[file_name.index('\\') + 1:]
            w = image['width']
            h = image['height']
            images_info[img_id] = (file_name, w, h)

        return images_info

    @staticmethod
    def _bbox_2_yolo(bbox, img_w, img_h):
        """
        将coco格式的边界框(Bounding Box)坐标转换为Yolo格式的归一化坐标
        :param bbox: COCO格式的边界框,格式为[x_min, y_min, width, height]
        :param img_w: 图片宽度
        :param img_h: 图片的高度
        :return: 归一化后的中心点x、y坐标、边界框的宽、高
        """
        x, y, w, h = bbox[0], bbox[1], bbox[2], bbox[3]
        # 边界框中心点坐标
        center_x = bbox[0] + w / 2
        center_y = bbox[1] + h / 2
        # 归一化因子
        dw = 1 / img_w
        dh = 1 / img_h
        # 归一化
        center_x *= dw
        w *= dw
        center_y *= dh
        h *= dh
        return center_x, center_y, w, h

    def _convert_anno(self, images_info):
        # 格式转换
        anno_dict = dict()
        for anno in self.labels['annotations']:
            bbox = anno['bbox']
            image_id = anno['image_id']
            category_id = anno['category_id']

            image_info = images_info.get(image_id)
            image_name = image_info[0]
            img_w = image_info[1]
            img_h = image_info[2]
            yolo_box = self._bbox_2_yolo(bbox, img_w, img_h)

            anno_info = (image_name, category_id, yolo_box)
            anno_infos = anno_dict.get(image_id)
            if not anno_infos:
                anno_dict[image_id] = [anno_info]
            else:
                anno_infos.append(anno_info)
                anno_dict[image_id] = anno_infos
        return anno_dict

    def coco2yolo(self):
        print("loading image info...")
        images_info = self._load_images_info()
        print("loading done, total images", len(images_info))

        print("start converting...")
        anno_dict = self._convert_anno(images_info)
        print("converting done, total labels", len(anno_dict))

        print("saving txt file...")
        self._save_txt(anno_dict)
        print("saving done")

    def _save_txt(self, anno_dict):
        for k, v in anno_dict.items():
            file_name = os.path.splitext(v[0][0])[0] + ".txt"
            with open(os.path.join(output, file_name), 'w', encoding='utf-8') as f:
                print(k, v)
                for obj in v:
                    cat_name = self.coco_id_name_map.get(obj[1])
                    category_id = self.coco_name_list.index(cat_name)
                    box = ['{:.6f}'.format(x) for x in obj[2]]
                    box = ' '.join(box)
                    line = str(category_id) + ' ' + box
                    f.write(line + '\n')


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Test yolo data.')
    parser.add_argument('-i', help='JSON file', dest='json',
                        default='/home/data_coco/annotations/meter_coco_val.json')
    parser.add_argument('-o', help='path to output folder', dest='out',
                        default='/home/data_coco/labels/val2017')

    args = parser.parse_args()

    json_file = args.json
    output = args.out

    COCO2YOLO().coco2yolo()

三、YOLO数据格式

# 转换后的数据格式
data_coco/
├── images/
│   ├── train2017/  # 训练集图片
│   └── val2017/    # 验证集图片
├── labels/
│   ├── train2017/  # 训练集标签(YOLO格式)
│   └── val2017/    # 验证集标签(YOLO格式)
└── annotations/    # 原始COCO JSON文件
coco 2017数据集 类别提取并转换为yolo数据集 annotations:训练集中所有标注信息,包括标注ID、图片ID、类别ID、边界框坐标等。categories:所有类别的信息,包括类别ID、类别名称、超类别名称等。images:训练集中所有图片的信息,包括图片ID、文件名、高度、宽度等。licenses:数据集的许可证信息,包括许可证ID、许可证名称等。info:数据集的相关信息,包括数据集名称、版本、作者、年份等。其中,images存放的是训练集、验证集的图片原图;转换代码 cocotoyolo.py。提取代码 getanimal.py。 阅读详情

相关推荐

coco数据集转yolo

yolov5自己有标注,下载之后可以看到,train的json文件,train,val的图片文件是缺少的,直接从yolov5里把缺少的拖过去就能用了。问题描述:yolo怎么跑coco数据集?bash get_coco.sh在window中不能使用怎么办?方法一:自己转换(不推荐)这个可能有自带数据集。

qq_41413211的博客 732

coco数据集转yolo数据集(简单易懂)

coco数据集转yolo数据集

qq_43471945的博客 1万+

发霉橙子数据集实战:COCO转YOLO与目标检测训练全流程

目标检测是计算机视觉的核心任务,其原理是通过边界框定位与分类实现物体识别。高质量标注数据是模型性能的基石,COCO格式因其结构清晰成为主流标注标准,而YOLO格式则因训练高效被广泛采用。掌握COCO转YOLO的转换技术,能有效解决类别映射、坐标归一化等工程痛点,直接提升模型mAP。在农产品分拣场景中,正常橙子与发霉橙子的二分类检测对质量控制至关重要。本文围绕一份7654张图的发霉橙子数据集,拆解COCO JSON标注结构,提供转换脚本与训练调参经验,帮助开发者跑通从数据校验到切片推理的完整落地流程。

weixin_29032337的博客 265

coco数据集格式转yolo数据格式

COCO(Common Objects in Context)是一个广泛使用的目标检测和分割数据集,而YOLO(You Only Look Once)是一种流行的实时目标检测算法。首先,导入了必要的库,包括json和os。然后,定义了一个名为的函数,用于将COCO数据转换为YOLO格式。该函数接受一个COCO数据的字典作为输入,并返回转换后的YOLO数据和类别字典。在函数内部,提取了COCO数据中的图像列表、注释和类别信息。然后,创建了一个空的YOLO数据列表和一个用于存储类别名和序号映射关系的字典。

小张的技术分享博客 4609

黑熊检测数据集:COCO转YOLO格式,1009张图训练全指南

目标检测模型的训练效果高度依赖数据质量与标注格式。COCO作为计算机视觉领域的基准数据集,提供了丰富的类别标注,其中bear类包含1009张真实场景图片,且以txt与xml双格式呈现,可直接用于YOLO系列模型训练。通过理解归一化坐标与VOC格式的差异,配合类别ID映射与标签可视化,即可快速构建黑熊检测模型。借助迁移学习和数据增强,即使样本量有限也能获得稳健的mAP表现。本文从数据整理、转换脚本、训练配置到避坑要点,完整拆解一套可直接落地的黑熊检测方案,适用于野生动物监测、目标检测入门及YOLO实践场景。

weixin_29061425的博客 264

YOLO格式TinyPerson数据集:COCO转YOLO与YOLOv8小目标训练实战

目标检测工程中,数据格式转换与模型训练配置是影响小目标检测效果的关键环节。针对远距离小目标人群检测,TinyPerson数据集因其独特的尺度分布而被广泛复用。理解COCO格式与YOLO格式的标注差异,掌握归一化转换与边界处理,是使用YOLO系列模型训练的前提。在此基础上,通过调整输入分辨率、数据增强、检测头等策略,可显著提升小目标召回率。该数据集的预训练模型还能有效迁移至无人机航拍、监控等场景,降低标注成本。系统梳理从数据集准备到训练调优的完整流程,为小目标检测实践提供可参考的工程方案。

weixin_34079177的博客 313

YOLO转COCO数据集(202505月版本一定成功)

转换后检查json文件中的image_id是否包含subset信息(如'train/IMG_001.jpg')YOLO基本样式,YOLO有图片和标签两个文件夹分别对应test、train、和val文件夹。# 如没标签,跳过,只保留图片信息.│ ├── train/ # 训练集图片。│ └── val/ # 验证集图片。├── train/ # 训练集标签。└── val/ # 验证集标签。labels下的train,labels下的val,

zsj540070的博客 1274

风力叶片缺陷检测数据集:COCO转YOLO与训练避坑指南

在工业视觉领域,目标检测与实例分割模型的训练效果高度依赖标注数据的质量与格式。COCO格式作为通用实例标注标准,被广泛用于缺陷检测任务中,但不少算法工程师在将COCO标注转换为YOLO训练格式时,常因类别索引偏移、多边形分段合并、数据集划分泄漏等问题导致模型性能失真。本文以5113张无人机巡检视角的风力叶片缺陷检测数据为例,覆盖雷击、污垢、漏油、裂纹等七类真实缺陷,详细解读COCO JSON字段含义,并给出数据体检、格式转换、类别映射及按机组分组切分数据的实操方案。无论初入行者还是现场部署老手,均能通过此案

weixin_29041195的博客 273

YOLO格式数据集转COCO格式

网上找了很久的YOLO格式数据集转COCO格式的代码,但是没有一个成功的,费尽千辛万苦终于找到一个能用的,因此记录一下。参考文章。

Evan_qin_yi_quan的博客 8012

TinyPerson数据集COCO转YOLO格式完整教程与训练避坑指南

在目标检测工程中,数据格式转换是模型训练前绕不开的基础环节。COCO JSON与YOLO TXT标签体系在坐标定义、存储方式和类别编号上存在明显差异,理解归一化中心点坐标与类别映射原理,是确保标注数据被正确解析的关键。对于小目标检测任务,尤其是TinyPerson这类以远距离行人为核心的公开数据集,转换质量直接影响模型在海上搜救、岸线监控等场景中的表现。本文从格式差异出发,给出完整的转换脚本、数据集划分策略和可视化自查方法,并针对训练小目标时常见的标签错位、mAP偏低、loss异常等问题提供实用调参建议,帮

weixin_29035147的博客 320

交通信号灯数据集COCO转YOLO实战:从标注验货到训练避坑

目标检测模型的性能上限往往由训练数据决定,而数据标注格式与预处理流程则是其中容易被忽视的环节。COCO作为主流标注规范,其JSON结构中的类别映射、边框坐标定义直接影响后续训练效果。在交通信号灯识别这类高实时性感知任务中,从COCO转YOLO格式、数据集划分到训练参数调整,每一步都可能让模型在夜间、强光等场景下失准。本文以信号灯数据集为例,梳理COCO标注验货、YOLO标签转换、训练避坑和分距离评估的完整路径,帮助开发者避开黄灯误检、过曝漏检等常见问题。

weixin_34269583的博客 301

[软件工具][windows]coco转yolo工具使用教程coco数据集格式转YOLO的txt用于目标检测

这个是windows上使用coco格式转yolo格式的工具,具体使用方法请观看教程。我们将coco格式json导入进去然后把图片路径对应导入进去,注意导入json会自动解析所有类别名字,选择保存目录以后,我们右键单击coco类别区域选择复制所有类别到提取,这样就可以提取所有类别,如果你想提取部分类别手动填写就可以。coco转yolo工具使用教程coco数据集格式转YOLO的txt用于目标检测_哔哩哔哩_bilibili。有没有傻瓜式可以将coco格式转成yolo格式答案是肯定的,首先我们打开软件。

FL1623863129的博客 636

合宙Air780EP速连OneNET:AT+MQTT应用指南

本文详细讲解了合宙Air780EP使用AT指令通过MQTT接入OneNET的过程。

2401_82812461的博客 1388

【数据集】YOLO数据集转COCO数据集

【代码】【数据集】YOLO数据集转COCO数据集。

uwasuna的博客 780

YooAsset可寻址模式避坑指南:从路径加载到Addressable的完整迁移方案

本文详细介绍了将Unity项目从传统路径加载迁移到YooAsset可寻址模式的完整方案。针对中大型项目在迁移过程中遇到的路径耦合、依赖管理、热更新等痛点,提供了从架构设计、环境配置、代码迁移到性能优化的实战指南,并分享了实际项目的改造案例与避坑经验,帮助团队高效完成资源管理系统的重构。

weixin_28304023的博客 500

智能车竞赛必备:STC32G144K开源库实战指南(含总钻风摄像头配置)

本文为智能车竞赛参赛者提供了一份基于STC32G144K微控制器与逐飞开源库的实战开发指南。文章详细介绍了从开发环境搭建、总钻风摄像头驱动配置与图像采集优化,到核心控制算法实现与多任务调度等关键步骤,旨在帮助队伍快速构建稳定高效的视觉处理系统,提升竞赛竞争力。

weixin_29191081的博客 708

【数据集】COCO数据集转YOLO数据集

COCO格式的数据集标注文件(JSON格式)转换为YOLO格式的数据集标注文件(TXT格式)

uwasuna的博客 555

使用W5500与外网通信故障解决(MAC地址问题)

在蒲城项目的调试时,AMS500发现一个致命的问题,就是:在局域网跨网段通信时候和中心服务器不能通信,但是在一个HUB下是没有问题的,以前的串口服务器有过类似的问题出现,解决方法说是芯片的问题,结果也不了了之,换了芯片正常。 我们的网络通信芯片选择W5500,其中的MAC地址采用的是CPU的序列号作为Mac地址的问题就出在这,我们在使用的时候MAC地址的第一个必须是偶数,我们忽视了。 现象描...

zxm8513优快云博客 7755

yolo格式数据集转coco格式

修改数据集路径为自己的路径。

mahongfeidashazi的博客 893

本地部署大模型:dgx-spark-ai项目硬件选型、部署与私有化AI构建指南

大语言模型(LLM)的本地部署是当前AI工程实践中的重要方向,其核心原理在于将模型权重与计算过程完全置于用户可控的硬件环境中。这项技术的核心价值在于实现了数据主权与隐私安全,避免了云端服务的延迟、持续订阅成本及数据外泄风险。从技术实现看,本地部署的关键在于硬件选型与软件环境适配,尤其是NVIDIA GPU的CUDA生态、显存容量与内存带宽的匹配。在应用场景上,本地化部署特别适合对数据敏感性要求高的领域,如企业内部代码助手、金融分析或医疗研究,能够支持私有化模型微调与定制化工作流构建。本文以dgx-spark

weixin_42531579的博客 502

基于Python实现人脸识别相似度对比

随着人工智能技术的不断进步,人脸识别成为了一种广泛应用的技术。人脸相似度对比是其中的一个重要应用场景,可以用于人脸搜索、身份验证等方面。本文将介绍如何使用Python实现人脸相似度对比。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 9808

coco2017数据集COCO格式转YOLO格式

【代码】coco2017数据集COCO格式转YOLO格式。

帅的发光发亮的博客 3114

借助Gemini 3 Pro高效解决课题申报中的五大核心痛点,亲测有效经验分享

之前给大家分享过关于AI辅助课题申报的相关的内容,涵盖了申报书部分撰写技巧,但没针对性拆解各位同仁在实际申报时遇到的卡壳的地方。比如选题范围拿捏不准,定的太大,根本没法落地完成;定的太小,研究价值则体现不了;写综述时,容易单纯罗列文献,缺乏批判性视角,没办法自然融入自己的判断,找不到研究缺口;研究方法部分,可能担心方法设计不够严谨,别人难以复现.....针对这些申报中的高频痛点,接下来七哥会从五个核心要点出发,借助Gemini 3 Pro高效解决这些痛点。

智能AI让学术科研更容易 700

数据集txt格式转coco格式的方法(yolo转json)

1.新建一个py文件2.在存放要转化的数据集问价夹下新建train和val文件夹。

weixin_57425565的博客 1036

【DeepSeek实战】1、DeepSeek民用级开发全指南:从0到1掌握AI应用开发与模型蒸馏实战

DeepSeek创新性地打破了传统AI开发的技术壁垒,通过双模型架构(DeepSeek-V3和R1)实现普惠化与专业化并重。其核心优势包括:零代码操作、浏览器直接使用、中文提示词控制及低成本(2元/百万token)。用户通过简单三步(注册-配置-使用)即可快速开启AI之旅,平台提供$50免费额度支持2个月高频使用。 四大核心应用场景: 办公自动化:周报撰写、PPT生成、数据分析一键完成 内容创作:提供爆款标题生成、垂直领域写作模板 学习辅助:支持文档解析、错题讲解、知识图谱构建 生活服务:个性化行程规划

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1735

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

yolo数据集格式转coco

yolo数据集格式转coco

锁我喉是吧 936

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: python的argparse在celery中调用parser.parse_args()参数解析报错解决
82年苏打
博客等级 码龄6年 275粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

82年苏打

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

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

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

打赏作者

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

抵扣说明:

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

余额充值