Skip to content

업로드한 음식 사진을 종류와 양에 따라 영양 성분을 분석하고 김치로 환산하는 웹 서비스

Notifications You must be signed in to change notification settings

JadeKim042386/final-project-level3-cv-18

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

최종 프로젝트 : Do You Know Kimchi?

Project 개요

업로드한 음식 사진을 종류와 양에 따라 영양 성분을 분석하고 김치로 환산하는 웹 서비스

  • Input : 한식 음식 이미지
  • Output : 음식 영양, 양 정보

Data

  • 총 12개의 대분류
  • 총 339개의 소분류

식품의약품안전처 식품영양성분 데이터베이스

  • 음식별 1회 제공량 / 탄수화물 / 단백질 / 지방 / 당 함량 정보 custom

Evaluation

Detection

  • Food Detection mAP: 0.917

Classification (Recall)

  • 양 추정 모델 val/acc: 0.9312

  • 대분류 모델 val/acc: 0.9474

  • 소분류 모델 각 소분류의 수가 많아서 평균 accuracy로 기입

    분류 val/acc 분류 val/acc
    deopbab 0.9612 noodle 0.9283
    dumpling 0.9568 rice 0.9084
    fried 0.9229 seafood 0.9447
    herb 0.9528 stew 0.922
    kimchi 0.9402 sushi 0.9461
    meat 0.9129 vegetable 0.9652

Model

YOLO v5 - small

  • Detect 모델: 음식의 접시 기준으로 Bbox를 표시합니다.

EfficientNet B0

  • Classification 모델
    • 대분류 모델: 각 음식의 대분류를 예측합니다.
    • 양 추정 모델: 음식의 양을 1~5로 분류합니다.
    • 소분류 모델: 각 음식의 소분류를 예측합니다.

Structure

.
├── README.md
├── classification
│   ├── requirements.txt
│   ├── data
│   ├── custom.csv
│   ├── dataset.py
│   ├── model.py
│   ├── train.py
│   ├── inference.ipynb
│   └── inference_with_torch_script.ipynb
├── detection
│   └── yolov5
│       ├── utils
│       ├── requirements.txt
│       ├── val.py
│       ├── train.py
│       └── visualization.ipynb
├── intermediate
│   ├── Link.ipynb
│   ├── datasheet.csv
│   └── model.py
├── quantity_est
│   ├── dataset.py
│   ├── model.py
│   ├── train.py
│   └── inference.ipynb
├── prototype
│   ├── app
│   │   ├── models
│   │   ├── Makefile
│   │   ├── __main__.py
│   │   ├── frontend.py
│   │   ├── main.py
│   │   ├── model.py
│   │   ├── predict.py
│   │   ├── requirements.txt
│   │   └── utils.py
│   └── assets
│       ├── config.yaml
│       ├── Food_info.csv
│       ├── 김치맨1.jpg
│       ├── 김치맨2.png
│       ├── headerbg.jpg
│       └── NanumSquareB.ttf
└── tools
    ├── interactive_EDA.ipynb
    ├── mean_std.ipynb
    ├── resize_and_write_pool.py
    ├── sampling.py
    ├── sampling2.py
    └── split_test_set.py

Service

How to Use

키, 몸무게, 활동지수를 입력하면 권장 칼로리가 출력됩니다. 이후 원하는 칼로리 범위와 탄수화물, 단백질, 지방의 비율을 설정하실 수 있습니다.

Choose an image 탭에 자신의 식단 사진을 업로드 하면 모델이 음식의 종류와 영양성분을 추정해서 출력합니다.

마지막으로 당신이 먹은 음식이 몇 김치인지 이미지로 나타납니다. 음식의 칼로리가 과도하게 많거나 적으면 멈춰 김치맨이 출력되고 적절하면 발차기 김치맨이 출력됩니다.

Result

Quick Start

가상환경에서 실행 시키시는걸 추천합니다.

  1. Makefile 설치
  2. Packages
pip install -r requirements.txt
  1. 현재 위치 변경
cd {clone directory}/final-project-level3-cv-17/prototype/app
  1. 실행
make -j 2 app_run

Members

김주영
오현세
채유리
배상우
최세화
송정현
0 1 1 1 1 1

About

업로드한 음식 사진을 종류와 양에 따라 영양 성분을 분석하고 김치로 환산하는 웹 서비스

Resources

Stars

Watchers

Forks

Languages

  • Jupyter Notebook 90.2%
  • Python 9.7%
  • Other 0.1%