Proyek ini berfokus pada deteksi penyakit pada daun kelapa sawit menggunakan deep learning. Model yang telah dilatih kemudian disajikan melalui aplikasi FastAPI. Sebuah Dockerfile juga disediakan untuk kemudahan deployment.
DagsHub juga diintegrasikan ke dalam proyek ini untuk mencatat dan melacak pelatihan model, memungkinkan reproduktifitas dan kolaborasi yang lebih baik.
Berikut adalah penjelasan mengenai direktori dan file utama dalam repositori ini:
.dvc: Berisi file-file terkait DVC (Data Version Control) untuk mengelola dan melacak dataset.app: Direktori ini berisi kode aplikasi FastAPI yang bertanggung jawab untuk menyajikan model deep learning.data_tf: Direktori ini berisi model deep learning yang telah dipilih karena mendapatkan akurasi tertinggi, disimpan dalam format SavedModel.notebooks: Direktori ini menampung Jupyter Notebook, digunakan untuk eksperimen, pelatihan model, dan analisis data. Isi dari folder ini adalah:master-notebook.ipynb: Notebook utama yang mengkoordinasikan atau merangkum proses pelatihan dan evaluasi model.notebook.ipynb: Notebook tambahan untuk eksperimen atau eksplorasi data tertentu.requirements.txt: Daftar dependensi Python spesifik yang dibutuhkan untuk menjalankan notebook di dalam folder ini.upload-data-to-repository.ipynb: Notebook yang digunakan untuk mengunggah atau mengelola data ke dalam repositori, kemungkinan dengan DVC atau DagsHub.
.dockerignore: Menentukan file dan direktori yang harus diabaikan saat membangun image Docker..env: (Kemungkinan) Berisi variabel lingkungan untuk proyek, seperti kunci API atau pengaturan konfigurasi..gitattributes: Mengkonfigurasi atribut Git, berpotensi untuk menangani file besar dengan Git LFS..gitignore: Menentukan file dan direktori yang harus diabaikan oleh Git.Dockerfile: Mendefinisikan image Docker untuk aplikasi FastAPI, memungkinkan deployment dalam kontainer.README.md: File dokumentasi ini, menyediakan gambaran umum proyek.palm-disease-dataset.dvc: File DVC yang menunjuk ke dataset penyakit kelapa sawit.requirements.txt: Mencantumkan dependensi Python utama yang diperlukan untuk proyek.
Anda memiliki dua pilihan utama untuk menjalankan aplikasi FastAPI: menggunakan Uvicorn secara langsung atau membangun dan menjalankan image Docker.
-
Instal Dependensi: Pertama, pastikan Anda telah menginstal semua paket Python yang diperlukan.
pip install -r requirements.txt
-
Masuk ke Direktori
app:cd app -
Jalankan aplikasi FastAPI dengan Uvicorn: Dengan asumsi file aplikasi FastAPI utama Anda adalah
main.pydi dalam direktoriapp, Anda dapat menjalankannya menggunakan Uvicorn. Gantimaindengan nama instance aplikasi FastAPI Anda jika berbeda.uvicorn main:app --host 0.0.0.0 --port 8000 --reload
main:app: Mengacu pada objekappdi dalam filemain.py. Sesuaikanmainjika nama file Anda berbeda.--host 0.0.0.0: Membuat aplikasi dapat diakses dari semua antarmuka jaringan.--port 8000: Menentukan port tempat aplikasi akan berjalan.--reload: (Opsional, untuk pengembangan) Secara otomatis memuat ulang aplikasi saat perubahan kode terdeteksi.
Anda sekarang dapat mengakses dokumentasi API (Swagger UI) di
http://localhost:8000/docsdan dokumentasi alternatif (ReDoc) dihttp://localhost:8000/redoc.
Menggunakan Docker menyediakan lingkungan yang konsisten dan terisolasi untuk aplikasi Anda.
-
Bangun Image Docker: Dari direktori utama proyek (tempat
Dockerfileberada), bangun image Docker:docker build -t palm-disease-detector .-t palm-disease-detector: Memberi tag pada image dengan namapalm-disease-detector. Anda dapat memilih nama apa pun yang Anda inginkan..: Menentukan konteks build, yaitu direktori saat ini.
-
Jalankan Kontainer Docker: Setelah image dibangun, Anda dapat menjalankan kontainer darinya:
docker run -p 8000:8000 palm-disease-detector
-p 8000:8000: Memetakan port 8000 di mesin host Anda ke port 8000 di dalam kontainer Docker. Ini adalah port di mana aplikasi FastAPI akan diekspos.
Aplikasi FastAPI Anda sekarang akan berjalan di dalam kontainer Docker, dan Anda dapat mengaksesnya di
http://localhost:8000/docsatauhttp://localhost:8000/redoc.
Docker Hub
https://hub.docker.com/r/refanzzzz/palm-model-api
-
Model Deep Learning: Proyek ini menggunakan teknik deep learning untuk deteksi penyakit. Untuk pembuatan model, library utama yang digunakan adalah TensorFlow dan Keras. Pada proyek ini, telah dicoba untuk membuat 4 jenis model, yaitu:
- Arsitektur CNN Mandiri: Sebuah model Convolutional Neural Network (CNN) yang dibangun dari awal.
- MobileNetV2: Model transfer learning berdasarkan arsitektur MobileNetV2.
- ResNet50V2: Model transfer learning berdasarkan arsitektur ResNet50V2.
- Xception: Model transfer learning berdasarkan arsitektur Xception.
Model yang telah dilatih dan mendapatkan akurasi tertinggi dari keempat percobaan ini disimpan dalam format SavedModel di direktori
data_tf. -
Dataset: File
palm-disease-dataset.dvcmenunjukkan bahwa DVC digunakan untuk mengelola dataset penyakit kelapa sawit, memastikan kontrol versi dan reproduktifitas.
Proyek ini menggunakan DagsHub untuk manajemen eksperimen dan pelacakan model. Dengan DagsHub, Anda dapat:
- Melacak Parameter dan Metrik: Catat parameter pelatihan, metrik evaluasi (akurasi, loss, dll.), dan artefak model untuk setiap eksperimen.
- Version Control Model: DagsHub memungkinkan Anda untuk versioning model yang dilatih, sehingga Anda dapat dengan mudah kembali ke versi sebelumnya atau membandingkan kinerja model yang berbeda.
- Melihat Riwayat Eksperimen: Jelajahi riwayat pelatihan model Anda melalui antarmuka DagsHub.
Berikut ini adalah link untuk melihat riwayat pelatihan model
https://dagshub.com/refandasuryasaputra/CP-Laskar-AI-LAI25-RM112
- Jelajahi direktori
notebooksuntuk detail lebih lanjut tentang pelatihan dan evaluasi model, serta bagaimana data diunggah ke repositori. Anda dapat melihat bagaimana keempat jenis model (CNN Mandiri, MobileNetV2, ResNet50V2, Xception) dibangun dan dilatih di sana. - Lihat direktori
appuntuk memahami implementasi FastAPI dalam menyajikan model. - Manfaatkan
Dockerfileuntuk deployment yang mulus di lingkungan produksi. - Gunakan DagsHub untuk mengelola dan memantau eksperimen pelatihan model Anda secara efektif.