※ImageDataset 효율적으로 분리하는법
Image Dataset을 만들 때, 굳이 mode로 나누어서 전처리를 진행하지 않고, train_transform과 val_trasform을 만들어 놓고 transform=None으로 데이터셋을 불러온 후 , split하여 Subset으로 trasform을 따로 적용해준다.
# 이미지 증강을 위한 transform 생성
train_transforms = transforms.Compose([
transforms.Resize((224, 224)), # 이미지 사이즈 변환
transforms.RandomRotation(degrees=45), # -45~45 랜덤 회전
transforms.ColorJitter(brightness=0.2), # -0.2~0.2 명암 랜덤 변환
transforms.ToTensor(), # 텐서 변환
transforms.Normalize( # 정규화
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
)
])
# 평가는 증강작업 제외
val_transforms = transforms.Compose([
transforms.Resize((224,224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
# ImageDataset 통해 폴더구조에서 데이터세트 추출
dataset = ImageDataset(root='./flower', transform=None)
print(f"발견된 클래스: {dataset.classes}")
print(f"총 이미지 개수: {len(dataset)}")
# 학습 평가 분리
train_size = int(0.8 * len(dataset))
val_size = len(dataset) - train_size
train_ds, val_ds = random_split(dataset, [train_size, val_size])
# 각각의 데이터세트에 다른 transform 적용
train_ds = Subset(ImageDataset('./flower', transform=train_transforms), train_ds.indices)
val_ds = Subset(ImageDataset('./flower', transform=val_transforms), val_ds.indices)
CNN 사전학습/전이학습 파이프라인 :
데이터 전처리 -> 사전학습된 모델을 불러옴 -> 전이학습을 통해 사전학습으로 불러온 모델을 전이학습, 전이학습 전략엔 full-training, fine-tuning, feature extraction이 있음
Full Training : 완전히 초기화된 모델(아키텍처만 빌려옴) -> 일반적인 성능이 오히려 방해가 될때
Fine Tuning(미세 조정) : 사전학습된 가중치에서 추가 학습(가중치 조정)
-> 도메인 특화된 데이터가 일반적인 성능 안에서 특성이 만들어질 수 있는 경우, 많이 사용
Feature Extraction(프리징) : 불러온 사전학습 모델의 가중치를 그대로 쓴다, 분류기만 학습
-> 데이터세트와 특징이 유사하지만 분류 기준만 다른 경우
전이학습 파이프라인 : 전이학습 준비(분류기를 계층 클래스에 맞게 교체) -> 전이학습(여러 모델 비교) -> 모델 선정
: 직접 아키텍처를 구성하여 나온 성능지표, 전이학습을 통해서 나온 모델의 성능지표를 비교해보는것이 좋을 것 같다
(Fine-tuning에서는 epochs, lr를 비교적 적게 -> 하지만 과적합이 일어날 때 까지는 똑같이 돌려보는 것이 좋다)
: 모델링을 직접 할 필요 없이 가져와서 튜닝만 하면 되기 때문에 편하다
:모델들을 여러가지 가져와서 Fine-tuning 방법도 여러가지로 하여서 비교해서 성능지표(시간, 성능)을 표로 만드는게 좋을듯 하다
※전이학습시의 하이퍼파라미터 튜닝
Full_fine tuning, 부분 파인 튜닝에서의 성능 지표(속도(중요), 성능)를 비교해보며 어떤 모델을 결정할 것인지 간단한 하이퍼파라미터 튜닝을 하면서 결정 -> 결정한 후의 본격적으로 하이퍼파라미터 튜닝(옵튜나 등 활용)
'TIL' 카테고리의 다른 글
| [TIL] #12 2026-04-10 (1) | 2026.04.10 |
|---|---|
| [TIL] #11 2026-04 -08 (2) | 2026.04.08 |
| [TIL] #9 2026-03-26 ~ 3-27 (1) | 2026.03.27 |
| [TIL] #8 2026-03-16 (2) | 2026.03.16 |
| [TIL] #7 2026-03-11 (1) | 2026.03.11 |
