d2l banana之目标检测数据集dataset创建与加载

物体识别(香蕉) ✨✨✨希望在看文章的你今天又进步了一点点,生活更加美好!🌈🌈🌈。 阅读详情

上一节讲的cls的创建dataset还是使用的处理复制文件从而直接导入的傻瓜方法,该类方法在后期数据集特别大时会造成内存的重复读取耗时问题。且目标检测领域dataset类是避不开的,所以针对沐神的代码进行dataset从0开始搭建!

目录

1.目标检测数据集--banana

1.1描述

 1.2读取文件:

 为什么这么处理?

1.3 读取函数最终返回值

1.4 构造dataset类

1.5数据加载

1.6显示方法与plt和opencv的补充:

2.kaggle的树叶分类数据集制作

2.1文件概览

2.1文件处理

2.2加载数据集dataset与loader

2.3网络

2.4训练


1.目标检测数据集--banana

1.1描述

给的文件中,有train与val两个文件,这两个文件里面都是右边这张图所示:

 其中label里面如下图所示:第一列写着images里面的图片名称,后五列分别为图片包含目标的种类,该目标左上角x,y坐标与右下角xy坐标:

 1.2读取文件:

代码如下图所示:

data_dir = '/CV/xhr/banana-detection'

def read_data_bananas(is_train=True):
    """读取⾹蕉检测数据集中的图像和标签"""
    csv_fname = os.path.join(data_dir, 'bananas_train' if is_train
                            else 'bananas_val', 'label.csv')
    csv_data = pd.read_csv(csv_fname)
    csv_data = csv_data.set_index('img_name')
    images, targets = [], []
    for img_name, target in csv_data.iterrows():
        images.append(torchvision.io.read_image(
            os.path.join(data_dir, 'bananas_train' if is_train else
                        'bananas_val', 'images', f'{img_name}')))
        # 这⾥的target包含(类别,左上⻆x,左上⻆y,右下⻆x,右下⻆y),
        # 其中所有图像都具有相同的⾹蕉类(索引为0)
        targets.append(list(target))
    return images, torch.tensor(targets).unsqueeze(1) / 256

 关于里面的set_index('image_name'),其是配套后面的for loop里面的.iterrows使用的,set_index表示讲img_name这一列的元素替换掉原始的索引列,如下图所示:使用该命令前:

 使用该命令后:可以看到原先索引标号0.1.2...替换成了img_name列中的各个元素。

 为什么这么处理?

因为要有for loop里面的.iterrows()操作,该操作返回的两个值分别为每一行的索引与每一行剩下的元素:其中这个剩下的多个元素是pandas的Series数据结构,可以用list换成列表。

在注意里面这个torchvision.io.read_image(path)操作是将path中的图片(支持JPEG,PNG,BMP,GIF,TIFF等)从磁盘上读取并转换成tensor张量,输出为(C,H,W)

1.3 读取函数最终返回值

让我们看一下这个函数最终返回的是啥:

 这里让a等于后面这一长串,返回的images是一个有1000个元素的list(一共有1000张图片),其中的每一个元素为一个tensor的图片(C,H,W),另一个值a是一个tensor(1000, m, 5),这里的m表示一张图设有几个目标物体,这里每张图都只有一个,所以m设为1.

1.4 构造dataset类

  注意,这里面的__getitem__()最后索引的features[idx]与labels[idx]就是1.3那一张图里面对应的东西,即返回的是每一张idx对应的图片的(c,h,w).float与该图片对应的标注(m, 5)。

class BananasDataset(torch.utils.data.Dataset):
    """⼀个⽤于加载⾹蕉检测数据集的⾃定义数据集"""
    def __init__(self, is_train):
        self.features, self.labe
【Pytorch】加载本地FashionMNIST数据文件 解决d2l.load_data_fashion_mnist()下载慢问题; 附FashionMNIST数据集资源; 阅读详情

相关推荐

垃圾分类数据集解压后如何快速验证与标准化

图像分类数据集是计算机视觉任务的基础输入,其组织结构、标注质量和格式兼容性直接决定模型训练成败。理解数据集目录契约(如ImageFolder要求的类子目录结构)、掌握元数据探查方法(如unzip -l和file命令)、识别常见格式陷阱(JPEG2000/CMYK/截断图)是工程落地前提。技术价值在于规避‘0 classes’报错、显存溢出、标注混淆等高频故障,支撑环保AI、智能回收终端、城市治理平台等实际场景的快速迭代。本文聚焦垃圾分类这一典型多类别图像任务,提供从解压校验、结构识别到PyTorch/Ten

weixin_34355559的博客 348

YOLOv9火焰检测实战:从训练到部署的闭环交付方案

目标检测是计算机视觉的基础任务,其核心在于模型对特定类别的定位与分类能力。YOLO系列作为单阶段检测器的代表,以速度与精度平衡著称,而YOLOv9进一步通过RepConv等结构优化提升了小目标和低对比度场景下的鲁棒性。在工业安全、智能监控等实际应用中,火焰识别尤为关键——它不仅要求高mAP指标,更需可复现的训练流程、严格的YOLO格式数据校验、GPU显存可控的训练配置,以及轻量级推理封装能力。本文聚焦于YOLOv9-s在火焰检测任务中的工程化落地,覆盖conda环境隔离、标签格式三重校验、batch-siz

