NUTRIMATE: Aplikasi Gizi dan Rekomendasi Makanan

TAZKIA DAMAYANTI

Sosial Media


4 orang menyukai ini
Suka

Summary

Indonesia sebagai negara dengan kekayaan kuliner yang sangat beragam, masyarakat seringkali memilih makanan berdasarkan preferensi rasa tanpa memperhatikan nilai gizi yang terkandung di dalamnya. Kurangnya pemahaman tentang pola makan seimbang dan ketidakpastian terhadap nilai gizi makanan lokal juga menjadi kendala dalam memastikan masyarakat mengonsumsi makanan yang sesuai dengan kebutuhan nutrisi. NutriMate hadir sebagai aplikasi inovatif yang menggabungkan edukasi nutrisi, pemilihan makanan sehat, dan teknologi klasifikasi citra untuk membantu masyarakat Indonesia mengatasi masalah kesehatan terkait gizi. 

Dengan bantuan algoritma Convolutional Neural Network dan konsep Collaborative Filtering, NutriMate memberikan informasi nutrisi dan rekomendasi menu yang sesuai dengan kebutuhan gizi dan tujuan kesehatan pengguna. Melalui platform Streamlit, NutriMate juga memungkinkan pengguna untuk dengan mudah mengakses informasi tentang makanan serta rekomendasi menu yang disesuaikan dengan kebutuhan mereka. Selain itu, NutriMate juga memperkenalkan fitur chatbot yang menggunakan model Large Language Model (LLM) dari Google PaLM, memberikan solusi praktis dalam menciptakan hidangan sehat yang sesuai dengan selera dan kebutuhan gizi pengguna. Dengan demikian, NutriMate menjadi alat yang sangat berguna bagi masyarakat Indonesia dalam mengadopsi pola makan yang lebih sehat dan sesuai dengan kebutuhan gizi mereka.

Description

A. Model

Indonesia sebagai negara dengan kekayaan kuliner yang sangat beragam, masyarakat seringkali memilih makanan berdasarkan preferensi rasa tanpa memperhatikan nilai gizi yang terkandung di dalamnya. Kurangnya pemahaman tentang pola makan seimbang dan ketidakpastian terhadap nilai gizi makanan lokal juga menjadi kendala dalam memastikan masyarakat mengonsumsi makanan yang sesuai dengan kebutuhan nutrisi. NutriMate hadir sebagai aplikasi inovatif yang menggabungkan edukasi nutrisi, pemilihan makanan sehat, dan teknologi klasifikasi citra untuk membantu masyarakat Indonesia mengatasi masalah kesehatan terkait gizi. 

Pada project capstone yang kami buat, dengan bantuan algoritma Convolutional Neural Network dan konsep Collaborative Filtering, NutriMate memberikan informasi nutrisi dan rekomendasi menu yang sesuai dengan kebutuhan gizi dan tujuan kesehatan pengguna. Melalui platform Streamlit, NutriMate juga memungkinkan pengguna untuk dengan mudah mengakses informasi tentang makanan serta rekomendasi menu yang disesuaikan dengan kebutuhan mereka. Selain itu, NutriMate juga memperkenalkan fitur chatbot yang menggunakan model Large Language Model (LLM) dari Google PaLM, memberikan solusi praktis dalam menciptakan hidangan sehat yang sesuai dengan selera dan kebutuhan gizi pengguna. 

Model rekomendasi dikembangkan dengan menggunakan algoritma collaborative filtering yang dimana model rekomendasi akan memprediksi rating dari pengguna baru berdasarkan penilaian dari pengguna lainnya. Prinsip kerja dari algoritma ini mirip dengan neural network yaitu dengan memanfaatkan persamaan y = W * X  + b dengan vektor W adalah vektor bobot,  merupakan vector user dan b merupakan bias. Tak sampai disitu, kami pun menambahkan dense layer dengan tujuan untuk memberikan akurasi yang lebih baik ketika model melakukan prediksi rating terhadap user / pengguna baru sehingga rekomendasi yang diberikan akan lebih relevan.

Recommendation Model

Dalam pengembangan fitur chatbot, kami menggunakan salah satu model dari Large Language Models (LLM) yaitu Google PaLM (Pathways Language Model). Google PaLM adalah model bahasa canggih yang dikembangkan oleh Google Research, dirancang untuk memahami dan menghasilkan teks dalam bahasa alami dengan tingkat akurasi dan kemampuan yang sangat tinggi. Dalam pembuatan fitur chatbot ini, kami memanfaatkan API yang menghubungkan langsung ke server Google untuk mendapatkan teks yang dihasilkan sebagai jawaban atas pertanyaan pengguna.

Chatbot Feature

Model deep learning pada fitur klasifikasi gambar menggunakan pretrain model yaitu MobileNetV2 yang dimana model deep learning tersebut dipilih karena computation cost yang termasuk rendah namun dengan akurasi yang dihasilkan yang tinggi. Hal ini membuat aplikasi ketika dijalankan akan terasa lebih cepat dalam memberikan respon. 

Classification Feature

B. Deployment

Guna menghadirkan model ke dalam bentuk aplikasi web yang dapat diakses dan digunakan dengan mudah, kami memilih streamlit sebagai platform deployment Di bawah ini akan ditampilkan rincian deployment.

a. Front End

