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

动手学深度学习——数据集

1. 前言在前面的内容中我们已经学习了什么是物体检测什么是边界框边界框如何表示目标的位置但是仅仅理解这些概念还不够。如果想真正训练一个物体检测模型我们还必须解决一个核心问题训练数据从哪里来标签又该怎么组织这就引出了本节要学习的内容物体检测数据集Dataset。在图像分类任务中一个样本通常只对应一个类别标签比如这张图片是猫这张图片是狗但在物体检测中情况明显更复杂。因为一张图像中可能包含多个目标而每个目标不仅有类别还要有对应的边界框位置。所以检测数据集的组织方式比分类数据集复杂得多。这一节我们就来学习目标检测数据集长什么样图像和标签是如何对应的标签中通常包含哪些信息《动手学深度学习》中是如何读取检测数据集的2. 为什么物体检测需要专门的数据集格式在分类任务中标签通常非常简单一个数字就够了。例如0 表示猫1 表示狗2 表示汽车模型只需要学习“输入图像 → 输出类别”即可。但是在目标检测中模型需要完成两件事判断目标是什么判断目标在哪里所以一个标签已经不再只是一个类别编号而通常要同时包含目标类别边界框坐标如果一张图中有多个目标那么标签中还需要记录多个目标的信息。也就是说目标检测数据集必须能够描述一张图片中有几个目标每个目标属于什么类别每个目标的位置坐标是多少这就是为什么检测任务需要更复杂的数据组织形式。3. 目标检测数据集的基本组成一个完整的目标检测数据集通常由两部分组成3.1 图像文件也就是原始图片例如img1.jpgimg2.jpgimg3.jpg这些图片中包含我们要检测的目标。3.2 标注文件标注文件记录图片中的真实目标信息也就是常说的ground truth真实标注。对于每个目标通常需要标注类别名称或类别编号边界框位置例如一张图片中有一只狗和一只猫那么对应标注可能类似于[ [dog, x_min, y_min, x_max, y_max], [cat, x_min, y_min, x_max, y_max] ]这就表示图片中有两个目标第一个是狗对应一个边界框第二个是猫对应另一个边界框4. 目标检测标签通常长什么样为了便于训练检测标签往往会写成结构化格式。常见形式包括XMLJSONTXTCSV不同数据集格式不一样但核心信息其实都类似。4.1 VOC 风格Pascal VOC 常用 XML 文件保存标注。每张图片对应一个 XML 文件里面记录图片大小每个目标的类别每个目标的边界框坐标例如一个目标大致会标成类别dogxmin60ymin45xmax378ymax5164.2 COCO 风格COCO 数据集通常用 JSON 文件统一保存标注信息。它不仅保存类别和边界框还可能保存segmentation分割信息area目标面积iscrowd是否为密集对象COCO 的组织更复杂但功能也更强。4.3 YOLO 风格YOLO 系列常用 TXT 文件保存标签通常每张图对应一个.txt文件。每一行表示一个目标格式一般是class_id x_center y_center width height这里的坐标通常会做归一化处理即缩放到 0 到 1 之间。这种格式非常紧凑也便于训练。5. 李沐课程中使用的数据集形式在《动手学深度学习》的物体检测部分李沐老师为了便于教学没有一开始就上特别复杂的 VOC 或 COCO而是先用了一个比较小、比较容易理解的数据集示例。这类教学数据集的特点一般是数据量不大便于快速读取标签结构清晰适合演示检测数据的基本组织方式它的核心目的不是追求工业级规模而是帮助我们理解一张图像是如何与多个边界框标签对应起来的。在教学中往往会将图像路径和边界框标签通过表格、列表或者字典形式进行管理。例如某个样本可能包含图片文件名一个或多个目标类别每个目标的边界框坐标6. 物体检测数据集和分类数据集的根本区别这是很容易考察、也很适合写进博客的一点。6.1 分类数据集分类数据集通常是(图片, 类别标签)例如(cat.jpg, 0) (dog.jpg, 1) (car.jpg, 2)也就是说一张图通常只对应一个标签。6.2 检测数据集检测数据集通常是(图片, 多个目标的类别 多个边界框)例如(img.jpg, [ [class1, x1, y1, x2, y2], [class2, x1, y1, x2, y2] ])这表示同一张图中可能有多个目标。所以检测数据集相比分类数据集的核心难点就在于标签不再是单个值每张图对应的目标数量不固定每个目标都要有类别和位置7. 一个简单的检测数据集示意为了更好理解我们可以看一个简单例子。假设有一张图片catdog.jpg其中有两只动物一只狗一只猫那么它的标注可以写成[ [dog, 60, 45, 378, 516], [cat, 400, 112, 655, 493] ]其中dog表示目标类别(60, 45, 378, 516)表示狗的边界框cat表示另一个目标类别(400, 112, 655, 493)表示猫的边界框这个例子已经能很好说明检测数据集的本质一张图片对应的不再是一个类别而是一组“类别 位置”的组合。8. 数据集读取为什么重要很多初学者会觉得数据集不就是“拿来训练”的吗好像没什么可学的。但实际上深度学习项目里数据读取和标签组织常常决定了整个训练流程能否顺利跑起来。尤其在目标检测中数据集读取至少关系到以下几个问题8.1 图像与标签是否能正确对应比如0001.jpg对应的是不是0001.xml图像路径有没有写错标签文件有没有缺失只要这里出问题训练就会直接报错或者标签错位。8.2 边界框坐标是否正确例如左上角和右下角有没有写反宽高是否为正数坐标是否超出图像范围这些问题都会直接影响模型训练质量。8.3 类别编号是否统一比如cat是否统一映射成 0dog是否统一映射成 1不同文件里的类别顺序是否一致如果类别映射混乱模型训练结果就会完全错误。8.4 不同图片目标数量不同这是检测任务非常典型的特点。有些图片只有 1 个目标有些有 10 个目标所以标签长度并不固定。这就意味着检测数据加载时不能像分类那样简单地直接堆成规则矩阵而要做更灵活的处理。9. 《动手学深度学习》中数据集读取的核心思想虽然教学代码通常不会设计得像工业框架那样复杂但它背后的思想很值得理解。其核心通常包括这几步9.1 读取图像文件先把图片从磁盘加载进来转成张量或者数组形式。9.2 读取对应标签再根据图片编号找到对应的标注信息包括目标类别边界框坐标9.3 将类别和边界框整理成统一格式例如整理成[class_id, x_min, y_min, x_max, y_max]或者[x_min, y_min, x_max, y_max, class_id]具体顺序可以不同但必须统一。9.4 返回训练样本最终一个样本通常会以这样的形式交给模型(图像张量, 标签信息)这里的标签信息可能是一个二维结构因为一张图里可能有多个目标。10. 数据增强与数据集的关系在真正训练检测模型时数据集往往不仅仅是“读出来”就结束了还会配合数据增强Data Augmentation。例如常见增强包括随机裁剪翻转缩放改变颜色Mosaic 拼接但是检测任务中的数据增强比分类更复杂原因在于图像变了边界框也必须跟着一起变。比如图片缩放后框坐标也要按比例缩放图片左右翻转后框的位置也要重新计算图片裁剪后框可能被截断甚至消失所以检测数据集处理不只是“读图”更是“图像与标签同步变换”的过程。11. 为什么高质量数据集对检测任务尤其重要在目标检测里数据质量的重要性甚至比很多人想象得还高。因为模型要同时学两件事识别类别回归位置这意味着只要标签稍微不准影响就会比分类任务更明显。例如边界框画得过大会让模型学到错误背景边界框画得过小会截掉目标关键信息类别标签错了会直接误导模型漏标目标会让模型以为某些真实目标是背景所以在检测任务中常常有一句很实用的话垃圾标注喂不出好检测器。12. 本节总结这一节我们学习了物体检测中的“数据集”基础知识核心内容可以总结为以下几点。12.1 检测数据集比分类数据集复杂分类通常是一张图对应一个类别而检测是一张图对应多个目标每个目标都有类别和边界框。12.2 检测标签必须同时描述“是什么”和“在哪里”也就是类别信息位置信息这两部分缺一不可。12.3 常见检测数据集格式有多种包括VOC 的 XMLCOCO 的 JSONYOLO 的 TXT它们形式不同但核心都在描述目标类别和边界框。12.4 数据读取是检测训练的重要前提只有图像、类别、边界框三者正确对应模型训练才能顺利进行。13. 学习感悟很多人学习深度学习时更容易把注意力放在模型结构上比如卷积层、注意力机制、YOLO、Transformer。但真正做项目后会发现数据集往往才是最基础、也最容易出问题的一环。尤其在目标检测中数据不只是图片本身还包括复杂的目标标注信息。如果不能先把数据集结构理解清楚后面的锚框匹配、损失函数计算、模型训练过程都会显得很抽象。所以这一节虽然没有复杂公式也没有特别炫的模型结构但它其实是目标检测真正落地的起点。

