본문 바로가기

딥러닝

9. 전이 학습

728x90

1. 전이 학습(Transfer Learning)

  • 하나의 작업을 위해 훈련된 모델을 유사 작업 수행 모델의 시작점으로 활용할 수 있는 딥러닝 접근법
  • 신경망은 처음부터 새로 학습하는 것보다 전이 학습을 통해 업데이트하고 재학습하는 편이 더 빠르고 간편함
  • 전이 학습은 여러 응용 분야(검출, 영상인식, 음성인식, 자연어처리, 검색분야...)에서 많이 사용됨

 

 

 

2. 캐글 데이터셋

  • 캐글에 로그인 
  • 우측 상단의 계정을 클릭 -> Your Profile -> 우측의 Setting 클릭 -> Account에서 하단 API의 Create New API Token을 클릭 -> Kaggle.json 파일이 다운로드 됨
  • Kaggle.json 파일을 메모장으로 열기

 

 

 

3. Alien vs Predator 데이터셋

 

Alien vs. Predator images

Small image classification - for transfer learning

www.kaggle.com

 

 

 

4. 이미지 증강 기법(Image Augmentation)

  • 원본 이미지(데이터)를 조작하여 원본과는 크고 작은 변화를 가진 이미지를 생성하여 학습하는 기법
  • 일반적으로 모델 성능이 좋아짐
  • 오버피팅을 방지하는 목적
  • 이미지 증강 기법
 

Transforming and augmenting images — Torchvision main documentation

Shortcuts

pytorch.org

  • torchvision.datasets: 이미지 분류, 객체 감지 등 여러 가지 데이터셋이 포함되어 있다.
  • torchvision.models: 다양한 사전 훈련된 딥러닝 모델을 제공하는 모듈이다. 일반적인 컴퓨터 비전 작업에 대해 이미 학습된 모델을 쉽게 사용할 수 있다.
  • torchvision.transforms: 이미지에 적용할 수 있는 다양한 전처리 함수들을 제공하는 모듈이다.

 

 

 

5. 사전 학습된 ResNet50 모델

 

Models and pre-trained weights — Torchvision 0.19 documentation

Shortcuts

pytorch.org

 

 

5-1. ResNet50의 특징

  • 50개의 레이어로 구성되어 있으며 주로 Conv(컨볼루션) 레이어와 Batch Normalization, ReLU 활성화함수, 풀링 레이어 등으로 이루어져 있음
  • 기울기 소실 문제를 해결하고 훨씬 더 깊은 네트워크를 효과적으로 학습시킬 수 있음
  • 이미지 분류, 객체 탐지 등 다양한 컴퓨터 비전 작업에서 높은 성능을 보임

 

5-2. 이미지넷(ImageNet)

  • 이미지 데이터베이스
  • 1000개의 클래스로 동물과 사물 이미지를 포함

 

 

 

 

5-3. Freeze Layers

  • 특징을 뽑아내는 CNN의 앞쪽 컨볼루션 레이어들은 수정하지 않도록 설정
  • 출력 부분의 레이어(FC)를 다시 설정하여 분류에 맞게 변경

 

모델의 마지막 레이어인 완전 연결층(Fully Connected Layer)과 활성화 함수를 포함한 새로운 구조를 정의한다.

 

 

  1. Epoch 루프
  2. 훈련과 검증 단계:
    • for phase in ['train', 'validation']: 'phase'가 'train'이면 모델을 훈련 모드로 설정하고, 'validation'이면 검증 모드로 설정한다. -> 드롭아웃 같은 훈련 전용 기능이 활성화되거나 비활성화 된다.
  3. 모델 모드 설정:
    • 'model.train()'은 훈련 모드로 모델을 설정한다. 이는 드롭아웃과 배치 정규화 같은 훈련 전용 기능이 활성화된다.
    • 'model.eval()'은 검증 모드로 모델을 설정한다. 이는 훈련 전용 기능이 비활성화되며, 모델의 평가에 적합한 상태로 설정된다.
  4. 훈련 밑 검증 루프:
    • 'dataloaders'는 훈련과 검증 데이터 로더를 포함하는 딕셔너리이다. 현재 배치 데이터를 'x_batch'와 'y_batch'로 로드한다.
  5. 데이터 이동 및 예측:
    • 데이터를 디바이스(CPU 또는 GPU)로 이동시키고, 모델을 통해 예측을 수행한다.
  6. 손실 계산 및 역전파
  7. 정확도 계산: 
    • 'y_pred'가 0.5 이상인 경우 1로, 그렇지 않은 경우 0으로 변환하여 이진 예측을 생성한다.
  8. 손실 및 정확도 집계

 

 

 

📌 'PIL'(Python Imaging Library)은 파이썬에서 이미지 작업을 수행할 때 사용하는 라이브러리이다. 이미지 열기 및 저장, 이미지 조작, 변환 등의 기능을 수행할 수 있다.

 

 

📌 'torch.stack'은 입력된 텐서들을 새로운 차원에서 쌓아 올려 하나의 텐서로 만든다.

 

728x90