[Object Detection] 4-3. YOLO v3 : pretrained weight 불러와서 사용하기

happy_quokka·2024년 1월 3일
0

딥러닝

목록 보기
14/18

pretrained weight란?

  • 모델을 학습할 때 pretrained weight를 가지고 와서 사용하면 더 빠르게 학습을 진행할 수 있다
  • 미리 학습된 weights이기 때문에 이미 한번 정교화되어 있기 때문이다
  • yolo v3의 경우 backbone network인 Darknet에 대한 pretrained weight가 있다
  • 이 weight는 imagenet 데이터로 한번 학습된 것이다
  • https://pjreddie.com/darknet/yolo/ 의 Download Pretrained Convolutional Weights에서 weight들을 다운받을 수 있다
  • 이 weight들을 사용하여 학습하는 것을 fine-tuning이라고 한다
  • 이때 모델의 구조, 순서는 같아야한다
  • 또한 learning rate가 너무 크면 수렴이 잘 안 될수 있기 떄문에 작은 값으로 바꿔주는 것이 좋다

1. load checkpoint

  • main.py의 train 부분
  • checkpoint load
    • map_location : 불러온 checkpoint를 어느 device에 둘 건지
  • checkpoint는 dictionary 형식으로 되어 있다
  • checkpoint['model_state_dict']의 값들
    • module_list.76.layer_76_conv.weight : 76번째 layer의 convolution weight 값
    • module_list.76.layer_76_conv.bias : 76번째 layer의 convolution bias 값
    • module_list.76.layer_76_bn.weight : 76번째 layer의 batch normalization 값
    • 그 외에 bn.bias, bn.running_mean, bn.running_var, bn.num_batches_tracked 등의 값들이 있다

2. pretrained weight 적용

  • model.load_state_dict를 통해 model에 weight를 적용한다

0개의 댓글