File size: 1,341 Bytes
c70c475 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import os
import numpy as np
import torch
import torchvision.datasets as datasets
class ImageFolderWithFilename(datasets.ImageFolder):
def __getitem__(self, index: int):
"""
Args:
index (int): Index
Returns:
tuple: (sample, target, filename).
"""
path, target = self.samples[index]
sample = self.loader(path)
if self.transform is not None:
sample = self.transform(sample)
if self.target_transform is not None:
target = self.target_transform(target)
filename = path.split(os.path.sep)[-2:]
filename = os.path.join(*filename)
return sample, target, filename
class CachedFolder(datasets.DatasetFolder):
def __init__(
self,
root: str,
):
super().__init__(
root,
loader=None,
extensions=(".npz",),
)
def __getitem__(self, index: int):
"""
Args:
index (int): Index
Returns:
tuple: (moments, target).
"""
path, target = self.samples[index]
data = np.load(path)
if torch.rand(1) < 0.5: # randomly hflip
moments = data['moments']
else:
moments = data['moments_flip']
return moments, target
|