weixin_34289454的博客 326

工业级水果识别系统:从数据清洗到树莓派部署全流程

水果识别是计算机视觉中典型的轻量目标检测任务,其核心在于解决真实场景下的光照变化、小目标、遮挡及边缘设备部署等工程挑战。技术原理上需融合图像预处理、YOLO系列模型选型、ONNX量化与TensorRT加速、OpenCV DNN推理优化等关键技术链。其技术价值体现在端侧低延迟(<32ms)、高鲁棒性(抗反光/堆叠/低照度)和全本地化(无云依赖)。典型应用场景包括智能农业分拣、超市自助结算、高职实训平台等。本文聚焦PyTorch+OpenCV+YOLOv8n在树莓派上的工业闭环实现,覆盖数据清洗、标注校验、分层

ciya3282的博客 364

banana数据集

banana数据集

深度学习 香蕉数据集(带标注)YOLO和VOC格式 3000张图片

香蕉数据集(带标注)YOLO和VOC格式 3000张图片

SAP 财务快速记账之—G/L Item Fast Entry

SAP FICO 运维解决方案

lijinbao171022的博客 1646

SoIC、CoWoS、InFO一次讲透:从2D/2.5D/3D看懂先进封装

先进封装是后摩尔时代提升芯片性能的关键路径,但面对SoIC、CoWoS、InFO这些名词,很多人容易混淆。理解它们,需从最基本的2D、2.5D、3D封装概念入手:2D是传统平房,2.5D通过硅中介层实现高密度互连,3D则让芯片直接堆叠。CoWoS作为2.5D中介层封装,已成为AI芯片与HBM高带宽存储集成的行业标准;SoIC通过铜-铜混合键合实现真正的3D堆叠,为逻辑与缓存提供极致带宽;InFO以扇出型封装兼顾成本与集成度,广泛用于移动SoC。在系统级封装(SiP)和CPO共封装光学等前沿趋势中,这些技术往

weixin_42388898的博客 309

通信原理期末考试试题及答案

五、(总分12分)设某信道具有均匀的的双边噪声功率谱密度在该信道中传输抑制载波的单边带(上边带)信号,并设调制信号m(t)的频带限制在5K HZ,而载波为100 K HZ,已调信号的功率为10KW。:(1)单边带信号的载频为100kHz,带宽B=5kHz,为使信号顺利通过,理想带通滤波器的中心频率为。8、对最高频率为fH的调制信号m(t)分别进行AM、DSB、SSB调制,相应已调信号的带宽分别为。7、设调制信号为f(t)载波为,则抑制载波双边带调幅信号的时域表达式为,频域表达式为。

qq_67692062的博客 2392

QT | QT打包生成单个EXE文件

1.以release方式运行程序 2.在release文件夹中找到.exe文件 如果没有找到exe,可能是因为在项目中勾选了shadow build,你可以在构建目录中找到exe 3.将exe放在一个新建的文件夹中,因为待会儿会生成很多dll文件 4.点击电脑左下角搜索QT,打开Qt 5.8 for Desktop (MinGQW 5.3.0 32bit) 5.进入刚刚新建的文件夹,输入wi...

⊳ideal world⊲~ヽ(゚︺゚)Hi 1237

ElementUI时间选择器(el-date-picker)输入格式的智能转换与动态适配

本文深入探讨了ElementUI时间选择器(el-date-picker)在处理用户自由格式输入时的痛点,并提出了基于Vue自定义指令的智能转换解决方案。该方案通过核心解析函数自动识别如“20231225”等连续数字输入,将其动态转换为标准时间格式,并确保与表单验证兼容,有效提升了后台管理系统的输入效率和用户体验。

weixin_29016833的博客 293

Python自动化神器:OP插件64位版从安装到实战(附雷电模拟器截图技巧)

本文详细介绍了Python自动化神器OP插件64位版的安装与实战应用,包括环境搭建、窗口控制、鼠标键盘模拟等核心功能。特别针对雷电模拟器提供了最小化截图技术和OCR识别优化方案,帮助开发者高效实现Windows自动化任务。

weixin_29094539的博客 330

Inception-Resnet-v1、Inception-Resnet-v2学习笔记(附Pytorch代码)_inception-resnet-v1 代码

Reduction-B模块:输入8*8*1792,输出8*8*1792.IR-B模块*10:输入17*17*896,输出17*17*896.IR-A模块*5:输入35*35*256,输出35*35*256.IR-A模块*5:输入35*35*384,输出35*35*256.IR-B模块*10:输入17*17*896,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.

2401_89285791的博客 470

RuntimeError: The current installed version of g++ (4.8.5) is less than the mininum version CUDA解决方案

本文主要介绍了RuntimeError: The current installed version of g++ (4.8.5) is less than the mininum version CUDA解决方案,希望能对学习python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: d2l第13章的两个kaggle,以及该章的aug,finetune,cls的dataset处理
下一篇: 解决: RuntimeError: CUDA error: device-side assert triggered CUDA kernel errors might be
我想吃鱼了,
博客等级 码龄5年 62粉丝 49原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值