Selamat datang di repository Machine Learning dari Tim Foodinary! Dalam Proyek Capstone ini, tim Machine Learning kami berfokus pada pengembangan model deep learning yang canggih untuk mengklasifikasikan gambar berbagai makanan tradisional khas Indonesia.
Indonesia dianugerahi kekayaan kuliner yang sangat beragam dan mengagumkan. Namun, kami menyadari adanya tantangan dalam mengenali atau mengetahui nama makanan tertentu, baik bagi wisatawan maupun masyarakat lokal dari daerah lain. Oleh karena itu, kami mengembangkan model klasifikasi gambar ini sebagai salah satu komponen inti dari solusi "Foodinary", yang bertujuan untuk membantu pengguna mengidentifikasi makanan tradisional Indonesia secara mudah melalui gambar.
Dataset yang kami gunakan dalam proyek ini adalah kumpulan gambar makanan tradisional Indonesia. Kami telah mengumpulkan dan melabeli gambar-gambar ini secara saksama untuk memastikan kualitas data yang baik untuk pelatihan model.
- Link Dataset: Dataset lengkap dapat diunduh melalui link Google Drive berikut: Unduh Dataset Makanan Tradisional Indonesia - Foodinary
- Jumlah Kelas: Kami telah mengidentifikasi dan mengumpulkan data untuk 30 kelas makanan yang berbeda.
- Daftar Kelas Makanan:
ayam_bakarayam_goreng_bumbu_lengkuasayam_popbaksobebek_betutububur_ayamdaging_rendangdendeng_batokokgado_gadogudeggulai_ikangulai_tunjangkerak_telorkue_dadar_gulungkue_kleponkue_lemperkue_lumpurkue_serabilumpiamartabak_telurnasi_gorengonde_ondepempekrawonsatesototahu_gejrottelur_baladotelur_dadartempe_mendoan
Setelah mengunduh, dataset perlu diekstrak dan seluruh folder kelas makanan ditempatkan ke dalam direktori unprocessed_dataset/ di root proyek ini. Struktur yang diharapkan adalah sebagai berikut:
machine-learning/
├── unprocessed_dataset/
│ ├── ayam_bakar/
│ │ ├── gambar1.jpg
│ │ └── ...
│ ├── ayam_goreng_bumbu_lengkuas/
│ └── ...
├── assets/
├── model_food_classification.h5
├── model_capstone.ipynb
├── README.md
└── ...
Untuk tugas klasifikasi gambar makanan ini, kami memilih untuk mengembangkan model menggunakan arsitektur DenseNet-201. Kami memanfaatkan teknik transfer learning dengan menggunakan bobot awal yang telah dilatih pada dataset ImageNet. Pendekatan ini kami pilih untuk mempercepat proses konvergensi model dan meningkatkan performa generalisasinya. Implementasi model ini kami lakukan menggunakan framework TensorFlow dan Keras.
Berikut adalah gambaran umum struktur file dan folder utama yang kami gunakan dalam repository Machine Learning ini:
assets/: Direktori ini kami gunakan untuk menyimpan aset gambar pendukung fileREADME.md, seperti grafik accuracy (acc.png), loss (loss2.png) dan confusion matrix (cm.png).model_food_classification.h5: File model HDF5 versi perbaikan.unprocessed_dataset/: Direktori ini adalah tempat untuk meletakkan dataset gambar mentah setelah diunduh (direktori ini kami konfigurasikan untuk diabaikan oleh Git melalui.gitignore)..gitignore: File konfigurasi Git yang kami gunakan untuk menentukan file dan folder mana saja yang harus diabaikan dan tidak perlu dilacak (misalnyaunprocessed_dataset/,venv/,__pycache__/).model_capstone.ipynb: Notebook Jupyter utama kami. File ini mencakup seluruh alur kerja proyek Machine Learning kami, mulai dari pemuatan dan pemrosesan data, augmentasi gambar, perancangan arsitektur model (DenseNet-201), proses pelatihan, hingga evaluasi performa model secara komprehensif.README.md: File dokumentasi utama ini, yang menjelaskan proyek Machine Learning kami.requirements.txt: File ini kami sediakan untuk mencatat semua pustaka Python beserta versinya yang dibutuhkan agar proyek kami dapat berjalan dengan baik di lingkungan lain.
Untuk menjalankan kode dan melatih model dalam proyek kami, berikut langkah-langkah persiapan yang perlu diikuti:
-
Clone Repository: Lakukan clone repository ini ke mesin lokal:
git clone https://github.com/foodinary-project/machine-learning.git cd machine-learning -
Install Dependensi: Kami telah menyediakan file
requirements.txtyang berisi semua pustaka yang dibutuhkan. Instal menggunakan perintah:pip install -r requirements.txt
-
Unduh Dataset: Pastikan untuk mengunduh dataset dari link ini dan meletakkannya ke dalam folder
unprocessed_dataset/seperti yang telah kami jelaskan di bagian Dataset.
-
Buka Jupyter Notebook/Lab: Setelah semua dependensi terinstal dan dataset siap, jalankan Jupyter Notebook atau Jupyter Lab dari terminal:
jupyter lab # atau jupyter notebook -
Jalankan Notebook Utama (
model_capstone.ipynb): Buka filemodel_capstone.ipynb. Sel-sel di dalam notebook ini dapat dijalankan secara berurutan untuk melihat seluruh proses kerja kami, mulai dari preprocessing data, pelatihan model, hingga tahap evaluasi. -
Mencoba Prediksi: Di dalam notebook
model_capstone.ipynb, kami juga mungkin telah menyertakan fungsi atau sel kode untuk melakukan prediksi pada gambar baru. Silakan ikuti instruksi yang ada di dalam notebook tersebut untuk mencoba melakukan prediksi.
Berikut adalah beberapa hasil evaluasi yang kami peroleh dari model DenseNet-201 yang telah kami latih:
Grafik di bawah ini menunjukkan bagaimana metrik akurasi dan Accuracy model kami berubah selama proses pelatihan, baik pada data training maupun data validasi.

Grafik di bawah ini menunjukkan bagaimana metrik akurasi dan loss model kami berubah selama proses pelatihan, baik pada data training maupun data validasi.

Confusion matrix di bawah ini menggambarkan secara detail performa klasifikasi model kami pada set data validasi untuk setiap kelas makanan.

Dari confusion matrix ini, dapat kami amati seberapa baik model kami dalam membedakan antar kelas, serta mengidentifikasi kelas-kelas makanan mana saja yang mungkin masih sering tertukar oleh model.
Kami berharap README ini memberikan gambaran yang jelas mengenai proyek Machine Learning yang kami kerjakan untuk Foodinary. Untuk pertanyaan, diskusi, atau masukan lebih lanjut, silakan buat issue di repository ini atau hubungi tim kami. Terima kasih!