NutritionCalculate-ComputerVision adalah sebuah aplikasi mobile berbasis Computer Vision yang dirancang untuk membantu pengguna menghitung bobot makanan yang ada di piring mereka. Pengguna hanya perlu memfoto piring yang berisi makanan, dan aplikasi akan mengenali jenis-jenis lauk-pauk yang ada di piring serta menghitung bobot masing-masing makanan secara otomatis.
Aplikasi ini sangat berguna bagi mereka yang ingin memantau asupan nutrisi, menjaga pola makan, atau menghitung jumlah kalori dengan akurat.
- Food Recognition: Menggunakan teknologi Computer Vision untuk mengenali berbagai jenis makanan pada piring pengguna.
- Weight Estimation: Menghitung bobot masing-masing makanan berdasarkan analisis gambar.
- Nutritional Information: Memberikan perkiraan jumlah kalori dan informasi nutrisi untuk setiap jenis makanan.
- User-Friendly Interface: Antarmuka sederhana yang memungkinkan pengguna untuk dengan mudah mengambil foto dan mendapatkan hasil cepat.
- Take a Photo: Pengguna mengambil foto piring yang berisi makanan menggunakan kamera ponsel.
- Food Identification: Algoritma Computer Vision menganalisis gambar untuk mengenali berbagai jenis lauk-pauk yang ada di piring.
- Weight Calculation: Berdasarkan pengenalan visual dan model machine learning, aplikasi memperkirakan bobot makanan.
- Nutritional Analysis: Aplikasi memberikan data nutrisi seperti jumlah kalori dan komposisi makronutrien untuk setiap makanan yang terdeteksi.
- Mobile Framework: React Native / Flutter (untuk pengembangan aplikasi mobile)
- Computer Vision: OpenCV, TensorFlow, atau PyTorch (untuk pengenalan makanan)
- Backend: Node.js dengan API Restful untuk komunikasi data antara aplikasi dan server
- Database: MongoDB / PostgreSQL untuk menyimpan data nutrisi dan hasil analisis
- Machine Learning Models: Pre-trained models untuk deteksi makanan dan perkiraan berat
Untuk membuat aplikasi seperti yang kamu rencanakan, ada beberapa teknologi dan metode dari computer vision yang dapat digunakan. Berikut adalah langkah-langkah dan komponen yang bisa membantu dalam pengembangan aplikasi tersebut:
- Kamu dapat menggunakan model object detection untuk mengenali berbagai jenis makanan pada piring. Framework yang bisa digunakan antara lain TensorFlow, PyTorch, atau Google ML Kit untuk mobile.
- Model seperti YOLO (You Only Look Once) atau Faster R-CNN dapat dilatih untuk mendeteksi dan mengklasifikasikan berbagai lauk-pauk seperti ayam, ikan, sayur, dan lainnya.
- Dengan image segmentation, kamu dapat memisahkan setiap makanan pada piring secara lebih tepat. Model seperti Mask R-CNN bisa digunakan untuk memisahkan tiap objek sehingga dapat menghitung ukuran atau luas dari makanan secara lebih akurat.
- Setelah objek makanan dikenali, kamu bisa mengkombinasikan estimasi ukuran atau volume dari makanan tersebut dengan database nutrisi yang mencakup informasi tentang berat per volume jenis makanan.
- Sebagai contoh, untuk memperkirakan berat nasi, volume nasi di gambar bisa dikalkulasi dan dikalikan dengan densitas atau berat rata-rata per unit volume.
- Menggunakan teknik depth estimation juga bisa membantu untuk memperkirakan volume makanan berdasarkan ukurannya dalam gambar 2D.
- Untuk meningkatkan akurasi deteksi lauk-pauk, kamu akan memerlukan dataset makanan yang cukup besar untuk melatih model. Kamu bisa menggunakan dataset makanan yang sudah ada, atau mengumpulkan data dari berbagai gambar makanan di internet dan kemudian melabelinya secara manual.
- Setelah itu, model object detection dan segmentation bisa dilatih dengan data yang telah disediakan.
- Untuk membuat aplikasi berbasis ponsel, kamu bisa menggunakan TensorFlow Lite atau Google ML Kit untuk menjalankan model computer vision di perangkat mobile. Ini memungkinkan kamu untuk membuat aplikasi dengan deteksi makanan secara real-time di ponsel.
- Menghitung bobot atau berat makanan juga memerlukan penyesuaian kamera, karena gambar 2D tidak bisa langsung memberikan informasi tentang volume atau berat tanpa referensi.
- Kamu bisa menggunakan referensi ukuran seperti coin calibration atau fiducial markers pada piring untuk memperkirakan skala objek.
- Clone the repository:
git clone https://github.com/username/NutritionCalculate-ComputerVision.git
This project utilizes object detection techniques (YOLOv5 or SSD) to detect rice in a plate from an image and predict its weight. The model detects the rice as an object, calculates the bounding box area, and maps it to the weight using a regression model.
- Introduction
- Technology Stack
- Project Structure
- Installation
- Dataset
- Training the Object Detection Model
- Weight Mapping with Regression
- Running the Model
- Results
- Contributing
- License
This project aims to estimate the weight of rice on a plate using computer vision. We use YOLOv5 (You Only Look Once) or SSD (Single Shot Detector) for object detection to localize the rice and then apply a regression model to map the bounding box size to the actual weight of rice in grams.
This solution is designed to work on any device with a standard camera, making it a flexible and accessible approach for users without the need for specialized sensors (such as depth cameras).
The project uses the following technologies:
- YOLOv5 for object detection, implemented with PyTorch.
- TensorFlow or SSD as an alternative object detection model.
- Scikit-learn for regression mapping from bounding box size to weight.
- OpenCV for image processing and bounding box measurements.
You need a dataset of rice images with labeled bounding boxes and corresponding weights. Each image should have a label file that defines the bounding box coordinates for the rice and the true weight in grams.
- You can create your own dataset by capturing images of rice in different quantities on plates.
- Use tools like LabelImg or Roboflow to annotate the images with bounding boxes around the rice.
The dataset structure should look like this:

Once the dataset is ready, you can train the YOLOv5 or SSD model to detect rice.
-
Train YOLOv5:
python yolov5/train.py --img 640 --batch 16 --epochs 50 --data data.yaml --weights yolov5s.pt
-
Train SSD: Follow the TensorFlow Object Detection API instructions for training SSD models.
Once the object detection model is trained and can accurately detect rice, we use regression to estimate the weight based on the bounding box size.
- Extract bounding box size from detected images.
- Train a regression model (e.g., Linear Regression, Random Forest) to map bounding box size to actual weight.