TAZKIA DAMAYANTI
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.
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, X 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
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.
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
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
a. Front End
Fitur Food Classification
Fitur Recommendation Food
Fitur Chatbot
b. Back End
Fitur Food Classification
Fitur Recommendation Food
Fitur Chatbot
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 :