Pada sisi front end, tampilan utama dari web akan berada pada file app.py. Pada file tersebut terdapat beberapa tampilan menu seperti menu home, NutriChat (Chatbot) dan  halaman rekomendasi (recommendation page).  Di halaman ini juga akan menampilkan mengenai informasi aplikasi seperti fitur, latar belakang pembuatan dan akan disediakan sidebar yang dapat mempermudah user dalam melakukan navigasi.

app.py sebagai halaman utama

Halaman recommendation page merupakan halaman yang akan menampilkan hasil rekomendasi dari sistem rekomendasi yang sudah dirancang sebelumnya.  Tak hanya rekomendasi makanan, kami juga memberikan informasi  tambahan berupa gizi dari makanan tersebut seperti lemak, protein,  karbohidrat dan energi. Untuk memberikan impact yang lebih besar, kami pun menyediakan fitur food labelling dengan memberikan label pada makanan yang direkomendasikan apakah termasuk ke dalam high energy, high protein maupun high fat. Hal ini tentunya akan memberikan wawasan mengenai pentingnya asupan gizi makanan kepada pengguna nantinya. 

Recommendation Page

Halaman NutriChat (chatbot) merupakan halaman yang menyediakan fitur chatbot pada aplikasi yang dimana user bisa menginputkan pertanyaan seputar dunia kuliner. Tak hanya itu, dengan menggunakan API, proses generate text akan lebih cepat sehingga user tidak perlu menunggu lama atas pertanyaan yang diajukan.

Chatbot Page

b. Back End

Code ini merupakan proses dimana model klasifikasi gambar akan di load dan kemudian gambar yang dimasukan oleh user kemudian akan melalui proses encoding ke dalam bentuk tensor serta ukuran gambar akan disesuaikan menjadi 150 x 150.  Setelah itu gambar kemudian akan diklasifikasikan oleh model deep learning dan akan mengembalikan output prediksi kelas berupa json. 

Load Model Image Classification 


Dalam fitur rekomendasi, khususnya di sisi backend, model rekomendasi yang telah dilatih sebelumnya akan dimuat, kemudian dataset yang berisi daftar makanan, tautan gambar, dan informasi nutrisi akan dibaca menggunakan library pandas. Selanjutnya, model akan memprediksi rating dari ID pengguna yang baru dan mengonversi ID makanan menjadi nama makanan yang sesuai dengan dataset daftar makanan. Output dari fungsi recommendation_for_specific_user adalah hasil rekomendasi model dalam bentuk JSON. Setelah itu, hasil rekomendasi akan melalui tahap penyaringan, di mana rekomendasi tersebut akan diperiksa kandungan nutrisinya, seperti protein, karbohidrat, lemak, dan energi. Jika memenuhi ambang batas yang ditentukan, makanan tersebut akan diberi label sesuai dengan kandungan gizinya.

Recommendation Page backend

C. Deskripsi dan Alur Kerja

a. Front End

Fitur Food Classification

  • User menginputkan gambar ke dalam home page pada bagian upload image file
  • Model melakukan proses klasifikasi pada bagian backend
  • Setelah selesai dilakukan klasifikasi, maka akan ditampilkan deskripsi lengkap  dan nutrisi dari gambar makanan yang sudah dimasukan pengguna. 

Fitur Recommendation Food

  • User beralih  ke menu recommendation page
  • Proses rekomendasi dari sisi backend
  • Kemudian tampilkan gambar, informasi gizi serta label dari masing masing makanan yang direkomendasikan. Pada menu ini setiap baris akan terdiri dari 4 kolom makanan yang direkomendasikan

Fitur Chatbot

  • User beralih ke menu NutriChat
  • User menginputkan pertanyaan 
  • Setelah itu akan dihasilkan paragraf jawaban dari pertanyaan yang ditanyakan oleh pengguna

b. Back End

Fitur Food Classification

  • Backend code akan load data model food classifier
  • Foto yang dimasukan oleh user akan di convert ke dalam tipe data tensor
  • Kemudian foto akan disesuaikan ukurannya menjadi 150 x 150 
  • Setelah itu akan dilakukan klasifikasi dan melakukan return berupa json

Fitur Recommendation Food

  • Backend code akan load data model recommendation 
  • Load data list makanan, description dan image link 
  • Lakukan prediksi rating dari user baru di setiap list makanan
  • Urutkan index list makanan yang merupakan rekomendasi 
  • Kemudian return  list makanan yang direkomendasikan
  • Convert dari index makanan ke nama makanan kemudian dapatkan data nutrisi dari makanan tersebut beserta image link 
  • Masuk ke tahap filtering function (get_final_recomendation) 
  • Lakukan labelling dari setiap makananan yang sudah direkomendasikan
  • Kemudian return list makanan yang sudah direkomendasikan beserta informasi gizi dan labelnya

Fitur Chatbot

  • Backend akan menghubungi model melalui API 
  • Setelah itu mendapatkan jawaban dari pertanyaan yang ditanyakan pengguna

D. Hasil

Hasil Menu Klasifikasi Gambar

Hasil Rekomendasi Menu

Hasil Menu NutriChat (Chatbot)

 

Live Demo App : https://www.youtube.com/watch?v=JXUk5gvFV6k

Repository : https://github.com/TeddyDharma/Food-Recommender

NutriMate Team :

  • Tazkia Damayanti
  • Yosabad Torando Sirait
  • Senela Avriani Difa
  • I Putu Teddy Dharma Wijaya
  • Amalia Nur Ramadhani

Informasi Course Terkait
  Kategori: Data Science / Big Data
  Course: Deep Learning dengan TensorFlow