相关文章:

动手学深度学习——数据集

1. 前言在前面的内容中,我们已经学习了:什么是物体检测什么是边界框边界框如何表示目标的位置但是,仅仅理解这些概念还不够。 如果想真正训练一个物体检测模型,我们还必须解决一个核心问题:训练数据从哪里来&#xff1…...

LumiPixel Canvas Quest性能优化指南:针对低显存GPU的部署与推理技巧

LumiPixel Canvas Quest性能优化指南:针对低显存GPU的部署与推理技巧 1. 为什么需要专项优化? 如果你手头的GPU显存只有16GB或更少,直接运行LumiPixel Canvas Quest这类大型图像生成模型可能会遇到显存不足的问题。常见的情况包括&#xff…...

AI万能分类器5分钟上手:零代码搭建智能客服分类系统

AI万能分类器5分钟上手:零代码搭建智能客服分类系统 1. 引言:当客服遇到海量工单,如何快速分类? 想象一下,你是一家电商公司的客服主管。每天,成百上千条用户咨询像潮水一样涌进后台:“我的快…...

大模型---RLHF

目录 1.RLHF的定义 2.LLM的RLHF 3.奖励模型 4.RLHF的主要问题与局限 5.“非显式RL”方法 (1)DPO (2)RRHF 后续有更深入学习,再继续补充: 1.RLHF的定义 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)的核心思想就是先让人告诉模型…...

