我正在使用线圈 100 数据集,该数据集包含 100 个对象的图像,每个对象 72 个图像,通过将对象每个图像旋转 5 度从固定相机拍摄。以下是我正在使用的文件夹结构:
数据/火车/obj1/obj01_0.png,obj01_5.png ... obj01_355.png
。
.
数据/火车/obj85/obj85_0.png,obj85_5.png ... obj85_355.png
。
.
数据/测试/obj86/obj86_0.ong, obj86_5.png ... obj86_355.png
。
.
数据/测试/obj100/obj100_0.ong, obj100_5.png ... obj100_355.png
我使用了 imageloader 和 dataloader 类。训练和测试数据集正确加载,我可以打印类名。
train_path = 'data/train/'
test_path = 'data/test/'
data_transforms = {
transforms.Compose([
transforms.Resize(224, 224),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
}
train_data = torchvision.datasets.ImageFolder(
root=train_path,
transform= data_transforms
)
test_data = torchvision.datasets.ImageFolder(
root = test_path,
transform = data_transforms
)
train_loader = torch.utils.data.DataLoader(
train_data,
batch_size=None,
num_workers=1,
shuffle=False
)
test_loader = torch.utils.data.DataLoader(
test_data,
batch_size=None,
num_workers=1,
shuffle=False
)
print(len(train_data))
print(len(test_data))
classes = train_data.class_to_idx
print("detected classes: ", classes)
在我的模型中,我希望通过预训练的 resnet 传递每张图像,并从 resnet 的输出中制作一个数据集以馈送到双向 LSTM。为此,我需要通过类名和索引访问图像。例如。pre_resnet_train_data['obj01'][0]
应该是obj01_0.png
并且post_resnet_train_data['obj01'][0]
应该是等的resnet输出obj01_0.png
。
我是 Pytorch 的初学者,在过去的两天里,我阅读了许多关于创建自定义数据集类的教程和 stackoverflow 问题,但不知道如何实现我想要的。请帮忙!