Identification of Corn Leaf Diseases Using Machine Learning Technology
Proyek ini bertujuan untuk mengembangkan sistem deteksi penyakit tanaman jagung melalui citra daun menggunakan Convolutional Neural Network (CNN) dan Model Transfer Learning DenseNet121. Dengan pendekatan ini, petani dapat:
- Mendeteksi penyakit daun jagung secara otomatis dan cepat.
- Meningkatkan efisiensi serta akurasi dalam diagnosis penyakit di lapangan.
Berikut adalah hasil prediksi dari sistem yang telah dikembangkan. Sistem ini mampu mengidentifikasi penyakit daun jagung dengan akurasi tinggi, memberikan diagnosa cepat secara real-time.
Penelitian ini bertujuan untuk:
- 🌱 Mengembangkan metode deteksi penyakit tanaman jagung melalui citra daun menggunakan Jupyter Notebook (IPython Notebook) sebagai platform pemrosesan data dan pengembangan model.
- 🔍 Menguji dan membandingkan akurasi model Convolutional Neural Network (CNN) dan Transfer Learning DenseNet121 untuk mendapatkan kinerja terbaik.
- 🚀 Mengimplementasikan model terbaik pada sistem deteksi penyakit berbasis citra menggunakan teknologi machine learning.
Sistem ini dirancang untuk memprediksi penyakit melalui antarmuka web yang dibangun menggunakan Flask, sebuah microframework berbasis Python. Pendekatan ini memungkinkan integrasi yang mulus dan pengujian model secara fleksibel serta efisien.
Dataset pada penelitian ini diperoleh melalui survei langsung dan observasi di ladang jagung masyarakat, menghasilkan:
- 🖼️ 5,368 gambar dan 🎥 10 video daun jagung.
- Data diklasifikasikan ke dalam 4 kelas:
- 🍂 Hawar Daun (Blight).
- 🍃 Bercak Daun (Leaf Spot).
- 🌾 Karat (Rust).
- 🌿 Sehat (Healthy).
- 🔎 Deteksi Penyakit Daun Jagung:
Identifikasi penyakit seperti Hawar Daun, Bercak Daun, dan Karat. - 🖼️ Pemrosesan Citra:
Melakukan augmentasi data untuk memperkaya dataset dan mencegah overfitting. - 🤖 Model Machine Learning:
- Convolutional Neural Network (CNN)
- Transfer Learning DenseNet121
- 🎛️ Hyperparameter Tuning:
Menyesuaikan parameter untuk optimasi kinerja model. - 📈 Evaluasi Model:
Menggunakan metrik seperti precision, recall, F1-score, dan confusion matrix. - 📊 Visualisasi Kinerja Model:
Menyediakan insight dari hasil analisis dataset. - 🎯 Prediksi Akurat:
Melakukan prediksi terhadap gambar uji dengan model yang telah dilatih.
Untuk memastikan gambar dalam format yang sesuai dan meningkatkan akurasi model, kami menggunakan Roboflow dan OpenCV untuk melakukan preprocessing serta augmentasi gambar secara otomatis. Berikut adalah teknik yang diterapkan:
Proses preprocessing bertujuan untuk menyiapkan gambar dengan format yang optimal. Teknik yang digunakan meliputi:
-
Auto-Orient
Menyesuaikan orientasi gambar agar tidak terbalik. -
Static Crop
Memotong gambar untuk memperkecil fokus:- Horizontal Region: Memotong 25%-75% bagian horizontal.
- Vertical Region: Memotong 27%-75% bagian vertikal.
-
Resize
Mengubah ukuran gambar menjadi 640x640 piksel agar konsisten dengan input model.
Augmentasi digunakan untuk memperkaya variasi dataset dan mengurangi risiko overfitting. Teknik yang diterapkan meliputi:
Teknik Augmentasi
-
Outputs per Training Example
- Menghasilkan 3 output gambar untuk setiap gambar dalam dataset.
-
Flip Horizontal
- Membalik gambar secara horizontal untuk menambah variasi orientasi.
-
Grayscale
- Menerapkan filter grayscale pada 15% gambar untuk menangkap pola warna yang netral.
-
Hue
- Menyesuaikan hue dalam rentang -25° hingga +25°.
-
Saturation
- Mengubah saturasi warna dalam rentang -25% hingga +25%.
-
Brightness
- Menyesuaikan kecerahan gambar dalam rentang -25% hingga +25%.
-
Exposure
- Mengatur exposure dalam rentang -12% hingga +12%.
-
Crop
- Melakukan pemotongan acak untuk menghasilkan variasi gambar.
-
Rotasi 90 Derajat
- Memutar gambar sebesar 90° untuk meningkatkan orientasi data.
-
Histogram Equalization & Median Filtering
- Teknik ini digunakan untuk meningkatkan kualitas visual gambar.
Dengan preprocessing dan augmentasi yang cermat:
- Dataset menjadi lebih kaya dan beragam.
- Model menjadi lebih tahan terhadap overfitting dan memiliki generalizability yang lebih baik.
- Variasi gambar membantu model mengenali pola dari berbagai kondisi cahaya, warna, dan orientasi.
Tahap visualisasi dilakukan untuk memberikan gambaran mengenai kelas-kelas yang ada dalam dataset. Hal ini bertujuan untuk memastikan distribusi data yang seimbang dan memahami karakteristik visual dari setiap kelas. Berikut adalah contoh gambar dari dataset:
Pada tahap ini, kami menerapkan Canny Edge Detection untuk memvisualisasikan tepi (edges) pada gambar daun jagung. Teknik ini membantu mengidentifikasi fitur penting pada gambar, sehingga model dapat lebih fokus pada elemen yang relevan untuk klasifikasi.
Contoh hasil Canny Edge Detection:
-
Visualisasi Gambar Dataset:
- Memberikan pemahaman mendalam tentang karakteristik visual dari setiap kelas.
- Membantu dalam proses analisis awal dan validasi dataset.
-
Canny Edge Detection:
- Membantu model dalam mengenali pola tepi yang signifikan pada gambar.
- Meminimalkan gangguan dari fitur yang tidak relevan.
Dengan teknik visualisasi ini, proses pelatihan model menjadi lebih efisien karena fokus pada elemen penting yang mendukung akurasi klasifikasi.
class_labels = {0: 'Bercak', 1: 'Hawar', 2: 'Karat', 3: 'Sehat'}
Identifikasi Jenis Penyakit Tanaman pada Daun Jagung
Arsitektur model CNN kustom dirancang untuk mengenali pola unik pada citra daun jagung, seperti tekstur, warna, dan tepi. Model ini dirancang khusus untuk kasus identifikasi penyakit pada daun jagung, dengan lapisan konvolusi dan pooling yang dioptimalkan untuk performa tinggi.
Identifikasi Jenis Penyakit Tanaman pada Daun Jagung
Model DenseNet121 menggunakan pendekatan transfer learning, memanfaatkan bobot awal yang telah dilatih pada dataset besar untuk meningkatkan akurasi dan efisiensi pelatihan. Arsitektur ini memungkinkan pendeteksian pola kompleks dengan lapisan dense yang saling terhubung.
*Visualisasi lengkap arsitektur model DenseNet121 dapat ditemukan dalam kode pada file app.ipynb.*
Model dievaluasi dengan data validasi untuk mengukur loss dan accuracy. Ini memberikan gambaran tentang kinerja model pada data yang tidak terlihat sebelumnya:
Confusion Matrix digunakan untuk mengukur prediksi model vs label sebenarnya, memberikan wawasan lebih mendalam tentang kesalahan klasifikasi. -> Menghitung Confusion Matrix untuk menilai distribusi prediksi, Menampilkan Classification Report yang mencakup Precision, Recall, dan F1-Score, Menampilkan hasil precision, recall, dan f1-score.
- Plot Loss: Menampilkan perbandingan antara Training Loss dan Validation Loss.
- Plot Akurasi: Menampilkan perbandingan antara Training Accuracy dan Validation Accuracy.
- Interpretasi: Mengamati apakah ada perbedaan signifikan antara akurasi pelatihan dan validasi yang menunjukkan overfitting atau underfitting.
Algoritma CNN-Kostum berhasil mencapai akurasi 98% dengan loss 0,16, menunjukkan kemampuan mempelajari pola secara optimal tanpa overfitting. Sebagai pembanding, DenseNet121 mencapai akurasi 97,7% dengan waktu pelatihan lebih lama, mengindikasikan keunggulan dalam jaringan yang lebih kompleks.
Tuning hyperparameter, termasuk learning rate 0,0001, batch size 32, dan 50 epoch, memberikan kontribusi signifikan terhadap peningkatan performa model. Dataset diproses melalui normalisasi, resize, dan augmentasi, yang efektif meningkatkan generalisasi model terhadap variasi data. Pembagian data menjadi 80% latih dan 20% uji memastikan evaluasi yang adil dan bebas bias.
Hasil menunjukkan bahwa kombinasi preprocessing, arsitektur CNN-Kostum, dan optimisasi hyperparameter mampu memberikan performa optimal. Meski DenseNet121 menawarkan akurasi lebih tinggi, CNN-Kostum unggul dalam efisiensi waktu pelatihan, menjadikannya solusi praktis untuk implementasi dalam teknologi pertanian.
Melakukan prediksi terhadap satu gambar baru menggunakan model yang telah dilatih dan visualisasikan hasil prediksi dengan label kelasnya:
Model CNN dan DenseNet121 telah menunjukkan potensi yang sangat baik dalam mendeteksi penyakit daun jagung dengan tingkat akurasi yang memadai. Penelitian ini membuka jalan untuk pengembangan sistem deteksi otomatis berbasis AI dalam pertanian untuk mempermudah dan mempercepat diagnosis penyakit tanaman jagung.
- Buka terminal atau command prompt.
- Clone repository dengan perintah:
git clone https://github.com/sionpardosi/CornLeaf-Disease-Identification-Using-Machine-Learning.git
Atau, unduh proyek dalam format ZIP melalui tombol "Code" di halaman GitHub dan ekstrak file ke direktori yang diinginkan.
- Masuk ke direktori proyek:
cd CornLeaf-Disease-Identification-Using-Machine-Learning
Unduh dataset yang diperlukan dengan menggunakan Roboflow dari folder Dataset/ : tautan GitHub.
Model yang dilatih sudah disimpan, sehingga tidak perlu melakukan pelatihan data lagi. Anda dapat mencoba memakai model berikut:
- Model_CNN_256px.keras
- Model_CNN_128px.keras
- Model_denseNet121_256px.keras
- Model_denseNet121_128px.keras
Pastikan Anda memiliki salah satu dari platform berikut untuk menjalankan model:
- Jupyter Notebook: Jalankan file
.ipynb
langsung di Jupyter Notebook. - Google Colab: Jika Anda lebih suka menggunakan Google Colab, Anda dapat mengunggah file
.ipynb
ke Google Colab dan menjalankannya di sana. - Visual Studio Code (VS Code): Pastikan Anda telah menginstal Visual Studio Code dan menambahkan Jupyter Extension. Untuk menjalankan notebook
.ipynb
di VS Code, pastikan Anda memiliki virtual environment denganipykernel
yang terinstal.
-
Buka Kode app.ipynb
-
Import Libraries and Modules: Pastikan untuk menjalankan import semua libraries dan modul yang diperlukan di dalam kode.
-
Jalankan Arsitektur Model CNN: Lakukan inisialisasi dan definisi arsitektur model CNN seperti yang ada dalam kode.
-
Jalankan Load Model yang Sudah Disimpan: Karena epoch model sudah disimpan, gunakan kode berikut untuk memuat model yang telah disimpan di folder sehingga tidak perlu melakukan pelatihan (Epoch) ulang :
model/model2.keras
danmodel2.h5
-
Lakukan Percobaan Accuracy: Setelah model dimuat, jalankan perintah kode yang sudah ada untuk menguji akurasi model dengan dataset yang ada.
-
Uji Evaluasi dan Performance: Jalankan kode uji untuk melihat hasil evaluasi dan performa model menggunakan dataset pengujian.
-
Prediksi Gambar: Untuk melihat hasil prediksi pada gambar tertentu, sesuaikan path gambar yang ingin Anda prediksi:
img_path = 'Testing/test.jpg' # Ganti dengan path gambar
python app.py
Setelah aplikasi Flask berjalan, buka browser dan akses: http://127.0.0.1:5000/
Aplikasi ini akan memungkinkan Anda untuk mengupload gambar daun jagung dan melihat hasil prediksi jenis penyakit.
We are very open to contributions and feedback from the community. For more information or any questions, feel free to contact us via spardosi12@gmail.com or connect with me on LinkedIn.
This project is licensed under the MIT License.