手机号查询QQ号终极指南:3步快速找回遗忘账号

手机号查询QQ号终极指南:3步快速找回遗忘账号 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾经更换手机后忘记了绑定的QQ号?或者需要验证家人朋友的QQ账号关联情况?phone2qq项目提供了一…...

8大网盘直链解析工具:告别下载限速,实现本地高速下载

8大网盘直链解析工具:告别下载限速,实现本地高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云…...

5分钟快速上手MelonLoader:Unity游戏模组加载器完全指南

5分钟快速上手MelonLoader:Unity游戏模组加载器完全指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 想为你最爱…...

QMCDecode:3步搞定QQ音乐加密格式转换,让音乐真正属于你 [特殊字符]

QMCDecode:3步搞定QQ音乐加密格式转换,让音乐真正属于你 🎵 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音…...

软考 系统架构设计师历年真题集萃(240)

接前一篇文章:软考 系统架构设计师历年真题集萃(239) 第472题 下面安全协议中,用来实现安全电子邮件的协议是( )。 A. IPSec B. L2TP C. PGP D.PPTP 正确答案:C。 所属知识点:系统安全分析与设计 -> 网络安全设计。 试题解析: PGP(Pretty Good Privacy),…...

软考架构设计师论文 —— 论面向服务架构设计及其应用(5) —— 涉及知识点之Seata(2)

接前一篇文章:软考架构设计师论文 —— 论面向服务架构设计及其应用(4) —— 涉及知识点之Seata(1) 本文内容参考: Seata 是什么? | Apache Seata Seata分布式事务 (理论与部署相结合)-腾讯云开发者社区-腾讯云 特此致谢! 3. Seata架构 Seata事务管理中有三个重要的…...

CTF-NetA:零基础也能快速定位网络流量中的隐藏Flag

CTF-NetA:零基础也能快速定位网络流量中的隐藏Flag 【免费下载链接】CTF-NetA CTF-NetA是一款专门针对CTF比赛的网络流量分析工具,可以对常见的网络流量进行分析,快速自动获取flag。 项目地址: https://gitcode.com/gh_mirrors/ct/CTF-NetA…...

Display Driver Uninstaller:显卡驱动冲突的终极解决方案与系统净化技术伙伴

Display Driver Uninstaller:显卡驱动冲突的终极解决方案与系统净化技术伙伴 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display…...

Stable Diffusion模型分类详解:从入门到精通Anything V5二次元生成

Stable Diffusion模型分类详解:从入门到精通Anything V5二次元生成 1. Stable Diffusion模型概述 Stable Diffusion作为当前最流行的开源图像生成模型,其核心价值在于能够根据文本描述生成高质量的图像。模型的质量和风格直接影响生成结果,…...

造相Z-Image小白友好教程:无需代码基础,网页界面直接操作生成

造相Z-Image小白友好教程:无需代码基础,网页界面直接操作生成 1. 快速了解造相Z-Image 造相Z-Image是阿里通义万相团队开源的一款强大的文生图扩散模型,拥有20亿级参数规模。这个模型最大的特点就是能够生成768768及以上分辨率的高清图像&a…...

为RWKV7-1.5B-G1A开发VS Code插件:实现智能编程辅助

