深度学习篇---数据集分类

server/2025/1/19 9:09:24/

文章目录

  • 前言
  • 第一部分:VOC数据集标签、COCO数据集格式
    • 1.VOC数据集标签的特点及优缺点
      • 特点
      • 优点
      • 缺点
    • 2.COCO数据集标签的特点及优缺点
      • 特点
      • 优点
      • 缺点
    • 3.YOLO数据集标签的特点及优缺点
      • 特点
      • 优点
      • 缺点
  • 第二部分:VOC格式和YOLO格式
    • 1.VOC格式
    • 3.YOLO格式
    • 3.区别
      • (1)文件格式
      • (2)标注内容
      • (3)使用场景
  • 总结


前言

以上就是今天要讲的内容,本文简单介绍了学习>深度学习中的三种数据格式VOC(XML)、COCO(JSON)、YOLO(TXT)格式


第一部分:VOC数据集标签、COCO数据集格式

1.VOC数据集标签的特点及优缺点

特点

  1. XML格式:
    VOC数据集的标签使用XML文件格式存储,每个图像都有一个对应的XML文件,其中包含了图像中所有对象的详细信息。
  2. 边界框标注:
    每个对象都用一个边界框(xmin, ymin, xmax, ymax)来标注其在图像中的位置。
  3. 类别标签:
    每个对象都有一个类别标签,如人、车、猫等。
  4. 分割标注:
    除了边界框,VOC还提供了对象的分割掩码,可以是分割的边界框或多边形。

优点

  1. 详细的信息:
    XML格式允许存储丰富的信息,如对象的难度、是否被截断、是否包含在图像中等。
  2. 易于扩展:
    由于使用XML,添加新的属性或标注类型相对容易。
  3. 广泛使用:
    VOC数据集在目标检测和分割领域被广泛使用,有大量的工具和库支持。

缺点

  1. 解析复杂:
    XML文件的解析比简单的文本文件复杂,可能会增加处理时间和资源消耗。
  2. 存储空间大:
    XML文件通常比纯文本文件大,尤其是当包含分割掩码时。

2.COCO数据集标签的特点及优缺点

特点

  1. JSON格式:
    COCO数据集的标签使用JSON文件格式,每个数据集有一个JSON文件,包含了所有图像和标注的信息。
  2. 多种标注类型:
    COCO支持多种标注类型,包括边界框、分割掩码、关键点标注等。
  3. 丰富的属性:
    COCO的标签可以包含对象的多种属性,如面积、是否被遮挡、视角等。
  4. 层次结构:
    COCO的JSON文件有明确的层次结构,便于组织和查询数据。

优点

  1. 多功能性:
    COCO支持多种任务,包括目标检测、分割、关键点识别等。
  2. 详细的标注:
    COCO提供了非常详细的标注信息,有助于训练更复杂的模型。
  3. 广泛的应用:
    COCO是当前最流行的数据集之一,被许多研究者和公司用于各种计算机视觉任务。

缺点

  1. 处理复杂:
    JSON文件的解析和处理比简单的文本文件复杂,尤其是在处理大型数据集时。
  2. 存储和传输成本:
    JSON文件通常比文本文件大,这可能会增加存储和传输的成本。
  3. 标注难度:
    COCO的详细标注要求高,因此标注过程可能更耗时和昂贵。

3.YOLO数据集标签的特点及优缺点

特点

  1. 简洁性:
    YOLO标签通常存储在一个简单的文本文件中,每个文件对应一个图像的所有标注信息。
  2. 归一化坐标:
    标签中的坐标是归一化的,即相对于图像宽度和高度的百分比,而不是像素值。这有助于模型在不同尺寸的图像上具有更好的泛化能力。
  3. 中心点坐标:
    标签包含对象的中心点坐标(x_center, y_center),而不是边界框的角落坐标,这有助于模型更直接地学习对象的中心位置。
  4. 宽度和高度:
    标签还包括对象的宽度和高度,这些也是相对于图像尺寸的归一化值。
  5. 类别ID:
    每个对象都有一个类别ID,通常是从0开始的整数。

优点

  1. 处理速度快:
    由于标签格式简单,解析和加载标签的速度非常快,这对于训练大型数据集特别有利。
  2. 易于理解:
    简单的文本格式使得标注数据易于理解和编辑,无需复杂的解析器。
  3. 兼容性强:
    YOLO格式与YOLO系列算法无缝集成,可以高效地进行训练和推理。
  4. 空间效率:
    文本文件占用的空间相对较小,特别是在处理大量数据时,可以节省存储空间。

