Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 使用PyTorch加载自定义图像数据集_Image Processing_Dataset_Pytorch_Dataloader - Fatal编程技术网

Image processing 使用PyTorch加载自定义图像数据集

Image processing 使用PyTorch加载自定义图像数据集,image-processing,dataset,pytorch,dataloader,Image Processing,Dataset,Pytorch,Dataloader,我使用的是coil-100数据集,它有100个对象的图像,每个对象72个图像,通过将对象旋转5度,从一个固定的摄像机拍摄。以下是我正在使用的文件夹结构: 数据/列车/obj1/obj01_0.png,obj01_5.png。。。obj01_355.png . . 数据/列车/obj85/obj85_0.png,obj85_5.png。。。obj85_355.png . . data/test/obj86/obj86_0.ong,obj86_5.png。。。obj86_355.png . . 数据

我使用的是coil-100数据集,它有100个对象的图像,每个对象72个图像,通过将对象旋转5度,从一个固定的摄像机拍摄。以下是我正在使用的文件夹结构:

数据/列车/obj1/obj01_0.png,obj01_5.png。。。obj01_355.png
.
.
数据/列车/obj85/obj85_0.png,obj85_5.png。。。obj85_355.png
.
.
data/test/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\u resnet\u train\u data['obj01'][0]
应该是
obj01\u 0.png
post\u resnet\u train\u data['obj01'][0]
应该是
obj01\u 0.png
的resnet输出,以此类推。
我是Pytorch的初学者,在过去的两天里,我读了很多关于创建自定义dataset类的教程和stackoverflow问题,但我不知道如何实现我想要的。
请帮忙

假设您只计划在图像上运行一次“重新发送”,并保存输出供以后使用,我建议您自己编写,派生自。
将每个resnet输出保存在与图像文件相同的位置,扩展名为
.pth

class MyDataset(torchvision.datasets.ImageFolder):
定义初始化(自、根、变换):
超级(MyDataset,self)。\uuuuu初始化\uuuuu(根,转换)
定义uu获取项目uu(自身,索引):
#重写ImageFolder的方法
"""
Args:
索引(int):索引
返回:
tuple:(sample,resnet,target),其中target是目标类的class_索引。
"""
路径,目标=self.samples[索引]
sample=self.loader(路径)
如果self.transform不是None:
示例=自转换(示例)
如果self.target_transform不是无:
目标=自我。目标\转换(目标)
#这是您加载resnet数据的地方
resnet_path=os.path.join(os.path.splitext(path)[0],'.pth')#将映像扩展名替换为.pth
resnet=torch.load(resnet_路径)#加载存储的功能
返回样本、resnet、目标