Hi,
I have gone through almost all the articles for performing the said activity, even used the collate_fn
and custom collate functions, but could not make it work. I was wondering if someone can help, it would be a life saver.
My directory structure is something like -
root /
|_ABCD/
|_ ABCD_1.jpg
|_ ABCD_2.jpg
|_EFGH/
|_EFGH_1.jpg
|_EFGH_2.jpg
|_EFGH_3.jpg
Labels are mentioned in the following way -
ABCD | Basketball
EFGH | Football
My code for loading data is -
# for CRNN
class Dataset_CRNN(data.Dataset):
"Characterizes a dataset for PyTorch"
def __init__(self, data_path, folders, labels, frames, transform=None):
"Initialization"
self.data_path = data_path
self.labels = labels
self.folders = folders
self.transform = transform
self.frames = frames
def __len__(self):
"Denotes the total number of samples"
return len(self.folders)
def read_images(self, path, selected_folder, use_transform):
X = []
for i in self.frames:
image = Image.open(os.path.join(os.path.join(path, selected_folder, '{}_{}.jpg'.format(selected_folder,i))))
if use_transform is not None:
image = use_transform(image)
X.append(image)
X = torch.stack(X, dim=0)
return X
def __getitem__(self, index):
"Generates one sample of data"
# Select sample
folder = self.folders[index]
# Load data
X = self.read_images(self.data_path, folder, self.transform) # (input) spatial images
y = torch.LongTensor([self.labels[index]]) # (labels) LongTensor are for int64 instead of FloatTensor
# print(X.shape)
return X, y