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

Dataset类代码实战

实战一 

label即是文件夹名

 

from torch.utils.data import Dataset, DataLoader
import cv2
from PIL import Image
import os
class MyDataset(Dataset):def __init__(self,root_dir,label_dir):self.root_dir = root_dir  #根目录self.label_dir = label_dir  #两个数据目录,目录名即为label值self.path=os.path.join(self.root_dir,self.label_dir) # 通过拼接,得到目标目录self.img_path=os.listdir(self.path)#将这个目录转化为list列表,值为每个图片文件的文件名def __getitem__(self, index):img_name=self.img_path[index]img_item_path=os.path.join(self.root_dir,self.label_dir,img_name)img=Image.open(img_item_path)label=self.label_dirreturn img,labeldef __len__(self):return len(self.img_path)root_dair="dataset/train"
ants_label_dair="ants"
bees_label_dair="bees"
ants_dataset = MyDataset(root_dair,ants_label_dair)
bees_dataset = MyDataset(root_dair,bees_label_dair)train_dataset = ants_dataset+bees_dataset # 数据集拼接

实战二

label单独存放在一个文件里 

 

from torch.utils.data import Dataset
from PIL import Image
import osclass MyDataset(Dataset):def __init__(self, root_dir, image_dir, label_dir):# 数据集根目录路径self.root_dir = root_dir# 图像文件夹名称self.image_dir = image_dir# 标签文件夹名称self.label_dir = label_dir# 拼接图像文件夹完整路径self.image_path = os.path.join(self.root_dir, self.image_dir)# 拼接标签文件夹完整路径self.label_path = os.path.join(self.root_dir, self.label_dir)# 获取图像文件列表self.image_names = os.listdir(self.image_path)# 获取标签文件列表self.label_names = os.listdir(self.label_path)def __getitem__(self, index):# 获取指定索引的图像文件名img_name = self.image_names[index]# 拼接图像完整路径img_item_path = os.path.join(self.root_dir, self.image_dir, img_name)# 打开并读取图像img = Image.open(img_item_path)# 获取对应索引的标签文件名label_name = self.label_names[index]# 拼接标签完整路径label_item_path = os.path.join(self.root_dir, self.label_dir, label_name)# 打开并读取标签文件内容(通常为类别名或ID)with open(label_item_path, 'r') as f:label = f.read().strip()# 返回图像和标签元组return img, labeldef __len__(self):# 返回数据集样本总数return len(self.image_names)# 数据集配置
root_dir = "dataset_practice/train"  # 训练集根目录
ants_img_dir = "ants_image"  # 蚂蚁图像文件夹
ants_label_dir = "ants_label"  # 蚂蚁标签文件夹
bees_img_dir = "bees_image"  # 蜜蜂图像文件夹
bees_label_dir = "bees_label"  # 蜜蜂标签文件夹# 创建蚂蚁和蜜蜂数据集实例
ants_dataset = MyDataset(root_dir, ants_img_dir, ants_label_dir)
bees_dataset = MyDataset(root_dir, bees_img_dir, bees_label_dir)

 

http://www.dtcms.com/a/276162.html

相关文章:

  • 【LeetCode 热题 100】25. K 个一组翻转链表——迭代+哨兵
  • Spring AOP 是如何生效的(入口源码级解析)?
  • SpringBootloggers未授权访问漏洞处理
  • Flink创建执行环境的三种方式,也是Flink搭建程序的第一步
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
  • WebSocket:构建实时交互的 Web 应用
  • C# VB.NET多进程-管道通信,命名管道(Named Pipes)
  • C语言结构体
  • C++---<cctype>
  • 2025科大讯飞AI大赛<大模型技术方向>(Datawhale AI 夏令营)
  • 解决bash终端的路径名称乱码问题
  • Redis渗透思路总结
  • Theo Mandel的用户界面设计三大黄金规则
  • 新手向:使用Python自动化清理指定目录中的临时文件
  • 脉冲神经网络膜电位泄漏系数学习:开启时空动态特征提取的新篇章
  • 实验一 接苹果
  • 配置驱动开发:初探零代码构建嵌入式软件配置工具
  • Windows 用户账户控制(UAC)绕过漏洞
  • 时序分解 | Matlab基于GWO-FMD基于灰狼算法优化特征模态分解-2025-7-12
  • 实现Service和UI通信,并且能够手动回收的解决方案——共享ViewModel
  • 卫星通信终端天线的5种对星模式之二:DVB跟踪
  • C++类模板继承部分知识及测试代码
  • Final
  • 剑指offer——树:二叉树的深度
  • 【C++小白逆袭】内存管理从崩溃到精通的秘籍
  • JVM 中“对象存活判定方法”全面解析
  • JVM的垃圾回收算法和多种GC算法
  • Git 相关的常见面试题及参考答案
  • 人工智能安全基础复习用:可解释性