深度学习篇---数据集分类
文章目录
- 前言
- 第一部分: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数据集标签的特点及优缺点
特点
- XML格式:
VOC数据集的标签使用XML文件格式存储,每个图像都有一个对应的XML文件,其中包含了图像中所有对象的详细信息。 - 边界框标注:
每个对象都用一个边界框(xmin, ymin, xmax, ymax)来标注其在图像中的位置。 - 类别标签:
每个对象都有一个类别标签,如人、车、猫等。 - 分割标注:
除了边界框,VOC还提供了对象的分割掩码,可以是分割的边界框或多边形。
优点
- 详细的信息:
XML格式允许存储丰富的信息,如对象的难度、是否被截断、是否包含在图像中等。 - 易于扩展:
由于使用XML,添加新的属性或标注类型相对容易。 - 广泛使用:
VOC数据集在目标检测和分割领域被广泛使用,有大量的工具和库支持。
缺点
- 解析复杂:
XML文件的解析比简单的文本文件复杂,可能会增加处理时间和资源消耗。 - 存储空间大:
XML文件通常比纯文本文件大,尤其是当包含分割掩码时。
2.COCO数据集标签的特点及优缺点
特点
- JSON格式:
COCO数据集的标签使用JSON文件格式,每个数据集有一个JSON文件,包含了所有图像和标注的信息。 - 多种标注类型:
COCO支持多种标注类型,包括边界框、分割掩码、关键点标注等。 - 丰富的属性:
COCO的标签可以包含对象的多种属性,如面积、是否被遮挡、视角等。 - 层次结构:
COCO的JSON文件有明确的层次结构,便于组织和查询数据。
优点
- 多功能性:
COCO支持多种任务,包括目标检测、分割、关键点识别等。 - 详细的标注:
COCO提供了非常详细的标注信息,有助于训练更复杂的模型。 - 广泛的应用:
COCO是当前最流行的数据集之一,被许多研究者和公司用于各种计算机视觉任务。
缺点
- 处理复杂:
JSON文件的解析和处理比简单的文本文件复杂,尤其是在处理大型数据集时。 - 存储和传输成本:
JSON文件通常比文本文件大,这可能会增加存储和传输的成本。 - 标注难度:
COCO的详细标注要求高,因此标注过程可能更耗时和昂贵。
3.YOLO数据集标签的特点及优缺点
特点
- 简洁性:
YOLO标签通常存储在一个简单的文本文件中,每个文件对应一个图像的所有标注信息。 - 归一化坐标:
标签中的坐标是归一化的,即相对于图像宽度和高度的百分比,而不是像素值。这有助于模型在不同尺寸的图像上具有更好的泛化能力。 - 中心点坐标:
标签包含对象的中心点坐标(x_center, y_center),而不是边界框的角落坐标,这有助于模型更直接地学习对象的中心位置。 - 宽度和高度:
标签还包括对象的宽度和高度,这些也是相对于图像尺寸的归一化值。 - 类别ID:
每个对象都有一个类别ID,通常是从0开始的整数。
优点
- 处理速度快:
由于标签格式简单,解析和加载标签的速度非常快,这对于训练大型数据集特别有利。 - 易于理解:
简单的文本格式使得标注数据易于理解和编辑,无需复杂的解析器。 - 兼容性强:
YOLO格式与YOLO系列算法无缝集成,可以高效地进行训练和推理。 - 空间效率:
文本文件占用的空间相对较小,特别是在处理大量数据时,可以节省存储空间。
缺点
- 不支持复杂标注:
YOLO格式不支持复杂的标注类型,如分割掩码或多边形标注,这限制了它在需要这些类型标注的任务中的应用。 - 缺乏详细信息:
相比于COCO或VOC格式,YOLO标签不包含额外的属性信息,如对象的姿态、是否被截断或是否难以识别等。 - 扩展性限制:
对于需要扩展更多标注信息的任务,YOLO格式可能不够灵活,需要额外的处理步骤或转换。 - 对标注精度要求高:
由于坐标是归一化的,标注的精度对模型的性能有较大影响。微小的标注错误可能导致预测精度显著下降。
第二部分: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>
关键字段说明:
: 图像所在的文件夹名称。
: 图像文件的名称。
- info:关于数据集的元数据,如版本、年份、贡献者等。
- licenses:图像的许可证信息。
- images:图像列表,每个条目包含图像的文件名、尺寸、ID等信息。
- annotations:标注列表,每个条目包含单个标注的详细信息,如类别ID、边界框坐标、分割掩码等。
- 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)格式
相关文章:
深度学习篇---数据集分类
文章目录 前言第一部分:VOC数据集标签、COCO数据集格式1.VOC数据集标签的特点及优缺点特点优点缺点 2.COCO数据集标签的特点及优缺点特点优点缺点 3.YOLO数据集标签的特点及优缺点特点优点缺点 第二部分:VOC格式和YOLO格式1.VOC格式3.YOLO格式3.区别(1)文…...

Unity3D仿星露谷物语开发23之拿起道具的动画
1、目标 当点击库存栏上可以carry的道具时,首先arms替换为carry状态,同时手上拿着被点击的道具。当再次点击同一个道具时,ams替换为idle状态,手上放下之前的道具。 这个最主要的是要学会使用AnimatorOverrideController类。 2、…...

素描风格渲染
素描风格渲染(Hatching Style Rendering),是一种非真实感渲染(NPR),主要目的是使3D模型看起来像 手绘素描的视觉效果。这种风格的渲染常用于游戏、动画和电影中,用来创造一种独特的艺术风格 1、…...

