- Image 간의 사이즈 조절, Noramlization, 텐서화 등 전처리를 한번에 적용해 줄 수 있는 torchvision.transforms 를 활용할 수 있음.
- transforms 코드 예시
from torchvision import transforms
image_transform = transforms.Compose([
transforms.Resize([512, 512]),
transforms.ToTensor(),
transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))
])
- transforms 코드 적용 (Dataset Class)
import torch
from torch.utils.data import Dataset, DataLoader
class ImageDataset(Dataset):
'''
dataset class overloads the __init__, __len__, __getitem__ methods of the Dataset class.
Parameters :
df: DataFrame object for the csv file.
data_path: Location of the dataset.
image_transform: Transformations to apply to the image.
train: A boolean indicating whether it is a training_set or not.
'''
def __init__(self,df, data_path, image_transform=True, train=True):
super(Dataset, self).__init__()
self.df = df
self.data_path = data_path
self.image_transform = image_transform
self.train = train
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
image_id = self.df['id_code'][idx]
image = Image.open(f"{self.data_path}")
if self.image_transform:
image = self.image_transform(image) # Applies transformation to the image.
if self.train: # train mode
label = self.df['diagnosis'][idx]
return image, label
else: # eval mode
return image
- transform 적용
data_set = dataset(train_df,f'{path}train_images',image_transform=image_transform)
- transform methods
- ToPILImage() - csv 파일로 데이터셋을 받을 경우, PIL image로 바꿔준다.
- CenterCrop(size) - 가운데 부분을 size 크기로 자른다.
- Grayscale(num_output_channels=1) - grayscale로 변환한다.
- ColorJitter() - 색을 바꾼다.
- RandomAffine(degrees, translate) - 랜덤으로 affine 변형을 한다. 회전, 이동을 함
- RandomCrop(size, scale, ratio) -이미지를 랜덤으로 아무데나 잘라 size 크기로 출력한다.
- Resize(size) - 이미지 사이즈를 size로 변경한다
- RandomRotation(degrees) 이미지를 랜덤으로 degrees 각도로 회전한다.
- RandomResizedCrop(size, scale, ratio) - 이미지를 랜덤으로 변형한다.
- RandomVerticalFlip(p=0.5) - 이미지를 랜덤으로 수직으로 뒤집는다. p =0이면 뒤집지 않는다.
- RandomHorizontalFlip(p=0.5) - 이미지를 랜덤으로 수평으로 뒤집는다.
- RandomApply([transforms, p=0.3) - transform함수를 p확률 만큼 적용한다.
- ToTensor() - 이미지 데이터를 tensor로 바꿔준다.
- Normalize(mean, std, inplace=False) - 이미지를 정규화한다.
'Python Code' 카테고리의 다른 글
ViT(Vision Transformer) 비전 트랜스포머 Pytorch 코드 (0) | 2023.11.01 |
---|---|
Linux 우분투 cuda 버전/GPU 사용량 확인 (0) | 2023.10.29 |
파이썬(python) 통계분석 코드 [T test][Chi-square] (0) | 2023.10.28 |
Gitlab 사용법 (0) | 2023.10.26 |
이미지 데이터 딥러닝 학습 코드 (0) | 2023.10.25 |