본 프로젝트는 당뇨병 환우의 식단 이미지로부터 음식의 종류와 양을 분류하여 영양성분을 분석하고 개인 맞춤형 피드백을 제공하는 서비스입니다.
-
배포 사이트
-
예상 기대 효과
- 단순 기록을 넘어, 실질적인 식단 피드백과 자가관리 지원이 가능한 서비스로 확장하는 것을 목표로 함.
- 모바일 및 웹 환경(Colab&Streamlit)에서도 동작 가능한 경량 딥러닝 모델을 구축하고, 사용자 정보 기반의 혈당 예측 회귀 모델을 함께 개발함.
- 식단 이미지의 음식 인식 후 분류 (YoloV8)
- 인식한 음식의 양 추정(MobileNetV3, EfficientNet)
- 추정한 데이터들을 바탕으로 한 영양정보DB로 streamlit에서 결과분석 및 시각화
- Gemini API를 이용한 식단 피드백 제공
- 시연영상
2025년 5월 13일 ~ 2025년 6월 22일
- 음식분류 AI 데이터 영양DB.xlsx
- 양추정 : 양추정_이미지_VAL_0422_add.zip l 5.49 GB
- 음식분류 : 음식분류_이미지_TRAIN_001_1223_add.zip l 27.44 GB
- 데이터 라벨링 프로젝트 : Roboflow :: opensource_final_yoon
- 음식 클래스 수: 21종
- 각 클래스 당 100장의 이미지르 Roboflow를 통해 수집 및 구성함
클래스별 이미지 수
| Class Name | 이미지 수 |
|---|---|
| bakedpotato | 103 |
| bibimbap (비빔밥) | 112 |
| chickensteak | 100 |
| coldsoymilknoodles | 100 |
| crabstick | 100 |
| eeldonburi | 100 |
| grilledmackerel | 100 |
| grilledribs | 100 |
| japchae | 100 |
| jjajangmyeon | 100 |
| kimbap | 101 |
| kimchifriedrice | 99 |
| kimchistew | 97 |
| mungbeansprouts | 98 |
| noodles | 100 |
| pasta | 100 |
| roastedsweetpotato | 100 |
| scrambledegg | 100 |
| spinach | 100 |
| steamerice | 100 |
| tunasandwich | 100 |
- epoch 수 : 100
- 이미지 크기 (전처리) : 640x640
- batch 크기 : 16
- 학습 프레임 워크 →
+ T4 GPU 환경
- 우진 :: Image_Train_v8.ipynb
- 지윤 :: modelTrain
- 클래스 구조
김밥/
├── Q1 / (아주 적음)
├── Q2 /
├── Q3 /
├── Q4 /
└── Q5/ (매우 많음)
- EfficientNet 모델 학습
- 이미지 디렉터리, txt 디렉터리 구조 및 YOLO 형식 바운딩 박스 정보는 이전과 동일
- 이미지 크기 (전처리) : 224 x 224 → Tensor 변환
- 데이터 증강 : RandomResizedCrop 후 Resize로 크기 맞추기 전략
- 모델의 전체 정확도는 약 30.4%로, 무작위 추정보다 크게 높지 않아 분류 성능이 전반적으로 낮음
- MobileNetV3 모델 학습
- 사전학습된 MobileNetV3-Small 모델을 불러온 뒤, 최종 분류 레이어를 5개의 섭취량 등급(Q1~Q5)으로 수정
- 이미지 크기 (전처리) : 224 x 224 → Tensor 변환
- epoch : 10회
- 민지 :: MobileNetV3_amount_estimator.ipynb
- 효정 :: EfficientNet_amount_estimator.ipynb
# PyTorch, torchvision, timm (MobileNetV3, EfficientNet 포함)
pip install torch torchvision timm
# YOLOv8 (ultralytics)
pip install ultralytics
- Google Colab (T4 GPU)
- 또는 로컬 GPU (CUDA 지원)
이 서비스는 다음의 오픈소스 AI 모델을 포함합니다.
YOLOv8 (Ultralytics): GPLv3 License
본 프로젝트는 Ultralytics의 YOLOv8을 기반으로 객체 탐지를 수행합니다.
YOLOv8은 GNU General Public License v3.0 (GPLv3)을 따르며, 이 라이선스를 존중합니다.
※ 해당 라이선스 조건에 따라, YOLOv8을 사용하는 모든 소스코드는 공개되어야 하며, 파생 프로젝트 역시 GPLv3을 따라야 할 수 있습니다.
EfficientNet (Google): Apache License 2.0
본 프로젝트는 Google의 EfficientNet 아키텍처를 기반으로 양 추정 모델 중 하나를 구현하였습니다.
EfficientNet은 Apache License 2.0을 따릅니다.
※ Apache 2.0 라이선스는 상업적 이용 및 수정이 가능합니다.(단, 라이선스 고지를 유지)
MobileNetV3 (Google): Apache License 2.0
본 프로젝트는 Google의 MobileNetV3 아키텍처를 기반으로 양 추정 모델 중 하나를 구현하였습니다.
MobileNetV3 역시 Apache License 2.0을 따릅니다.
※ Apache 2.0 라이선스는 상업적 사용과 수정이 자유롭고, 소스코드 공개 의무는 없습니다. (단, 라이선스 고지를 유지)
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|
| 구민지 | 김효정 | 신지윤 | 최우진 |
| Leader / 양추정 모델 (MobileNetV3) | 양추정 모델 (EfficientNet) | 음식 분류 모델(YoloV8) | 음식 분류 모델(YoloV8) |
| @dreaminji99 | @rb37lu71 | @Yoon0221 | @woojin-devv |