缺点

  1. 不支持复杂标注:
    YOLO格式不支持复杂的标注类型,如分割掩码或多边形标注,这限制了它在需要这些类型标注的任务中的应用。
  2. 缺乏详细信息:
    相比于COCO或VOC格式,YOLO标签不包含额外的属性信息,如对象的姿态、是否被截断或是否难以识别等。
  3. 扩展性限制:
    对于需要扩展更多标注信息的任务,YOLO格式可能不够灵活,需要额外的处理步骤或转换。
  4. 对标注精度要求高:
    由于坐标是归一化的,标注的精度对模型的性能有较大影响。微小的标注错误可能导致预测精度显著下降。

第二部分:VOC格式和YOLO格式

VOC格式和YOLO格式是两种在目标检测任务中常用的标注文件格式。下面分别详细介绍这两种格式。

1.VOC格式

VOC格式(PASCAL VOC XML)
VOC格式的标注文件通常是XML文件,它详细描述了图像中的每个对象的位置、类别和其他属性。以下是一个VOC格式XML文件的示例结构:

<annotation><folder>folder_name</folder><filename>image_name.jpg</filename><source><database>Unknown</database></source><size><width>image_width</width><height>image_height</height><depth>image_depth</depth></size><segmented>0</segmented><object><name>object_class_name</name><pose>Unspecified</pose><truncated>0</truncated><difficult>0</difficult><bndbox><xmin>bbox_xmin</xmin><ymin>bbox_ymin</ymin><xmax>bbox_xmax</xmax><ymax>bbox_ymax</ymax></bndbox></object><!-- 更多对象 -->
</annotation>

关键字段说明:
: 图像所在的文件夹名称。
: 图像文件的名称。

