[Object Detection] 4-3. YOLO v3 : pretrained weight 불러와서 사용하기
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
- 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를 적용한다