기존_내장_AI_EfficientDet‐Lite0_모델_분석 - boostcampwm-2024/and04-Nature-Album GitHub Wiki

기존 내장 AI EfficientDet-Lite0 모델 분석


1. 개요

Nature Album 프로젝트에서는 AI를 활용해 사용자가 찍은 사진을 분석하고 자동으로 라벨링을 제공하고자 했다. 초기에는 TensorFlow Lite 기반 EfficientDet-Lite0 모델을 내장해 사용했으며, 이후에는 정확도 문제로 Google Gemini API를 도입했다.

이 문서는 현재 진행 중인 AI 리팩토링의 배경이 되는 기존 모델의 한계를 분석하고, Nature Album에 적합하지 않았던 이유를 정리하고자 한다.


2. 모델 개요: EfficientDet-Lite0

EfficientDet-Lite0은 Google이 TensorFlow Lite 기반으로 개발한 객체 탐지(Object Detection) 모델이다.

모델 특징

  • 백본(Backbone): EfficientNet-Lite0 구조 기반
  • 특징 추출 구조: BiFPN (Bidirectional Feature Pyramid Network)
  • 모델 크기: 약 4MB (TFLite 양자화 모델)
  • 입력 크기: 320x320
  • 탐지 수: 최대 5개의 객체 반환
  • 사전 학습 데이터셋: COCO Dataset (80개 클래스)

3. COCO Dataset의 한계

EfficientDet-Lite0은 COCO 데이터셋을 기반으로 학습되었다. 그러나 COCO는 주로 도시 환경 및 일상 사물 중심의 객체로 구성되어 있으며, 생물 관련 라벨은 10개 수준에 불과하다.

포함된 동물 라벨 예시

  • bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe

곤충, 해양 생물, 양서류 등 다양한 생물은 포함되어 있지 않아 Nature Album의 도감 목적과는 부합하지 않았다.


4. 모델 및 코드 설정 구조

앱 내에서 EfficientDet-Lite0 모델을 사용하는 기본 코드 구조는 다음과 같다:

val modelFile = copyAssetToInternalStorage(context, "EfficientDet.tflite")
val options = ObjectDetector.ObjectDetectorOptions.builder()
    .setMaxResults(5)
    .setScoreThreshold(0.9f)
    .build()
detector = ObjectDetector.createFromFileAndOptions(modelFile, options)
  • ScoreThreshold 0.9로 설정되어 있어, 신뢰도가 매우 높은 경우에만 결과 반환
  • 라벨이 제한적인 COCO 기반이므로 생물 탐지 결과가 빈번히 누락됨

5. 문제점 및 개선 필요성

항목 문제
라벨 다양성 부족 COCO 데이터셋의 라벨 대부분이 사물에 편중됨
생물 분류 성능 부족 곤충, 해양 생물 등은 탐지가 불가능함
객체 탐지 모델 구조 현재 우리 프로젝트는 분류만 필요하나 객체 탐지 모델이라 불필요한 연산 발생
탐지 신뢰도 설정 문제 0.9 이상의 조건으로 실제 결과 누락 빈도 높음

6. 개선 방향: MobileNetV3-Small 도입

AI 리팩토링에서는 기존 객체 탐지 방식 대신, 이미지 분류(Classification) 모델인 MobileNetV3-Small을 도입하고자 한다.

MobileNetV3-Small 적용 주요 변경 사항

  • 이미지 분류하는 방식으로 구조 변경
  • ImageNet 1,000개 라벨 중 생물 관련 라벨 398개만 JSON으로 추출하여 사용
  • 예측된 라벨이 JSON에 포함되지 않으면 "알 수 없음"으로 일괄 처리
  • TFLite 기반 모델이며 실제 사용된 파일 기준 모델 크기는 약 9.8MB로 확인됨

이러한 구조는 Nature Album 프로젝트의 컨셉에 맞게 최적화되어 있으며, 향후 필요 시 Fine-Tuning을 통해 성능을 더욱 개선할 수 있다.

⚠️ **GitHub.com Fallback** ⚠️