我正在尝试建立一个对手语手势图像进行分类的分类器。具有带有子文件夹的文件夹,如下所示 1)火车 2)验证 3)测试
每个子文件夹都有名为A到I的文件夹。这些文件夹名称是这些文件夹中图片的标签。
我不确定如何将这些标签链接到图片并将其输入模型。
大多数Pytorch在线文档使用内置的数据集,对于该领域的新手来说,很难理解幕后发生的事情。我已经阅读了有关数据加载器,数据集,ImageFolder的信息。我最近才开始深度学习,并且使用内置函数和pandas列在机器学习中拆分数据非常容易,而对于图片则不是如此。
我能做的就是那两个功能,但不确定如何从那里继续:
第一个功能是加载训练图片
data_path = 'C:/Users/.../Train/'
train_dataset = torchvision.datasets.ImageFolder(
root=data_path,
transform=torchvision.transforms.ToTensor()
)
train_loader = torch.utils.data.DataLoader(
train_dataset,
batch_size=10,
num_workers=0,
shuffle=True
)
return train_loader
第二个功能是从一个特定文件夹中的图片名称中提取标签,文件名具有uselessinfo_letter_uselessnumbers的约定
import os
data_path = r"C:\Users...\small_sample"
labels = []
for img_filename in os.listdir(data_path):
if img_filename.endswith(".jpg"):
useless1, letter, useless2 = img_filename.split('.')[0].split('_')
labels.append(letter)
我正在寻找一个train_loader,我想train_loader将同时具有图片的张量格式及其标签。
输入
for i, data in enumerate(train_loader, 0):
# Get the inputs
inputs, labels = data
labels = normalize_label(labels) # Convert labels to 0/1
# Zero the parameter gradients
optimizer.zero_grad()
# Forward pass, backward pass, and optimize
outputs = net(inputs)
loss = criterion(outputs, labels.float())
loss.backward()
optimizer.step()
答案 0 :(得分:0)
对于我来说,我喜欢为自己编写数据加载器,因为很容易自定义真正想要的数据加载过程。
这是我之前写的一个数据加载器,用于将分离的.npy
文件作为火车/评估数据加载到内存中。
https://github.com/FesianXu/SkeletonGCN/blob/master/feeder/ntu_feeder.py
在此代码中,我首先需要准备火车/评估索引,将索引文件另存为.npy
文件,然后将其加载到__init__()
中,然后再将{{1} }方法无论您是在接受培训还是在评估中,都可以被视为相同,因为您已经制定了特定的索引。有关更多信息,请检查代码,并希望您最终能找到答案。