I have two separate datasets. Each set has 3224 224 images. I want to input those datasets into a network as a 6 channel input. Both datasets have the same labels. I want to use Imagefolder for this.
trainset_cort = torchvision.datasets.ImageFolder(root=data_dir_train_cort,
transform=transform)
trainset_slice = torchvision.datasets.ImageFolder(root=data_dir_train_slice,
transform=transform)
trainloader= torch.utils.data.DataLoader(trainset_new
,
batch_size=4,shuffle=True, num_workers=2)
testset_cort = torchvision.datasets.ImageFolder(root=data_dir_val_cort,
transform=transform)
testset_slice = torchvision.datasets.ImageFolder(root=data_dir_val_slice,
transform=transform)
testloader= torch.utils.data.DataLoader(testset_new
, batch_size=4,shuffle=True, num_workers=2)
I’m trying above code. i want to create both trainset_new and testset_new as 6 by 224 by 224 imageset
You could create your own Dataset
and concatenate both images:
class MyDataset(Dataset):
def __init__(self, path_cort, path_slice, transform=None):
self.data_cort = datasets.ImageFolder(
root=path_cort, transform=transform)
self.data_slice = datasets.ImageFolder(
root=path_slice, transform=transform)
def __getitem__(self, index):
x_cort, y = self.data_cort[index]
x_slice, _ = self.data_slice[index]
x = torch.cat((x_cort, x_slice), dim=1)
return x, y
def __len__(self):
return len(self.data_cort) # assert both datasets have equal length
Thank you. I’ll try this method.
using this I get the error as:
module.__init__() takes at most 2 arguments (3 given)
I am using google colab for this and the code I ran is this:
import torch
import torch.nn as nn
import torch.optim as optim
from torch.optim import lr_scheduler
import numpy as np
import torchvision
from torchvision import datasets, models, transforms
import matplotlib.pyplot as plt
import time
import os
import copy
class CustomDataset(datasets):
def __init__(self, path_cort, path_slice, transform):
self.data_cort = datasets.ImageFolder(
root=path_cort, transform=transform)
self.data_slice = datasets.ImageFolder(
root=path_slice, transform=transform)
def __getitem__(self, index):
x_cort, y = self.data_cort[index]
x_slice, _ = self.data_slice[index]
x = torch.cat((x_cort, x_slice), dim=1)
return x, y
def __len__(self):
return len(self.data_cort) # assert both datasets have equal length
root = "/content/drive/MyDrive/Rohit/Human Pose Estimation/UTD MHAD/"
transform = transforms.Compose([
transforms.Resize((224,224)),
transforms.ToTensor(),
transforms.Normalize(mean, std)
])
Dataset = CustomDataset(root+"angle/train", root+"anglevel/train", transform)
num_classes = 27
Inside the respective train folders, each class has several images.
Hope you will help me out, thanks in advance
ptrblck
December 8, 2020, 12:12am
5
Could you device the CustomDataset
from torch.utils.data.Dataset
instead of torchvision.datasets
and check, if it would solve the issue?