[모두를 위한 딥러닝2] CNN #5 VGG

YSL·2021년 7월 26일
0

모두를 위한 딥러닝2

목록 보기
14/23

VGG net

  • stride 1, padding 1로 설정된 3x3 convolution으로만 구성되어 있다.
    torchvision.models.vgg : vgg 11~19까지 만들 수 있음
    이때, 3x224x224 입력을 기준으로 만들도록 기본값이 설정되어있음

Q. input size가 다른 경우, vgg를 적용하려면?


VGG 만들어보기


1. import
2. model url

3. VGG class 만들기

  • input : features, num_class, init_weights
  • classifier : fc layer들
  • features : 쌓아가야 할 VGG-net의 convolution layer
  • kaiming_nomalization을 통해 weight 초기화
    cf> VGG net에서는 bias 값이 항상 0이다.
  1. " features 값을 어떻게 넣어줄 수 있는가 "
    1. make_layer : CFG에 맞춰 make_layer 동작
    2. CFG : network 구성 역할
      cf> in_channels를 v로 바꿔주는 이유
      : convolution layer를 통과하고 나오면 batch_size는 그대로지만 channel 수는 변하게 됨. 다음 channel에서 변경된 수 만큼의 channel을 받아야 하므로 in_channel을 그만큼 바꿔주게 됨
  2. VGG 를 사용한 모델 만들기
    VGG(feature, num_class, init_weight)
  • feature : make_layer를 통해 내가 원하는 대로 생성 가능
  • num_class : CIFAR10의 경우, 클래스가 10개이므로 10으로 설정
    +) CFG에서 custom layer를 추가한 경우, VGG class의 in_feature가 달라지므로 수정해줘야 함
    -> image size가 다른 상태에서 VGG-net을 적용하고자 하면 VGG class에서 nn.Linear() 수정해주기



CIFAR10에 VGG net 넣어 수행해보기


0. 현재 폴더에 vgg.py 텍스트 파일 만들기

1. import 및 visdom 실행

2. visdom을 통해 loss 값을 확인하기 위해 loss tracker 설정
3. manual_seed 고정 및 cuda 설정
4. CIFAR10 데이터 불러오기


5. visdom에서 불러온 이미지 데이터 확인해보기
위와 같은 결과를 볼 수 있음

6. 0번에서 만든 vgg.py 불러오기(또는 torchvision 내의 vgg 불러오기)
7. CFG 설정

8. VGG class 만들기
9. 7번에서 만등 CFG로 make_layer 구성하기

10. loss function와 optimizer 설정

  • epoch 돌리는 동안 learning rate를 계속 고정시키는 것보다 조금씩 감소시키면서 학습시키면 보다 정밀한 학습이 가능함
    => lr_scheduler.StepLR(optimizer, step_size, gamma) : lr_scheduler를 step_size번 실행할 때마다 learning rate 값에 gamma만큼 곱해줌
  1. 만든 모델 학습시킨 후 loss 값 변화 확인하기
  2. loss 값 변화 그래프 그리기

    위와 같은 loss 값 변화를 확인할 수 있음

  3. test 해보기
    정확도가 약 76%임을 확인할 수 있음

0개의 댓글

관련 채용 정보