project_Health

딥러닝 기반 음식 이미지 인식을 활용한 개인 맞춤형 AI 식단·운동 루틴 자동 설계 서비스

Tra2ners

부트캠프 팀 프로젝트 | 4인 | 2025.12.15 – 2026.01.06 (약 3주) | 담당: TA/DA
AI·SW 융합콘텐츠 부문 최종 성과 발표회 최우수상


핵심 문제 & 해결

단일 모델로는 다중 음식 분류가 어렵다

하나의 사진에 여러 음식이 존재하고 클래스 간 시각적 유사성이 높아, Softmax 기반 단일 분류 모델로는 오분류 위험이 높았습니다.
문제를 3단계로 분해해 파이프라인으로 연결했습니다.

또한 실제 서비스 환경(다중 음식)에 맞춘 추가 데이터를 직접 수집·라벨링 후 파인튜닝해 탐지 범위를 확장했습니다.

YOLOv8 (객체 탐지 · ROI 추출)
    ↓
EfficientNet-B4 (음식 종류 분류)
    ↓
이미지 임베딩 + 코사인 유사도 (경계 사례 보완)

→ EfficientNet-B4 검증 정확도 93% 달성

전처리 조정만으로는 정확도가 오르지 않는다

증강 파라미터를 여러 조합으로 조정해도 검증 정확도가 정체되는 구간이 발생했습니다.
모델 구조 대신 데이터를 들여다봤고, 클래스 불균형과 촬영 환경 편향을 확인했습니다.
Hard Case 기반 재학습을 시도했으나 성능 향상이 없었고, 원인을 분석해 Near-Hard Case로 전략을 수정한 뒤 객체 누락 약 11% 감소를 확인했습니다.

→ 객체 누락 건수 약 11% 감소

돌발 이벤트가 발생하면 루틴 전체가 무너진다

회식·야근 등 이벤트 발생 시 즉각적인 실패 처리 대신, 정책 기반으로 영향을 분산해 루틴을 자동 재조정하는 이벤트 드리븐 구조를 설계했습니다.

이벤트 입력 (회식 · 야근 · 과식)
    ↓ event_policy        : 이벤트 유형 분류 및 보정 정책 결정
    ↓ horizon_engine      : 초과 칼로리를 2~3일 단위로 분산 계산
    ↓ replan_orchestrator : 식단 + 운동 루틴 동시 재설계
    ↓ DB 저장 · 사용자 화면에 즉시 반영

기술 스택

| 분류 | 기술 | |——|——| | ML/DL | PyTorch, YOLOv8, EfficientNet-B4 | | 데이터 | OpenCV, Roboflow, Torchvision, Pandas | | DB | Oracle DB (11개 테이블 ERD 설계) | | 서비스 | FastAPI, Streamlit | | DB 연동 | python-oracledb 커넥션 풀링 |


시스템 구조

약 100개 이상의 모듈을 계층화해 관심사를 분리했습니다.

UI Layer       : 사용자 인터페이스 및 세션 상태 관리 (ui_streamlit/)
Service Layer  : 영양 목표 계산 등 비즈니스 알고리즘 (service/)
Event Layer    : 이벤트 감지 · 정책 판단 · 루틴 재계획 (events/)
Infra Layer    : DB 연결 및 보안 설정 (infra/)
Data Layer     : 데이터 모델링 및 SQL 쿼리 관리 (sql/)

주요 기여

데이터셋