: 图像的来源信息。 : 图像的尺寸,包括**宽度、高度和深度**(通常是3,表示RGB图像)。 : 表示图像是否包含**分割掩码,0表示没有**。 : 包含单个对象的标注信息。 : 对象的**类别名称**。 : 对象的**姿态,通常不使用**。 : 对象**是否被截断,0表示没有**。 : 对象**是否难以识别,0表示容易识别**。 : 包含对象的**边界框坐标,xmin、ymin、xmax、ymax分别表示边界框的左上角 和右下角坐标**。 ## 2.COCO格式 COCO(Common Objects in Context)格式是一种广泛使用的图像标注格式,主要用于目标检测、分割、关键点识别等计算机视觉任务。**COCO格式**通过**JSON文件**来存储图像信息和标注数据。以下是COCO格式的主要组成部分和结构: 一个COCO格式的JSON文件通常包含以下关键部分:
  1. info:关于数据集的元数据,如版本、年份、贡献者等。
  2. licenses:图像的许可证信息
  3. images:图像列表,每个条目包含图像的文件名、尺寸、ID等信息。
  4. annotations:标注列表,每个条目包含单个标注的详细信息,如类别ID、边界框坐标、分割掩码等。
  5. categories:类别列表,每个条目包含类别的ID和名称
{"info": {"description": "Example Dataset","url": "http://example.com/","version": "1.0","year": 2023,"contributor": "Example Contributor","date_created": "2023-01-01"},"licenses": [{"url": "http://example.com/license","id": 1,"name": "Example License"}],"images": [{"license": 1,"file_name": "000000123456.jpg","coco_url": "http://example.com/images/000000123456.jpg","height": 480,"width": 640,"date_captured": "2023-01-01 12:00:00","flickr_url": "http://example.com/flickr/000000123456.jpg","id": 123456}],"annotations": [{"id": 1,"image_id": 123456,"category_id": 3,"segmentation": [[...]],  // 分割掩码数据"area": 5000,"bbox": [50, 60, 200, 150],  // [x, y, width, height]"iscrowd": 0}],"categories": [{"id": 1,"name": "person","supercategory": "person"},{"id": 2,"name": "bicycle","supercategory": "vehicle"},// 更多类别...]
}

3.YOLO格式

YOLO格式的标注文件通常是TXT文件,它以一个简单的文本格式存储图像中每个对象的类别ID和边界框坐标。以下是一个YOLO格式TXT文件的示例内容:

class_id x_center y_center width height
其中,每个对象占一行,字段之间用空格分隔

class_id: 对象的类别ID,通常是一个整数,对应于数据集中的类别索引
x_center: 对象边界框中心的x坐标,归一化到0和1之间(相对于图像宽度)。
y_center: 对象边界框中心的y坐标,归一化到0和1之间(相对于图像高度)。
width: 对象边界框的宽度,归一化到0和1之间(相对于图像宽度)。
height: 对象边界框的高度,归一化到0和1之间(相对于图像高度)。

3.区别

(1)文件格式

VOC: XML
COCO: JSON
YOLO: TXT

(2)标注内容

VOC: 主要提供边界框和分割掩码。
COCO: 提供边界框、分割掩码、关键点等多种标注。
YOLO: 提供边界框,格式为归一化中心点坐标和宽高。

(3)使用场景

VOC: 适用于传统的目标检测和分割任务。较为复杂、难懂一些。
COCO: 适用于多种复杂的视觉识别任务。较为复杂、难懂一些。
YOLO: 专为YOLO算法设计,用于快速目标检测。比较直观、简单一些。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了学习>深度学习中的三种数据格式VOC(XML)、COCO(JSON)、YOLO(TXT)格式


http://www.ppmy.cn/server/159584.html

相关文章

什么是Spring Boot 应用开发?

一、引言 在当今的软件开发领域&#xff0c;Java 依然占据着重要的地位&#xff0c;而 Spring Boot 作为 Java 生态系统中极具影响力的框架&#xff0c;极大地简化了企业级应用的开发流程&#xff0c;提升了开发效率和应用的可维护性。它基于 Spring 框架构建&#xff0c;通过…

gesp(C++五级)(8)洛谷:B3969:[GESP202403 五级] B-smooth 数

gesp(C五级)&#xff08;8&#xff09;洛谷&#xff1a;B3969&#xff1a;[GESP202403 五级] B-smooth 数 题目描述 小杨同学想寻找一种名为 $ B $-smooth 数的正整数。 如果一个正整数的最大质因子不超过 $ B $&#xff0c;则该正整数为 $ B $-smooth 数。小杨同学想知道&am…

Vue.js组件开发-如何处理跨域请求

在Vue.js组件开发中&#xff0c;处理跨域请求&#xff08;CORS&#xff0c;即跨来源资源共享&#xff09;通常不是直接在Vue组件中解决的&#xff0c;而是需要后端服务器进行相应的配置&#xff0c;以允许来自不同源的请求。不过&#xff0c;前端开发者也需要了解一些基本的COR…

机器学习(2):线性回归Python实现

1 概念回顾 1.1 模型假设 线性回归模型假设因变量y yy与自变量x xx之间的关系可以用以下线性方程表示&#xff1a; y β 0 β 1 ⋅ X 1 β 2 ⋅ X 2 … β n ⋅ X n ε y 是因变量 (待预测值)&#xff1b;X1, X2, ... Xn 是自变量&#xff08;特征&#xff09;β0, β1,…

SpringBoot3-整合WebSocket指南

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 SpringBoot3-整合WebSocket指南 1. 什么是WebSocket?2. 环境准备 2.1 项目依赖 3. WebSocket配置 3.1 WebSocket配置类3.2 自定义WebSocket处理器 4. 控制器5. 前端实现 5.1 HTML页面…

Linux——动静态库

库的本质实际上就是已经写好的&#xff0c;现有的、可以被复用的代码的集合。库被分为两类&#xff0c;一类是静态库&#xff1a;.a[Linux]、.lib[windows]&#xff1b;一类是&#xff1a;动态库&#xff1a;.so[Linux]、.dll[Windows]。其实这里就会有疑问&#xff0c;为什么我…

【PowerQuery专栏】PowerQuery的函数Excel.WorkBook

对于Excel文件来说,目前有两种不同场景需要使用到Excel函数进行解析: 当前Excel数据解析 Excel.CurrentWorkbook外部引用Excel数据解析 Excel.Workbook这里先来看一下当前Excel当前文件数据的引用,Excel.CurrentWorkbook 是基于当前的Excel中的表对象进行数据…

从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用

文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合&#xff0c;使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3&#xff08;knife4j&#xff09; 1.6.1 整…