Boostcamp AI Tech

[Boostcamp Day-17] Image Classification - Model

ju_young 2021. 8. 25. 12:05
728x90

Model

model은 시스템을 표현해주고 input을 주면 class를 구분해주는 것이다.

PyTorch

low-level, pythonic, flexibility

1. nn.Module

Pytorch 모델의 모든 레이어는 nn.Module 클래스를 따른다.

2. modules

"_ init _"에서 정의한 또 다른 nn.Module

3. forward

이 모델(모듈)이 호출 되었을 떄 실행 되는 함수

4. nn.Module Family

nn.Module을 상속받은 모든 클래스의 공통된 특징 -> 모든 nn.Module은 forward() 함수를 가진다.

5. Parameters

  • 모델에 정의되어 있는 modules가 가지고 있는 계산에 쓰일 Parameter
  • 각 모델 파라미터 들은 data, grad, requires_grad 변수 등을 가지고 있다.

Pretrained Model

모델 일반화를 위해 매번 수 많은 이미지를 학습시키는 것은 까다롭고 비효율적

-> 미리 학습된 좋은 성능이 검증되어 있는 모델을 사용하면 시간적으로 매우 효율적

-> torchvision.models을 사용하여 손쉽게 모델 구조와 Pretrained Weight를 다운로드 할 수 있다.

Transfer Learning

CNN base 모델 구조

Input + CNN Backbone + Classifier -> Output

  • fully connected layer(fc) = classifier
  • 내 데이터, 모델과의 유사성을 고려

Case by Case

Case1. 문제를 해결하기 위한 학습 데이터가 충분하다.

  • 내가 해결하고자 하는 문제와 Backbone의 유사성이 높다면 Freeze, 낮다면 Trainable

Case2. 학습 데이터가 충분하지 않은 경우

  • 유사성이 낮다면 사용하지 않는 것을 권장 (overfitting, underfitting이 발생될 수 있음)
728x90