Super Kawaii Cute Cat Kaoani
본문 바로가기
👩‍💻 Project

[인공지능응용] 강아지 감정 분석 puppysense 프로젝트 회고록

by wonee1 2025. 7. 2.
728x90

🐶 PuppySense 프로젝트 회고록

 

 

이번 1학기 전공 수업인 인공지능응용에서 AI 모델 학습과 기술 구현을 목표로 한 팀 프로젝트를 진행했다. EfficientNet 기반 모델 학습과 백엔드 서버 구축을 맡아 프로젝트의 핵심 기능을 구현했다. 우리팀은 모델을 학습 시킨 뒤 서버에 학습 시킨 모델을 삽입하여 웹 사이트에서 활용할 수 있게 했다. 

 

1. 프로젝트 배경과 목표

 

 

 

반려견의 감정을 이해하고 보호자와의 교감을 증진하기 위해 강아지의 표정과 행동을 분석하는 AI 웹 서비스 PuppySense를 기획했다. 기존 서비스는 이미지 기반 분석에 그치거나 ResNet, MobileNetV2 같은 모델을 사용해 성능과 경량성 모두 한계가 있었다. 이를 보완하기 위해 EfficientNetB4 기반의 경량 고성능 모델을 적용했으며, 사용자가 업로드한 영상을 분석해 행복/슬픔/화남/편안함 4가지 감정으로 분류하고 웹에서 직관적으로 결과를 확인할 수 있도록 하는 것을 목표로 했다. 

 

프로젝트 계획을 발표하는 중간 발표에서 기존의 서비스들과의 차별성이 부족하다는 평가를 받았아서 이를 보안하여서 영상 분석에 좀 더 초점을 두어 개발했다.

 

 

2. 기술적 도전과 설계

 

(1) 데이터 설계 및 전처리

 

 

 

 

Kaggle Dog Emotion 데이터셋(angry/happy/relaxed/sad 각 1,000장)을 사용했다. BlazeFace 모델로 업로드된 영상에서 강아지 얼굴이 포함된 프레임을 탐지하고, 사용자가 원하는 이미지를 선택해 업로드할 수 있도록 했다. 이미지 크기를 224x224로 통일하고 RGB 변환, 정규화를 수행했으며, 레이블은 One-hot Encoding을 적용했다.

 

 

 

 

(2) 모델 설계 및 학습 

 

 

 

 

 

EfficientNetB4를 기반으로 ImageNet 사전학습 가중치를 활용해 전이학습을 진행했다. 1단계로 모든 레이어를 freeze하고 학습한 후, 상위 레이어 일부를 unfreeze해 낮은 학습률로 fine-tuning을 적용했다.

 

 

 

 

과적합 방지를 위해 Dropout(0.6), L2 정규화, ImageDataGenerator 기반의 데이터 증강, EarlyStopping 등을 사용했다.

 

 

 

 

(3) 웹 서비스 구현 과정 

 

 

 

 

사용자가 강아지 사진이나 영상을 업로드하면 BlazeFace로 얼굴 프레임을 추출하고, 선택한 이미지를 API로 전송해 감정을 예측했다. 결과는 이미지와 함께 감정별 확률로 표시했으며, 사용자가 분석 결과에 대한 피드백을 남길 수 있는 기능도 추가해 서비스의 완성도를 높였다. 

 

또한 사용자가 강아지 사진을 전송하고 결과를 기다리는 동안 지루하지 않도록 강아지가 공을 가지고 노는 애니메이션을 추가해 재미를 주었다. 

 

 

 

 

 

학습한 모델을 Flask로 구축한 웹 서버에 삽입하고 /predict 엔드포인트에서 감정 예측을 처리했다. 예측 결과는 감정별 확률(%)과 이미지 URL을 포함해 응답으로 반환되도록 했으며, AWS S3에 이미지를 저장하고 GCP와 Nginx를 활용해 HTTPS 환경으로 배포했다.

 

 

 

 