STM32使用DSP库 Keil方式添加
文章目录 前言一、添加DSP库二、使能FPU及配置1. 使能FPU2. 增加编译的宏3.增加头文件的检索路径三. 验证1. 源码中添加2.代码测试前言 添加DSP有两种方案,本文采用的是是Keil 中添加。 一、添加DSP库 在创建好的工程中添加DSP库:步骤如下: 步骤1:选择运行环境管理; 步…...

【机器学习实战入门项目】MNIST数字分类机器学习项目
Python 深度学习项目:手写数字识别 为了使机器更加智能,开发者们正在深入研究机器学习和深度学习技术。人类通过不断练习和重复来学习执行某项任务,从而记住如何完成这些任务。然后,大脑中的神经元会自动触发,他们能够…...

利用 LNMP 实现 WordPress 站点搭建
部署MySQL数据库 在主机192.168.138.139主机部署数据库服务 包安装数据库 apt-get install mysql-server 创建wordpress数据库和用户并授权 mysql> create database wordpress;#MySQL8.0要求指定插件 mysql> create user wordpress192.168.138.% identified with mys…...

模块化架构与微服务架构,哪种更适合桌面软件开发?
前言 在现代软件开发中,架构设计扮演着至关重要的角色。两种常见的架构设计方法是模块化架构与微服务架构。它们各自有独特的优势和适用场景,尤其在C#桌面软件开发领域,模块化架构往往更加具有实践性。本文将对这两种架构进行对比࿰…...
2025.1.17——1200
2025.1.17——1200 Q1. 1200 Jellyfish has n n n green apples with values a 1 , a 2 , … , a n a_1, a_2, \dots, a_n a1,a2,…,an and Gellyfish has m m m green apples with values b 1 , b 2 , … , b m b_1,b_2,\ldots,b_m b1,b2,…,bm. They will …...
vite工程化
Vite 通过直接利用浏览器的模块加载能力、将 CommonJS 模块转换为 ES 模块并缓存结果、基于原生 ES 模块的 HMR 以及对 TypeScript 的直接支持,提供了更快的开发体验和更高的开发效率。 1.直接利用浏览器模块加载功能 更快加载速度:不需要打包…...

Mysql常见问题处理集锦
Mysql常见问题处理集锦 root用户密码忘记,重置的操作(windows上的操作)MySQL报错:ERROR 1118 (42000): Row size too large. 或者 Row size too large (> 8126).场景:报错原因解决办法 详解行大小限制示例:内容来源于网…...
Android SystemUI——CarSystemBar添加到窗口(十)
上一篇文章我们看到了车载状态栏 CarSystemBar 视图的创建流程,这里我们继续分析将车载状态栏添加到 Windows 窗口中。 一、添加状态栏到窗口 前面我们已经分析了构建视图对象容器和构建视图对象内容,接下来我们继续分析 attachNavBarWindows() 方法将视…...
《重生到现代之从零开始的C++生活》—— 类和对象1
类 我嘞个豆,类可是太重要了,简直是重中之重 class为定义类的关键字,stack为类的名字,{}为类的主题 class stack {void add (int a,int b){return ab;}//类的方法,成员函数int _c;int _d;//类的属性,成…...

《FMambaIR:一种基于混合状态空间模型和频域的方法用于图像恢复》学习笔记
paper:(PDF) FMambaIR: A Hybrid State Space Model and Frequency Domain for Image Restoration 目录 摘要 一、引言 二、相关工作 1、图像恢复 2、频率学习 3、状态空间模型(SSM) 三、框架 1、基本知识 2、整体框架 3、F-Mamba…...

每日十题八股-2025年1月18日
1.服务器处理并发请求有哪几种方式? 2.讲一下io多路复用 3.select、poll、epoll 的区别是什么? 4.epoll 的 边缘触发和水平触发有什么区别? 5.redis,nginx,netty 是依赖什么做的这么高性能? 6.零拷贝是什么…...

海康威视摄像头RTSP使用nginx推流到服务器直播教程
思路: 之前2020年在本科的时候,由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载!!!! 使用网络摄像头中的rtsp协议---------通…...

搭建一个基于Spring Boot的书籍学习平台
搭建一个基于Spring Boot的书籍学习平台可以涵盖多个功能模块,例如用户管理、书籍管理、学习进度跟踪、笔记管理、评论和评分等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的书籍学习平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个…...
Go 语言的slice是如何扩容的?
Go 语言中的 slice 是一种灵活、动态的视图,是对底层数组的抽象。当对 slice 进行追加元素等操作导致其长度超过容量时,就会发生扩容。 一、扩容的基本原理 当 slice 需要扩容时,Go 语言会根据当前的容量来确定新的容量。一般来说ÿ…...
Apache Hive--排序函数解析
在大数据处理与分析中,Apache Hive是一个至关重要的数据仓库工具。其丰富的函数库为数据处理提供了诸多便利,排序函数便是其中一类非常实用的工具。通过排序函数,我们能够在查询结果集中为每一行数据分配一个排名值,这对于数据分析…...
Java 接口安全指南
Java 接口安全指南 概述 在现代 Web 应用中,接口(API)是前后端交互的核心。然而,接口的安全性常常被忽视,导致数据泄露、未授权访问等安全问题。本文将详细介绍 Java 中如何保障接口安全,涵盖以下内容&am…...

合合信息名片全能王上架原生鸿蒙应用市场,成为首批数字名片类应用
长期以来,名片都是企业商务沟通的重要工具。随着企业数字化转型,相较于传统的纸质名片,数字名片对于企业成员拓展业务、获取商机、提升企业形象等方面发挥着重要作用。近期,合合信息旗下名片全能王正式上线原生鸿蒙应用市场&#…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...