MobileNetV2 vs Custom CNN: 선박 이미지 분류 딥러닝 모델 비교 분석

🤖 AI 추천

이 콘텐츠는 딥러닝 모델 구축 및 비교 경험을 쌓고 싶은 머신러닝 엔지니어, 데이터 과학자, 그리고 딥러닝 입문자를 포함한 모든 IT 개발자에게 유용합니다. 특히 전이 학습(Transfer Learning)의 효과와 클래스 불균형 문제에 대한 실질적인 인사이트를 얻고 싶은 분들에게 추천합니다.

🔖 주요 키워드

MobileNetV2 vs Custom CNN: 선박 이미지 분류 딥러닝 모델 비교 분석

핵심 기술

이 글은 딥러닝 학습 과정에서 두 가지 CNN 모델(Custom CNN과 MobileNetV2)을 사용하여 선박 이미지를 다중 클래스로 분류하는 과정을 공유합니다. 특히 전이 학습(Transfer Learning)의 효과와 클래스 불균형 문제를 해결하는 데 초점을 맞추고 있습니다.

기술적 세부사항

  • 프로그램 참여: Data Science Nigeria와 3MTT NITDA 주관 DeepTechReady 프로그램 참여 중 딥러닝 과제 수행 경험을 공유합니다.
  • 과제 목표: 커스텀 CNN 모델과 사전 학습된 MobileNetV2 모델을 구축하고 비교하여 선박 이미지 분류 성능을 평가합니다.
  • 개발 환경: Google Colab을 사용했으며, Google Drive 마운트 기능을 활용했습니다.
  • 데이터셋 특징: 학습 데이터셋은 4000개 이상의 이미지를 포함했으나, 테스트 폴더는 24개의 클래스로 나뉘어 있었고 클래스별 이미지 수에 심각한 불균형(minority classes)이 존재했습니다.
  • 데이터 전처리: 테스트 폴더를 사용하여 학습/검증 데이터셋을 분리했으며, tf.keras.utils.image_dataset_from_directory를 활용하여 이미지를 로드하고 정규화했습니다. (이미지 크기: 224x224)
  • 커스텀 CNN 모델: 32, 64, 128개의 필터를 가진 Conv2D 레이어와 MaxPooling2D, Dropout 레이어를 포함하는 Sequential 모델을 구축했습니다. 총 약 3800만 개의 파라미터를 가집니다.
  • MobileNetV2 모델: 사전 학습된 MobileNetV2를 기반으로 include_top=False로 설정하고, GlobalAveragePooling2D 및 Dense 레이어로 분류 헤드를 추가했습니다. 사전 학습 가중치('imagenet')를 사용하고, MobileNetV2 자체는 더 이상 학습하지 않도록(trainable=False) 설정했습니다.
  • 모델 학습: 두 모델 모두 Adam 옵티마이저와 sparse_categorical_crossentropy 손실 함수를 사용해 5 에포크 동안 학습시켰습니다. CPU 사용으로 인한 학습 시간 지연 경험을 공유합니다.
  • 평가 지표: 분류 리포트를 통해 각 모델의 성능을 비교했습니다.

개발 임팩트

  • 전이 학습의 우수성: MobileNetV2가 커스텀 CNN보다 전반적으로 더 나은 정확도와 일반화 성능을 보였으며, 특히 클래스 불균형이 심한 데이터셋에서 강점을 나타냈습니다.
  • CPU vs GPU: 딥러닝 모델 학습 시 GPU 사용의 중요성을 강조하며, 런타임 설정의 중요성을 시사합니다.
  • 클래스 불균형 대처: 사전 학습 모델이 불균형 데이터셋에서도 더 나은 성능을 보이는 이유를 이미지넷(ImageNet) 사전 학습의 효과로 설명합니다.
  • 커스텀 모델의 가치: 직접 CNN을 구축하는 과정이 아키텍처 제어 및 학습 경험에 있어 여전히 가치 있음을 언급합니다.

커뮤니티 반응

원문 자체에 특정 커뮤니티 반응에 대한 언급은 없으나, GitHub 링크를 통해 학습 과정을 공유하며 동료 개발자들과의 피드백 및 학습을 시사합니다.

톤앤매너

IT 개발자를 대상으로 하는 기술 블로그 글로, 직접적인 경험과 학습 과정을 솔직하게 공유하며 기술적 내용도 충실히 담고 있습니다. 동기 부여와 정보 전달을 동시에 목표로 하는 긍정적인 톤앤매너를 유지합니다.

📚 관련 자료