python - 使用 Pytorch 加载巨大的图像数据集和一些数据增强
问题描述
我有个问题。我有大约 200 万张图像(place365 标准数据集),我想做一些数据增强,比如转换、裁剪等。此外,我必须根据一些颜色模型算法(CMYK)制作自己的目标图像(y)例如.
所以实际上,我的预处理步骤包括增强和制作 terget 图像 (y)。然后我应该将这些图像提供给深度网络。我应该什么时候根据Dataset
班级进行此操作?我应该做我的处理步骤__getitem__()
吗?如果是,它会并行且快速吗?
这是我的Dataset(data.Dataset)
课程模板:
import torch
from torch.utils import data
class Dataset(data.Dataset):
"""
Return Dataset class representing our data set
"""
def __int__(self, list_IDs, labels):
"""
Initialize data set as a list of IDs corresponding to each item of data set and labels of each data
Args:
list_IDs: a list of IDs for each data point in data set
labels: label of an item in data set with respect to the ID
"""
self.labels = labels
self.list_IDs = list_IDs
def __len__(self):
"""
Return the length of data set using list of IDs
:return: number of samples in data set
"""
return len(self.list_IDs)
def __getitem__(self, item):
"""
Generate one item of data set. Here we apply our preprocessing things like halftone styles and subtractive color process using CMYK color model etc. (See the paper for operations)
:param item: index of item in IDs list
:return: a sample of data
"""
ID = self.list_IDs[item]
# Code to load data
X = None #
# code to apply your custom function to make y image (time consuming task - some algorithms)
y = None #
return X, y
感谢您的任何建议
此致
解决方案
如果您查看例如,torchvision.dataset.ImageFolder
您会发现它的工作方式与您的设计非常相似:该类具有transform
列出各种增强(调整大小、裁剪、翻转等)的成员,并且这些是在__getitem__
方法中的图像上执行的。
关于并行性,它Dataset
本身不是并行的,但DataLoader
可以是(见num_workers
参数),所以如果你在并行数据加载器中使用你的数据集,你就可以免费获得并行性,太酷了!
推荐阅读
- boolean-logic - 我不明白这个硬件布尔逻辑
- javascript - 如何在我的笑话测试中使用外部库
- javascript - 在 iOS 中后台加载。本机脚本
- python - python中的字典分离
- sql - sql中的更新触发器
- javascript - 在Javascript中按类捕获所有输入
- python - 递归地将单链表转换为整数列表
- unity3d - 网格对撞机不跟随身体
- swift - SwiftUI CS193P - 不能在属性初始化程序中使用实例成员“卡片”;属性初始化程序在“自我”可用之前运行
- networking - 使用 NetworkManager 设置 OpenThread OTBR 无法设置 AP;bind9.service 无法运行