[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개
인스톨! 파이토치 강의 소개
혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상은 채널 5주년 기념으로 '인스톨! 파이토치' 강의를 소개하는 내용입니다. 강의자는 최근 출간한 '이론
inner-game.tistory.com

데이터 증강(Data Augmentation)은 기존 학습 데이터에 인위적인 변형을 가해 데이터셋의 크기와 다양성을 증가시키는 기법입니다. 새로운 이미지를 수집하는 대신, 원본 이미지를 변형하여 모델이 다양한 상황에서도 잘 작동하도록 학습시킵니다. 이는 과적합을 완화하고 모델의 일반화 성능을 크게 향상시키며, 특히 데이터가 제한적일 때 필수적입니다.[^1][^2][^3]
이미지 증강 기법은 크게 Spatial-level과 Pixel-level로 구분됩니다.[^4]
공간적 정보를 직접 조정하는 증강 기법입니다:[^4]
픽셀 값 자체를 변경하는 기법입니다:[^4]
from torchvision import transforms
train_transform = transforms.Compose([
transforms.Resize((256, 256)),
transforms.RandomRotation(degrees=15),
transforms.RandomHorizontalFlip(p=0.5),
transforms.RandomVerticalFlip(p=0.5),
transforms.RandomResizedCrop(224, scale=(0.8, 1.0)),
transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
이렇게 Compose를 사용하여 여러 증강 기법을 순차적으로 적용할 수 있습니다.[^5]
Albumentations는 케글러들이 만든 빠르고 유연한 이미지 증강 라이브러리입니다. PyTorch의 torchvision.transforms를 대체할 수 있으며, OpenCV, NumPy, imgaug 등 여러 라이브러리를 기반으로 최적화되어 매우 빠른 속도를 자랑합니다.[^7][^8][^9]
pip install albumentations
import albumentations as A
import cv2
# 이미지 읽기
image = cv2.imread('image.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 증강 파이프라인 정의
transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.RandomRotate90(p=0.5),
A.RandomBrightnessContrast(p=0.2),
A.GaussNoise(p=0.2),
A.Blur(blur_limit=3, p=0.1),
])
# 증강 적용
augmented = transform(image=image)
augmented_image = augmented['image']
각 증강 함수에 p 파라미터를 지정하여 적용 확률을 제어할 수 있습니다. 예를 들어 p=0.5는 50% 확률로 해당 증강을 적용한다는 의미입니다.[^11]
import albumentations as A
from albumentations.pytorch import ToTensorV2
from torch.utils.data import Dataset
class AlbumentationsDataset(Dataset):
def __init__(self, file_paths, labels, transform=None):
self.file_paths = file_paths
self.labels = labels
self.transform = transform
def __len__(self):
return len(self.file_paths)
def __getitem__(self, idx):
image = cv2.imread(self.file_paths[idx])
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
if self.transform:
augmented = self.transform(image=image)
image = augmented['image']
return image, self.labels[idx]
# Transform 정의
albumentations_transform = A.Compose([
A.Resize(256, 256),
A.RandomCrop(224, 224),
A.HorizontalFlip(p=0.5),
A.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
ToTensorV2()
])
dataset = AlbumentationsDataset(
file_paths=image_paths,
labels=labels,
transform=albumentations_transform
)
transform = A.Compose([
A.OneOf([
A.GaussNoise(p=1.0),
A.GaussianBlur(p=1.0),
A.MotionBlur(p=1.0),
], p=0.3), # 이 중 하나를 30% 확률로 적용
A.OneOf([
A.OpticalDistortion(p=1.0),
A.GridDistortion(p=1.0),
A.ElasticTransform(p=1.0),
], p=0.2), # 이 중 하나를 20% 확률로 적용
A.RandomBrightnessContrast(p=0.5),
])
OneOf를 사용하면 여러 증강 기법 중 하나만 무작위로 선택하여 적용할 수 있습니다.[^7]
RandomBrightnessContrast: 밝기와 대비 조정HueSaturationValue: 색조, 채도, 명도 조정RGBShift: RGB 채널 값 이동CLAHE: 대비 제한 적응 히스토그램 평활화ShiftScaleRotate: 이동, 스케일, 회전을 한 번에[^4]Affine: 어파인 변환Perspective: 원근 변환ElasticTransform: 탄성 변형GridDistortion: 격자 왜곡이미지 데이터 증강은 제한된 데이터로도 강건한 모델을 만드는 핵심 기술입니다. PyTorch의 기본 transforms로 시작하여, 더 다양하고 빠른 증강이 필요할 때는 Albumentations 라이브러리를 활용하면 됩니다. 30가지 이상의 다양한 증강 기법을 적재적소에 활용하여 모델의 일반화 성능을 극대화할 수 있습니다.
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 9강 | VGGNet으로 전이 학습 시작하기: 사전 학습 모델 활용 완벽 가이드
인스톨! 파이토치 9강 | VGGNet으로 전이 학습 시작하기: 사전 학습 모델 활용 완벽 가이드
[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 인스톨! 파이토치 강의 소개 인스톨! 파이토치 강의 소개혁펜하임 PyTorch 강의 오리엔테이션 요약혁펜하임 채널의 '[PyTorch] 0강. 오리엔테이션' 영상
inner-game.tistory.com