clothing1m数据集使用

news/2024/10/6 6:01:49/文章来源:https://www.cnblogs.com/zh-jp/p/18442951

简介

Clothing1M 包含 14 个类别的 100 万张服装图像。这是一个带有噪声标签的数据集,因为数据是从多个在线购物网站收集的,并且包含许多错误标记的样本。该数据集还分别包含 50k、14k 和 10k 张带有干净标签的图像,用于训练、验证和测试。

下载地址:https://github.com/Newbeeer/L_DMI/issues/8

Dataset & DataLoader

数据集目录结构:

└─images├─0│  ├─00│  ├─...│  └─99├─...└─9├─00├─...└─99
import osfrom PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision.transforms import transforms# mode=0: noisy train set, mode=1: clean val set, mode=2: clean test set
class Clothing1m(Dataset):nb_classes = 14def __init__(self, mode=0, root='~/data/clothing1m', transform=None):root = os.path.expanduser(root)self.mode = modeself.root = rootself.transform = transformif mode == 0:txt_file = 'noisy_label_kv.txt'else:txt_file = 'clean_label_kv.txt'with open(os.path.join(root, txt_file), 'r') as f:lines = f.read().splitlines()self.labels = {line.split()[0]: int(line.split()[1]) for line in lines}data_path = []txt_file = ['noisy_train_key_list.txt', 'clean_val_key_list.txt', 'clean_test_key_list.txt']if mode in [0, 1, 2]:with open(os.path.join(root, txt_file[mode]), 'r') as f:lines = f.read().splitlines()for line in lines:data_path.append(line)else:raise ValueError('mode should be 0, 1 or 2')self.data = data_pathself.targets = [self.labels[img_path] for img_path in data_path]def __len__(self):return len(self.targets)def __getitem__(self, index):img_path = self.data[index]targets = self.labels[img_path]image = Image.open(os.path.join(self.root, img_path)).convert('RGB')image = self.transform(image)if self.mode == 0:return image, targets, indexreturn image, targetsclass Clothing1mDataloader:def __init__(self, batch_size=64, num_workers=8, root='~/data/clothing1m'):self.batch_size = batch_sizeself.num_workers = num_workersself.root = rootself.transform_train = transforms.Compose([transforms.Resize(256),transforms.RandomCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize((0.6959, 0.6537, 0.6371), (0.3113, 0.3192, 0.3214)),])self.transform_test = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize((0.6959, 0.6537, 0.6371), (0.3113, 0.3192, 0.3214)),])def train(self):transform = self.transform_traindataset = Clothing1m(mode=0, root=self.root, transform=transform)dataloader = DataLoader(dataset, batch_size=self.batch_size, shuffle=True,num_workers=self.num_workers, pin_memory=True)return dataloaderdef val(self):dataset = Clothing1m(mode=1, root=self.root, transform=self.transform_test)dataloader = DataLoader(dataset, batch_size=self.batch_size, shuffle=False,num_workers=self.num_workers, pin_memory=True)return dataloaderdef test(self):dataset = Clothing1m(mode=2, root=self.root, transform=self.transform_test)dataloader = DataLoader(dataset, batch_size=self.batch_size, shuffle=False,num_workers=self.num_workers, pin_memory=True)return dataloader

依赖

torch                              2.3.1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/806637.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows10如何安装jdk8,并且配置java home环境?超详细!

前言 大家好,我是小徐啊。记得我刚学习Java的时候,我的老师第一步就是教我们如何安装jdk并且配置java环境。这应该算是学习Java的第一步吧。虽然这个安装过程对我来说已经不是非常难了,但是我知道,对于一些刚入门的小伙伴还是经常容易搞错的,所以,今天小徐就写一篇详细的…

安装小雅问题

如何卸载重装小雅、apt remove xiaoya docker stop 01ec8396b2c529819bb7c95091a88a9af6999c042bcb7ab57662837c97dca5cd docker rm 01ec8396b2c529819bb7c95091a88a9af6999c042bcb7ab57662837c97dca5cdsystemctl start cpolar 开启cplpr systemctl status cpolar

leetcode24 两两交换链表中的节点(swap-nodes-in-pairs)

题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1:输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2: 输入:head = [] 输出:[]示例 3: 输入:head = [1] 输出:[…

第一章:Borel测度

第1章 Borel测度 在正式讨论我们的内容之前我们先做几点说明 1.我们只讨论\(\mathbb{R}^n\) 上的测度,因此如果不作特别说明,我们均认为测度和集合为于\(\mathbb{R}^n\) 中: 2.我们不特别区分外测度和测度,因为将外测度限制在可测集上就是可测集上的测度: 3.我们默认读者已…

TypeScript在vue中的使用-----事件类型的获取

当我们要对事件定义类型。一种是通过console.log(e)来看事件的类型。另外一种是@事件名的时候,将$event写好,鼠标放上去看事件类型。再讲$event删除。 如下: 然后我们定义函数的时候就可以指定事件类型了const clickMi = (e:MouseEvent)=>{console.log(e.pageX, e.pageY…

信息学奥赛复赛复习08-CSP-J2020-03表达式前置知识点-后缀表达式、栈、字符读取

PDF文档公众号回复关键字:202410011 P1449 后缀表达式 [题目描述] 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级) 本题中运算符仅包含 + - * / 。保证…

IDEA如何查看已经安装的插件并删除

前言 我们在使用IDEA开发时,经常需要安装一些插件来帮助我们高效快速的处理问题,可以说很实用。 不过有时候,我们不想使用某个插件了,或者某个插件突然不好用了,想要先删除下再安装,那么我们应该怎么删除我们已经安装的插件呢? 如何删除插件 首先,我们点击【File】->…

python中列表和字符串的相互转换

001、列表转换为字符串>>> list1 [xxx, yyy, zzz] >>> "".join(list1) ## 使用字符串内置函数join + 可迭代对象 xxxyyyzzz >>> "_".join(list1) xxx_yyy_zzz 002、字符串转换为列表>>> str1 = &qu…

Cookie,Session与Token

参考资料 水平有限,欢迎交流!仅做学习交流使用 一定要看,非常透彻!【Cookie、Session、Token究竟区别在哪?如何进行身份认证,保持用户登录状态?】 黑马jwt详解 Javaweb程序设计与项目案例 郭煦 直接上结论 共同点 Cookie,Session与Token 三者都实现了 Http 无状态这一特…

A. 2025--[炼石计划--NOIP模拟三]--T1--矩形

赛时草了个 \(O(n^4 \log (n))\) 竟然能过 70 分虽然本来就是这么分配的,发现正解只需将二分改为双指针就可以了,最气的是上面计算的时候用到还是尺取下面就用的二分(唐诗)。 其实这题就是暴力,然后在低级的暴力上加一些操作变得稍微高级一点。 计算的话直接暴力查找不同颜…

深度学习(UNet)

和FCN类似,UNet是另一个做语义分割的网络,网络从输入到输出中间呈一个U型而得名。 相比于FCN,UNet增加了更多的中间连接,能够更好处理不同尺度上的特征。 网络结构如下:下面代码是用UNet对VOC数据集做的语义分割。import torch import torch.nn as nn import torch.optim …

【防忘笔记】测试过程与技术

测试人员应该想些什么 我自己是做后端的,对于模棱两可的需求和莫名其妙的测试case是深恶痛绝的,所以有时候我就会想测试人员应该会需要注意什么?以他们的角度,他们更在乎什么 最近有机会了解相关的知识,遂整理记录一下,以便之后在工作中更好的理解发生的各种事情 以客户为…