DataLoader de Pytorch C'est agréable d'être très facile à utiliser. Personnellement, je pensais qu'il serait plus facile d'analyser si je pouvais voir le nom du fichier qui n'a pas été classifié lorsque j'avais un problème de classification, alors je décrirai comment récupérer le nom du fichier sous forme de mémorandum.
Ce n'est pas du tout difficile, mais c'est tiré directement du Dataloader. Créez des chargeurs de données en vous référant à TRANSFER LEARNING FOR COMPUTER VISION STRUCT [1] de PyTorch.
IMAGE_SIZE=224
BATCH_SIZE=20
TRAIN = 'train'
VAL = 'val'
DATA_DIR = 'H:\\dataset/predata/' # select your dataset directory
DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
data_transforms = {
TRAIN: transforms.Compose([
transforms.Resize(IMAGE_SIZE),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
VAL: transforms.Compose([
transforms.Resize(IMAGE_SIZE),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
}
image_datasets = {x: datasets.ImageFolder(os.path.join(DATA_DIR, x), data_transforms[x]) for x in [TRAIN, VAL]}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x],
batch_size=BATCH_SIZE, shuffle=True, num_workers=4) for x in [TRAIN, VAL]}
dataset_sizes = {x: len(image_datasets[x]) for x in [TRAIN, VAL]}
class_names = image_datasets[TRAIN].classes
Extrayez le chemin des données des chargeurs de données créés.
from enum import Enum
class Dataset(Enum):
FILE_PATH = 0
LABEL = 1
# full dataset
for j in range(dataset_sizes[VAL]):
# abs path
print(dataloaders[VAL].dataset.imgs[j][Dataset.FILE_PATH.value])
# file name only
print(os.path.basename(dataloaders[VAL].dataset.imgs[j][Dataset.FILE_PATH.value]))
# there is one dataset
print(dataloaders[VAL].dataset.imgs[0][Dataset.FILE_PATH.value])
Après tout, c'est douloureux car il faut regarder directement les données classifiées s'il n'y a pas de nom de fichier. Alors pourquoi ne pas rechercher par correspondance de nom de fichier?
Recommended Posts