피드로 돌아가기
Dev.toAI/ML
원문 읽기
개인 개발자가 MobileNetV2 파인튜닝과 프레임 투표 기법으로 반려동물 감정 분류기를 구축해 단일 프레임 71%에서 5프레임 투표 기법으로 81% 정확도 달성
I Built a Pet Emotion Classifier With Python in a Weekend (Here's What I Learned)
AI 요약
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% 향상시킬 수 있고, 동시에 불확실한 예측을 명시적으로 처리하는 별도 클래스를 추가하면 거짓 양성을 크게 줄일 수 있다.