深度学习篇---数据集分类
文章目录
- 前言
- 第一部分: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…...

合合信息名片全能王上架原生鸿蒙应用市场,成为首批数字名片类应用
长期以来,名片都是企业商务沟通的重要工具。随着企业数字化转型,相较于传统的纸质名片,数字名片对于企业成员拓展业务、获取商机、提升企业形象等方面发挥着重要作用。近期,合合信息旗下名片全能王正式上线原生鸿蒙应用市场&#…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...