피드로 돌아가기
I Built a Pet Emotion Classifier With Python in a Weekend (Here's What I Learned)
Dev.toDev.to
AI/ML

개인 개발자가 MobileNetV2 파인튜닝과 프레임 투표 기법으로 반려동물 감정 분류기를 구축해 단일 프레임 71%에서 5프레임 투표 기법으로 81% 정확도 달성

I Built a Pet Emotion Classifier With Python in a Weekend (Here's What I Learned)

Esther Studer2026년 3월 28일5intermediate

Context

반려동물 소유자들은 애완동물의 행동 변화를 보면서 불안감을 느끼지만 이를 해석할 객관적 근거가 없다. 증상만 보고 과도한 약물 투여 또는 과소 대응을 하는 상황이 발생한다.

Technical Solution

  • MobileNetV2 기반 이미지 분류 모델을 ImageNet 가중치에서 시작해 224x224 프레임 3,200개(YouTube, Reddit r/aww 크롤링, 수동 라벨링 포함)로 파인튜닝: 베이스 모델 동결 후 GlobalAveragePooling2D → Dense(128, relu) → Dropout(0.3) → Dense(5, softmax) 구조
  • 라벨 스키마에 "uncertain" 클래스 추가: 단일 프레임만으로는 구분 불가능한 상황을 명시적으로 처리해 거짓 양성(피곤한 개가 불안함으로 분류되는 경우) 40% 감소
  • 슬라이딩 윈도우 방식으로 연속된 5개 프레임의 예측값에 다수결 투표 적용: 단일 프레임 71% → 81% 정확도 향상
  • TensorFlow Lite 모델(pet_emotion.tflite, 14MB)로 변환해 FastAPI 엔드포인트에서 배포: 이미지 바이트 입력 → 프리프로세싱(cv2 리사이징, 정규화) → TFLite Interpreter 호출 → 신뢰도와 전체 클래스별 확률 반환
  • 견종 그룹(toy, 기타)을 메타데이터로 활용해 신뢰도 임계값 0.65 이하인 소형견의 불안함 예측을 진정함으로 재조정하는 후처리 로직 적용

Impact

단일 프레임 기준 모델 정확도: 84%(훈련), 71%(검증). 5프레임 다수결 투표 적용 시: 81% 정확도. "uncertain" 클래스 도입으로 거짓 양성 40% 감소.

Key Takeaway

MobileNetV2와 같은 경량 사전학습 모델을 주말 프로젝트 규모로도 충분히 파인튜닝할 수 있으며, 단순 정확도 개선보다는 "uncertain" 클래스 추가와 시계열 투표 같은 입력 엔지니어링이 사용자 신뢰도를 더 효과적으로 높인다.


이미지 분류 모델을 배포하는 팀에서 단일 샘플 정확도가 70% 초반대일 때, 연속된 프레임 5~7개에 다수결 투표를 적용하면 추가 모델 학습 없이 정확도를 8~10% 향상시킬 수 있고, 동시에 불확실한 예측을 명시적으로 처리하는 별도 클래스를 추가하면 거짓 양성을 크게 줄일 수 있다.

원문 읽기