Python 如何将标签链接到图片,并将其输入Pytorch的培训功能中?
我正在尝试建立一个分类器,对手语手势图像进行分类。具有子文件夹的文件夹,如下所示 1) 训练 2) 验证 3) 试验 每个子文件夹都有名为A到I的文件夹。这些文件夹名称是这些文件夹中图片的标签 我真的不确定如何将这些标签链接到图片并将其输入模型中 大多数Pytorch在线文档使用内置数据集,对于这个领域的新手来说,很难理解幕后发生了什么。我读过关于数据加载器、数据集和ImageFolder的文章。我最近才开始深入学习,在机器学习中,使用内置函数和pandas列分割数据很容易,而不像图片那样容易 我所能做的只是这两个功能,但不确定如何继续: 第一个功能是加载训练图片Python 如何将标签链接到图片,并将其输入Pytorch的培训功能中?,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,我正在尝试建立一个分类器,对手语手势图像进行分类。具有子文件夹的文件夹,如下所示 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()
至于我,我喜欢为自己编写dataloader,因为定制我真正想要的数据加载过程很容易 这是我之前编写的一个数据加载器,用于将单独的
.npy
文件作为train/eval数据加载到内存中。
在这段代码中,我首先需要准备train/eval索引,我将把索引文件保存为
.npy
文件,并将它们加载到\uuuu init\uuuuuu()
,然后,无论您在培训或评估中,都可以对\uuu getitem\uuuuuuu
方法进行相同的处理,因为您已经创建了特定的索引。有关更多信息,请查看代码,希望您最终能找到。您可以查看PyTorch的ImageFolder。它使用存储在单独文件夹中的每个类加载数据集。看看这个