(4) 웹 서비스 구현 결과 

 

웹 페이지 구현 결과

 

메인 화면에서 영상을 업로드하면 강아지 얼굴이 감지된 이미지를 선택할 수 있다. 선택한 이미지의 감정을 예측해 확률과 함께 결과를 제공한다. 사용자는 여러 이미지 중 최적의 프레임을 선택해 정확도를 높일 수 있다. 분석 결과는 서버에 저장되며 직관적인 UI로 쉽게 확인할 수 있다. 

 

 

3. 내가 맡은 역할

나는 전반적으로 서버와 코랩 환경 설정 및 모델 파인튜닝을 맡아서 진행했다. 

 

  • Colab 환경 설정
  • 백엔드 GitHub 환경 설정을 진행했다. 
  • L2 정규화 적용 및 fine-tuning을 통한 모델 최적화
  • Flask 서버 설정과 모델 삽입 (EfficientNet 모델 구동)
  • 업로드된 이미지에 대해 예측을 수행하는 API 작성

 

4. 협업과 성과

 

 

 

 프론트엔드(영상 업로드, 결과 시각화), 백엔드(모델 삽입, API 설계), AI 모델 학습으로 나눠 역할을 분담했다. 실시간 회의, GitHub, 노션 등을 활용해 진행 상황을 투명하게 공유하고 문제를 신속하게 해결했다. 또한 모델 정확도를 테스트 기준 약 85%로 안정적인 성능을 달성했다. 영상 업로드 → 프레임 추출 → 감정 예측 → 시각적 결과 제공까지 엔드 투 엔드 시스템을 완성했다. UX 향상을 위해 분석 대기 중 강아지가 공놀이하는 애니메이션을 추가해 서비스 완성도를 높였다. 

 

 

 

 

5. 배운 점과 아쉬움

 

데이터 전처리부터 모델 학습, 서비스 배포까지 AI 서비스의 전체 프로세스를 직접 경험하며 실무 감각을 키웠다. 이미지 증강을 적용하는 과정에서 예기치 않게 모델 정확도가 급락하는 문제가 있었지만, 원인을 파악하고 롤백·재적용하며 해결했다.

 

실제 서비스화 과정에서 CORS, HTTPS 인증, 프론트-백엔드 통신 오류 등 다양한 문제를 경험하고, 이를 해결하며 문제 해결과 협업 역량을 성장시킬 수 있었다. 다만 다양한 견종과 환경에 대한 대응을 위한 데이터 확보의 필요성이 아쉬움으로 남았다. 추후 프로젝트를 리팩토링하게 된다면 아쉬웠던 점을 보완하는 방식으로 리팩토링을 진행할 에정이다, 

 


 

 

 

🔗 깃허브 링크 

 

팀 repository : https://github.com/oculo0204/AppliedAI3

 

GitHub - oculo0204/AppliedAI3: 인공지능 응용 3팀입니다.

인공지능 응용 3팀입니다. Contribute to oculo0204/AppliedAI3 development by creating an account on GitHub.

github.com

 

 

백엔드 repository: https://github.com/wonee1/Puppysense_BE

 

GitHub - wonee1/Puppysense_BE: 인공지능응용 나만없어강아지팀 백엔드 레포지토리

인공지능응용 나만없어강아지팀 백엔드 레포지토리. Contribute to wonee1/Puppysense_BE development by creating an account on GitHub.

github.com

 


프론트엔드 repository:
  20221171/AI

전체 문서 정리 repository: https://github.com/oculo0204/AppliedAI3?tab=readme-ov-file

 

 

🔗 배포 웹 페이지 링크 

 

배포 url: https://ai-beige-seven.vercel.app/

 

PuppySense

 

ai-beige-seven.vercel.app

 

 

 

🔗 시연 영상 

 

 

https://youtu.be/1287B1peSEE

 

728x90