为RWKV7-1.5B-G1A开发VS Code插件:实现智能编程辅助 1. 引言:当AI助手遇见代码编辑器 想象一下这样的场景:你正在VS Code中编写Python代码,刚输入函数名,AI就自动补全了整个函数体;写注释描述需求后&…...

MTools新手入门指南:无需任何配置,快速上手图片抠图与视频剪辑

MTools新手入门指南:无需任何配置,快速上手图片抠图与视频剪辑 1. 为什么选择MTools作为你的第一个多媒体工具 当你第一次打开MTools时,最直观的感受可能是"这不像一个专业软件"。这正是设计者的初衷——让复杂的图片处理和视频剪…...

Janus-Pro-7B在AIGC内容创作中的惊艳效果:多风格图文生成案例集

Janus-Pro-7B在AIGC内容创作中的惊艳效果:多风格图文生成案例集 最近在折腾各种AI模型的时候,我深度体验了一把Janus-Pro-7B。说实话,一开始我对“多模态”这个词有点审美疲劳了,感觉很多模型宣传得天花乱坠,用起来却…...

明日方舟玩家解放双手的终极方案:MAA小助手完全指南

明日方舟玩家解放双手的终极方案:MAA小助手完全指南 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitco…...

终极城通网盘解析指南:3步获取高速直连地址的完整教程

终极城通网盘解析指南:3步获取高速直连地址的完整教程 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾经因为城通网盘的龟速下载而抓狂?面对那些需要等待数小时才能完成…...

DLSS Swapper终极指南:如何轻松管理游戏DLSS版本提升画质性能

DLSS Swapper终极指南:如何轻松管理游戏DLSS版本提升画质性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的开源工具,能够帮助您高效管理游戏中的DLSS、…...

WarcraftHelper:魔兽争霸3现代化体验全面升级指南

WarcraftHelper:魔兽争霸3现代化体验全面升级指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 在2026年的今天,经典游戏《魔…...

英雄联盟客户端个性化工具LeaguePrank:一站式段位显示与界面自定义解决方案

英雄联盟客户端个性化工具LeaguePrank:一站式段位显示与界面自定义解决方案 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想要在英雄联盟客户端中自由展示个性化段位、自定义生涯背景,甚至模拟特定游…...

Dify Docker Compose部署实战:解决PostgreSQL数据目录权限错误

1. 问题现象与背景分析 最近在Windows环境下用Docker Compose部署Dify时,遇到了一个典型问题:PostgreSQL容器启动失败,报错提示data directory "/var/lib/postgresql/data/pgdata" has invalid permissions。这个问题看似简单&…...

别再被“画皮不画骨”的套壳工具忽悠了!这款纯代码构建的 DrawingML 排版引擎彻底开源!

在当前 AI 办公自动化工具泛滥的时代,绝大多数产品只是在做表层的图像拼接。而 hugohe3/ppt-master 作为一个极客圈爆火的开源项目,彻底重塑了演示文档生成的底层逻辑,成为了开发者首选的 AI生成PPT神器 与 大模型原生可编辑幻灯片排版引擎。…...

5步彻底解决显卡驱动问题:Display Driver Uninstaller完全指南

5步彻底解决显卡驱动问题:Display Driver Uninstaller完全指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-unin…...

Mac新手必看:用Homebrew一键搞定Qt开发环境(含Qt Creator配置)

Mac新手必看:用Homebrew一键搞定Qt开发环境(含Qt Creator配置) 刚拿到Mac准备开发Qt应用时,面对终端命令和路径配置总让人望而生畏。作为过来人,我完全理解这种忐忑——既想快速上手,又怕操作失误导致环境崩…...

QMCDecode:3步解锁QQ音乐加密文件,让音乐真正属于你

QMCDecode:3步解锁QQ音乐加密文件,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#xf…...

3步解锁外语视频:PotPlayer实时字幕翻译插件全攻略

3步解锁外语视频:PotPlayer实时字幕翻译插件全攻略 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为看不懂外语电影、…...

魔兽争霸III兼容性终极指南:让经典游戏在现代系统上完美重生

魔兽争霸III兼容性终极指南:让经典游戏在现代系统上完美重生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在Windows …...

手把手教你用Skyline引擎实现丝滑的小程序交互动画(附左滑删除完整代码)

手把手教你用Skyline引擎实现丝滑的小程序交互动画(附左滑删除完整代码) 在移动应用开发中,流畅的动画效果是提升用户体验的关键因素。微信小程序的Skyline引擎为开发者提供了突破性的性能提升,特别适合实现复杂的手势交互和动画效…...