잡동사니 블로그
[Python] Torchvision의 ImageFolder 본문
ImageFolder는 PyTorch의 torchvision.datasets 모듈에 속한 클래스로, 이미지 데이터를 폴더 구조에 기반해 자동으로 라벨을 할당하고 데이터셋을 생성해주는 클래스
import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader, random_split
import matplotlib.pyplot as plt
#Image PreProcessing
transform = transforms.Compose([
transforms.Resize((256, 256)),
transforms.Grayscale(num_output_channels=1),
transforms.ToTensor(),
])
fail_path = '/'
dataset = datasets.ImageFolder(fail_path, transform=transform)
# Train = 0.7, Valid = 0.15, Test = 0.15
train_size = int(0.7 * len(dataset))
valid_size = int(0.15 * len(dataset))
test_size = len(dataset) - train_size - valid_size
# Split Data
train_dataset, valid_dataset, test_dataset = random_split(dataset, [train_size, valid_size, test_size])
indices = torch.randperm(len(train_dataset))[:30]
plt.figure(figsize=(15, 10))
for i, idx in enumerate(indices):
image, label = train_dataset[idx]
plt.subplot(6, 5, i + 1)
plt.imshow(image.permute(1, 2, 0))
plt.title(f"Label: {label}")
plt.axis('off')
plt.tight_layout()
plt.show()
이후에 Dataloader를 사용하여 학습 진행
'Python' 카테고리의 다른 글
[Python] Tkinter와 pyinstaller를 이용해 엑셀 자동화 프로그램 간단 배포 (0) | 2024.04.09 |
---|---|
[Python] Class imbalance -> Class weight (0) | 2024.02.19 |
[Python] Multi-label & Multi-class classification에서의 loss function in pytorch (0) | 2023.12.03 |
[Python] Multi-input model in pytorch (3) | 2023.11.27 |
[Python] 심심해서 만든 무신사 추천상품 크롤링 (1) | 2023.11.20 |