MobileNetV2 입력 해상도와 정확도 관계

핵심 결론:
MobileNetV2는 ImageNet 사전학습(pre-trained) 모델의 경우 ×224 해상도에서 가장 좋은 성능을 보이며, 해상도가 낮아질수록 정확도가 점진적으로 떨어집니다. 224보다 더 큰 해상도(예: 256×256 이상)를 사용하려면 해당 해상도로 재학습(fine-tuning)하거나 가중치를 새로 학습해야 하며, 메모리·연산량 증가 대비 정확도 향상폭은 점차 작아집니다.

1. MobileNetV2 지원 해상도와 ImageNet 성능12

해상도 (입력 크기)Top-1 정확도 (%)Top-5 정확도 (%)
96×9662.70184.051
128×12866.74186.951
160×16069.50188.851
192×19271.08189.761
224×22472.19190.531
  • 224×224 해상도가 공식 사전학습 모델의 디폴트이자 최고 성능을 달성합니다.
  • 해상도가 낮아질수록 연산량(MFLOPs)이 줄어드는 대신 정확도도 함께 감소합니다.

2. 224보다 큰 해상도 사용 시 고려사항

  1. 사전학습(weights) 제공 여부
    • 공식 리포지토리에서는 224보다 큰 해상도의 사전학습 가중치를 제공하지 않습니다1.
    • 256×256, 288×288 등 더 큰 입력을 사용하려면
      • ImageNet 전체 데이터로 새로 학습하거나
      • 사전학습된 224×224 가중치를 기반으로 해당 해상도에서 재학습(fine-tuning)해야 합니다.
  2. 메모리 및 연산량
    • 입력 해상도를 키우면 피처맵 크기가 커져 메모리 사용량과 연산량이 기하급수적으로 증가합니다.
    • 모바일·엣지 디바이스를 타깃으로 설계된 MobileNetV2의 장점을 살리려면 해상도 증가에 따른 리소스 부담을 반드시 감안해야 합니다.
  3. 정확도 향상폭
    • 작은 해상도(96→128→160→192→224) 구간에서는 해상도 32픽셀 증가마다 약 1–3% 정도 Top-1 정확도가 상승했습니다.
    • 하지만 이미 224×224 구간에서 사전학습된 가중치를 최대한 활용한 상태이므로, 224→256 이상 구간에서는 모델 용량(폭·깊이)과 학습 데이터 규모가 뒷받침되지 않으면 정확도 향상폭이 매우 미미하거나 오히려 과적합 위험이 있습니다.

3. 전이 학습(Transfer Learning) 시 추천 전략

  • 기본: 224×224 입력 크기를 그대로 사용하고, 맨 위 분류층만 교체한 뒤 fine-tuning
  • 고해상도 적용 시:
    1. 입력 크기를 예를 들어 256×256 또는 288×288로 변경
    2. 사전학습된 224×224 가중치를 불러와 분류층 위주로 재학습
    3. 모델 전체 또는 일부를 언프리즈(freezing 해제)하여 미세조정
  • 장단점 비교:
전략장점단점
224×224 사용사전학습된 최적 가중치 활용, 리소스 효율적최대 해상도 한계(224)
>224×224 재학습세부 정보 보존↑, 잠재적 정확도↑연산·메모리 증가, 가중치 재학습 필요, 향상폭 불확실

결론:
전이 학습 시에는 먼저 224×224를 기본으로 사용하고, 추가 데이터와 리소스가 충분할 때만 더 큰 해상도로 재학습을 시도하는 것이 바람직합니다. 큰 해상도가 반드시 선형적으로 정확도 향상으로 이어지지는 않으므로, 실험을 통해 최적의 해상도-리소스 균형을 찾아야 합니다.

  1. https://github.com/d-li14/mobilenetv2.pytorch/blob/master/README.md
  2. https://keras.io/api/applications/mobilenet/
  3. https://discuss.pytorch.org/t/size-of-input-images-tensor-to-mobilenet-and-other-pretrained-models/84359
  4. https://resources.wolframcloud.com/NeuralNetRepository/resources/MobileNet-V2-Trained-on-ImageNet-Competition-Data/
  5. https://stackoverflow.com/questions/78688705/mobilenetv2-transfer-learning
  6. https://stackoverflow.com/questions/66863736/tensorflow-keras-use-mobilenetv2-model-with-inputs-less-than-32×32
  7. https://github.com/EhabR98/Transfer-Learning-with-MobileNetV2/blob/main/README.md
  8. https://www.youtube.com/watch?v=EHkbznaB2rY
  9. https://github.com/EhabR98/Transfer-Learning-with-MobileNetV2
  10. https://scisharp.github.io/Keras.NET/api/Keras.Applications.MobileNet.MobileNetV2.html
  11. https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0271225
  12. https://blog.csdn.net/weixin_43456810/article/details/125572430
  13. https://huggingface.co/docs/transformers/en/model_doc/mobilenet_v2
  14. https://www.youtube.com/watch?v=64uaE8f4HUE
  15. https://stackoverflow.com/questions/64299754/do-you-have-any-ideas-to-proceed-custom-size-image-using-mobilenet
  16. https://pmc.ncbi.nlm.nih.gov/articles/PMC8718325/table/tab1/
  17. https://openaccess.thecvf.com/content_cvpr_2018/papers/Sandler_MobileNetV2_Inverted_Residuals_CVPR_2018_paper.pdf
  18. https://recipesds.tistory.com/entry/Transfer-Learning%EC%9D%84-%ED%95%B4-%EB%B3%B4%EC%9E%90-mobilenet%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%B4%EC%84%9C%EC%9A%94-%EC%8B%A4%EC%8A%B5
  19. https://gitee.com/opencv_tracking/keras-applications/blob/master/keras_applications/mobilenet_v2.py
  20. https://www.sciencedirect.com/science/article/pii/S2405844024118853

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다