핵심 결론:
MobileNetV2는 ImageNet 사전학습(pre-trained) 모델의 경우 ×224 해상도에서 가장 좋은 성능을 보이며, 해상도가 낮아질수록 정확도가 점진적으로 떨어집니다. 224보다 더 큰 해상도(예: 256×256 이상)를 사용하려면 해당 해상도로 재학습(fine-tuning)하거나 가중치를 새로 학습해야 하며, 메모리·연산량 증가 대비 정확도 향상폭은 점차 작아집니다.
1. MobileNetV2 지원 해상도와 ImageNet 성능12
해상도 (입력 크기) | Top-1 정확도 (%) | Top-5 정확도 (%) |
---|---|---|
96×96 | 62.701 | 84.051 |
128×128 | 66.741 | 86.951 |
160×160 | 69.501 | 88.851 |
192×192 | 71.081 | 89.761 |
224×224 | 72.191 | 90.531 |
- 224×224 해상도가 공식 사전학습 모델의 디폴트이자 최고 성능을 달성합니다.
- 해상도가 낮아질수록 연산량(MFLOPs)이 줄어드는 대신 정확도도 함께 감소합니다.
2. 224보다 큰 해상도 사용 시 고려사항
- 사전학습(weights) 제공 여부
- 공식 리포지토리에서는 224보다 큰 해상도의 사전학습 가중치를 제공하지 않습니다1.
- 256×256, 288×288 등 더 큰 입력을 사용하려면
- ImageNet 전체 데이터로 새로 학습하거나
- 사전학습된 224×224 가중치를 기반으로 해당 해상도에서 재학습(fine-tuning)해야 합니다.
- 메모리 및 연산량
- 입력 해상도를 키우면 피처맵 크기가 커져 메모리 사용량과 연산량이 기하급수적으로 증가합니다.
- 모바일·엣지 디바이스를 타깃으로 설계된 MobileNetV2의 장점을 살리려면 해상도 증가에 따른 리소스 부담을 반드시 감안해야 합니다.
- 정확도 향상폭
- 작은 해상도(96→128→160→192→224) 구간에서는 해상도 32픽셀 증가마다 약 1–3% 정도 Top-1 정확도가 상승했습니다.
- 하지만 이미 224×224 구간에서 사전학습된 가중치를 최대한 활용한 상태이므로, 224→256 이상 구간에서는 모델 용량(폭·깊이)과 학습 데이터 규모가 뒷받침되지 않으면 정확도 향상폭이 매우 미미하거나 오히려 과적합 위험이 있습니다.
3. 전이 학습(Transfer Learning) 시 추천 전략
- 기본: 224×224 입력 크기를 그대로 사용하고, 맨 위 분류층만 교체한 뒤 fine-tuning
- 고해상도 적용 시:
- 입력 크기를 예를 들어 256×256 또는 288×288로 변경
- 사전학습된 224×224 가중치를 불러와 분류층 위주로 재학습
- 모델 전체 또는 일부를 언프리즈(freezing 해제)하여 미세조정
- 장단점 비교:
전략 | 장점 | 단점 |
---|---|---|
224×224 사용 | 사전학습된 최적 가중치 활용, 리소스 효율적 | 최대 해상도 한계(224) |
>224×224 재학습 | 세부 정보 보존↑, 잠재적 정확도↑ | 연산·메모리 증가, 가중치 재학습 필요, 향상폭 불확실 |
결론:
전이 학습 시에는 먼저 224×224를 기본으로 사용하고, 추가 데이터와 리소스가 충분할 때만 더 큰 해상도로 재학습을 시도하는 것이 바람직합니다. 큰 해상도가 반드시 선형적으로 정확도 향상으로 이어지지는 않으므로, 실험을 통해 최적의 해상도-리소스 균형을 찾아야 합니다.
- https://github.com/d-li14/mobilenetv2.pytorch/blob/master/README.md
- https://keras.io/api/applications/mobilenet/
- https://discuss.pytorch.org/t/size-of-input-images-tensor-to-mobilenet-and-other-pretrained-models/84359
- https://resources.wolframcloud.com/NeuralNetRepository/resources/MobileNet-V2-Trained-on-ImageNet-Competition-Data/
- https://stackoverflow.com/questions/78688705/mobilenetv2-transfer-learning
- https://stackoverflow.com/questions/66863736/tensorflow-keras-use-mobilenetv2-model-with-inputs-less-than-32×32
- https://github.com/EhabR98/Transfer-Learning-with-MobileNetV2/blob/main/README.md
- https://www.youtube.com/watch?v=EHkbznaB2rY
- https://github.com/EhabR98/Transfer-Learning-with-MobileNetV2
- https://scisharp.github.io/Keras.NET/api/Keras.Applications.MobileNet.MobileNetV2.html
- https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0271225
- https://blog.csdn.net/weixin_43456810/article/details/125572430
- https://huggingface.co/docs/transformers/en/model_doc/mobilenet_v2
- https://www.youtube.com/watch?v=64uaE8f4HUE
- https://stackoverflow.com/questions/64299754/do-you-have-any-ideas-to-proceed-custom-size-image-using-mobilenet
- https://pmc.ncbi.nlm.nih.gov/articles/PMC8718325/table/tab1/
- https://openaccess.thecvf.com/content_cvpr_2018/papers/Sandler_MobileNetV2_Inverted_Residuals_CVPR_2018_paper.pdf
- 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
- https://gitee.com/opencv_tracking/keras-applications/blob/master/keras_applications/mobilenet_v2.py
- https://www.sciencedirect.com/science/article/pii/S2405844024118853
답글 남기기