Boostcamp AI Tech

[주말 실험 일지 - 토] P Stage - 모델 최적화(경량화)

ju_young 2021. 12. 6. 19:33
728x90
  1. num_class를 6으로 수정 -> 기존에 1000으로 해놓고 있었음 -> Average CUDA time 0.022, inference 54초
  2. img size 224 에서 112변경 후 inference 51초 -> img size 112로 변경 후 학습 -> onecyclelr에서 maxlr과 초기 lr을 같게 설정해주고 있었음 -> maxlr = lr * 10으로 설정해주고 학습 -> warmup 방식보다 maxlr에서 lr을 감소하는 방식이 좀 더 좋은 성능을 보여줌
  3. 이미지 사이즈를 112로 변경했을때 test f1 score 0.71~0.72에서 정체됨
  4. 이미지 사이즈 224의 0.75인 168로 변경하여 학습 -> 50epoch 학습했을때 좀 더 수렴할 것 같은 여지가 보임 -> 100epoch, **final_div_factor**는 default값이 1e4인데 그대로 설정하게되면 min_lr이 initial / 10000까지 떨어지게됨 -> 파라미터값들을 다시 확인후 max_lr=0.1, final_div_factor=100.0으로 설정하여 lr을 0.004~0.00004 범위로 학습하게 설정함 -> 학습 후반에 overfitting되는 현상이 나타남 -> final_div_factor을 100000.0으로 지정하여 학습 후반에 더 섬세하게 lr을 주게 만들고 다시 학습 -> 다시 정리하면 init_lr=max_lr/div_factor에서 시작해서 max_lr까지 warmup한다음 init_lr/final_div_factor까지 다시 감소함
  5. pretrain이 이미지 224 사이즈로 학습되어서 후반에 학습이 잘 안되는 것 같음 -> vanilla model로 학습 -> 100epoch 학습 결과 val f1 score 0.665로 낮게나옴 -> 학습을 더 시키면 높게 나올 것 같지만 overfitting의 위험이 있어보임
  6. mnasnet에서 activation function으로 relu6를 사용했길래 hard swish로 변경하고 pretrain을 불러와 다시 학습 -> final_div_factor = 1000.0, max_lr = 0.001로 설정 -> 학습 시간은 비슷함 -> 수렴속도는 느리지만 overfitting이 잘 안되는 것 같음 -> 100epoch 돌렸을때 val f1 score 약 0.68~0.69 정도 나옴
  7. intervertedresidual에만 relu6로 해놓고 나머지에 hard swish로 변경하고 학습
  8. lr을 조정해도 성능 향상이 보이지 않음 -> optimizer를 adamw로 변경하여 학습 -> epoch=50, pcr_start=0.02로 설정하여 lr warmup을 하지 않게함
728x90