当前位置: 首页 > news >正文

COCO、VOC 和 YOLO三种主流目标检测数据格式的详细对比与示例说明

以下是 COCOVOCYOLO 三种主流目标检测数据格式的详细对比与示例说明,帮助你快速理解它们的结构和适用场景:


1. PASCAL VOC (XML格式)

特点
  • 通用性强:支持检测、分割、动作识别等多任务。
  • 元数据丰富:包含物体难度、截断状态等附加信息。
  • 文件结构
    VOC2012/
    ├── Annotations/       # 每个图片对应一个.xml文件
    ├── JPEGImages/        # 原始图片
    └── ImageSets/Main/    # 划分文件(train.txt, val.txt)
    
XML标注示例
<annotation><filename>2007_000027.jpg</filename><size><width>500</width><height>375</height><depth>3</depth></size><object><name>person</name><bndbox><xmin>174</xmin><ymin>101</ymin><xmax>349</xmax><ymax>351</ymax></bndbox><difficult>0</difficult>  <!-- 0表示易检测,1表示困难 --><truncated>1</truncated>  <!-- 物体是否被截断 --></object>
</annotation>
适用场景
  • 需要细粒度分析(如困难样本统计)。
  • 多任务学习(检测+分割)。

2. COCO (JSON格式)

特点
  • 统一归档:所有标注存储在单个JSON文件中。
  • 支持密集任务:如实例分割(多边形标注)、关键点检测。
  • 文件结构
    coco/
    ├── train2017/       # 训练图片
    ├── val2017/         # 验证图片
    └── annotations/     # 标注文件├── instances_train2017.json└── instances_val2017.json
    
JSON标注示例
{"images": [{"id": 1,"file_name": "0000001.jpg","width": 640,"height": 480}],"annotations": [{"id": 1,"image_id": 1,"category_id": 1,  # 类别ID(对应categories中的id)"bbox": [x, y, width, height],  # 左上角坐标+宽高"area": 50000,"segmentation": [[x1,y1,x2,y2,...]],  # 多边形坐标"iscrowd": 0  # 0表示单个物体,1表示密集群组}],"categories": [{"id": 1, "name": "person"},{"id": 2, "name": "car"}]
}
适用场景
  • 复杂任务(如实例分割)。
  • 需要高效管理大规模数据集。

3. YOLO (TXT格式)

特点
  • 轻量化:每个图片对应一个.txt文件,存储归一化坐标。
  • 算法友好:直接适配YOLO系列模型。
  • 文件结构
    yolov5_dataset/
    ├── images/
    │   ├── train/       # 图片
    │   └── val/
    ├── labels/
    │   ├── train/       # 标签(.txt)
    │   └── val/
    └── dataset.yaml     # 配置文件
    
TXT标注示例
# 000001.txt
0 0.53 0.65 0.12 0.24  # 类别ID 中心x 中心y 宽度 高度(均归一化到[0,1])
1 0.31 0.42 0.15 0.10
  • 归一化计算
    ( x_{\text{center}} = \frac{x_{\text{min}} + x_{\text{max}}}{2 \times \text{image_width}} )
    ( width = \frac{x_{\text{max}} - x_{\text{min}}}{\text{image_width}} )
适用场景
  • YOLO系列模型训练。
  • 需要快速读取的小型项目。

三者的核心区别

特性VOC (XML)COCO (JSON)YOLO (TXT)
标注存储方式单文件单图片单文件全数据集单文件单图片
坐标格式绝对像素值 (xmin,ymin…)绝对像素值 + 宽高归一化中心坐标 + 宽高
附加信息困难样本、截断标记分割多边形、密集标记仅基础检测信息
适用算法Faster R-CNN, SSDMask R-CNN, Detectron2YOLOv3/v5/v8
文件体积中等(多个XML)较大(单个JSON)最小(多个TXT)

格式转换工具推荐

  1. VOC → YOLO
    python yolov5/scripts/voc2yolo.py --voc_dir VOC2012 --output_dir VOC2012_YOLO
    
  2. COCO → YOLO
    python yolov5/scripts/coco2yolo.py --json annotations/instances_train2017.json --dir train2017
    
  3. 可视化验证
    from PIL import Image, ImageDraw
    # 以YOLO格式为例绘制标注框
    img = Image.open("image.jpg")
    draw = ImageDraw.Draw(img)
    with open("label.txt") as f:for line in f:cls_id, x, y, w, h = map(float, line.split())# 转换为像素坐标x1 = (x - w/2) * img.widthy1 = (y - h/2) * img.heightx2 = (x + w/2) * img.widthy2 = (y + h/2) * img.heightdraw.rectangle([x1, y1, x2, y2], outline="red")
    img.show()
    
http://www.lryc.cn/news/578492.html

相关文章:

  • Java Selenium反爬虫技术方案
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • 基于c#语言的股票模拟交易软件的开发与实现
  • Vue3 使用 i18n 实现国际化完整指南
  • AiPy实战(7):一键生成天气组件,解放UI设计的双手
  • 应用场景全解析:飞算 JavaAI 的实战舞台
  • 业界优秀的零信任安全管理系统产品介绍
  • 启用不安全的HTTP方法
  • 内部类与Lambda的衍生关系(了解学习内部类,Lambda一篇即可)
  • [6-02-01].第48节:场景整合 -搭建父项目
  • DIC技术在金属材料裂纹尖端张开位移(COD)分析中的创新应用
  • Badoo×亚矩云手机:社交约会革命的“云端心跳加速剂“
  • 企业上网行为管理:零信任安全产品的对比分析
  • 3D 商品展示与 AR 试戴能为珠宝行业带来一些便利?
  • 软件测试复习之单元测试
  • Sql注入中万能密码order by联合查询利用
  • linux系统编程——Makefile、GDB调试
  • Terraform Helm:微服务基础设施即代码
  • Linux容器讲解以及对应软件使用
  • 云原生的本质
  • Oracle 常用函数
  • WPF学习(三)
  • 3.1.1.9 安全基线检查项目九:检查是否设置限制su命令用户组
  • 企业级应用技术-ELK日志分析系统
  • Windows10/11 轻度优化 纯净版,12个版本!
  • 基于开源AI大模型AI智能名片S2B2C商城小程序的流量转化与价值沉淀研究
  • SiFli 52 UART的RX唤醒MCU怎么做
  • 智能体瘦身实战:ONNX转换器+TensorRT加速器+显存监控仪
  • python多线程高级锁知识:Semaphore信号量、Barrier栅栏在线程中的使用、高级event事件
  • linux魔术字定位踩内存总结