🐦 Bird Species Classification with CNN & Transfer Learning (EfficientNetB0) 📌 Deskripsi Proyek
Proyek ini merupakan implementasi Convolutional Neural Network (CNN) dengan pendekatan transfer learning menggunakan arsitektur EfficientNetB0 untuk mengklasifikasikan spesies burung hama pemakan biji-bijian pada lahan padi. Model dirancang untuk membedakan empat spesies utama (Lonchura leucogastroides, Lonchura maja, Lonchura punctulata, Passer montanus) serta satu kelas tambahan Unknown (burung non-pemakan biji).
Penelitian ini bertujuan mendukung sistem pertanian cerdas (smart farming) dalam mendeteksi spesies burung hama secara otomatis sehingga petani dapat mengambil tindakan pengendalian yang lebih efektif.
⚙️ Teknologi & Tools
Bahasa: Python 3.10+
Framework: TensorFlow / Keras
Notebook: Google Colaboratory (GPU runtime)
IDE tambahan: Visual Studio Code
Pustaka pendukung:
numpy, pandas, matplotlib, opencv-python
scikit-learn (untuk evaluasi & Stratified K-Fold CV)
tqdm (progress bar)
📂 Struktur Dataset
Dataset diperoleh dari eBird.org dan melalui proses cleaning, downsampling, dan labeling.
dataset/ │ ├── train/ # Data latih (70%) │ ├── Lonchura_leucogastroides/ │ ├── Lonchura_maja/ │ ├── Lonchura_punctulata/ │ ├── Passer_montanus/ │ └── Unknown/ │ └── test/ # Data uji (30%) ├── Lonchura_leucogastroides/ ├── Lonchura_maja/ ├── Lonchura_punctulata/ ├── Passer_montanus/ └── Unknown/
Ukuran citra diseragamkan ke 224×224 piksel RGB sesuai standar EfficientNet-B0.
🚀 Langkah Eksekusi
Clone repositori & masuk ke direktori proyek
git clone cd bird-cnn-classification
Install dependencies
pip install -r requirements.txt
Jalankan notebook Buka bird_classification_cnn_transfer_learning.ipynb di Google Colab atau Jupyter Notebook, lalu jalankan sel satu per satu.
Pelatihan model
Backbone: EfficientNetB0 (pre-trained on ImageNet)
Head klasifikasi: GlobalAveragePooling → Dropout → Dense(256, relu) → Dropout → Dense(5, softmax)
Optimizer: Adam (lr=1e-4)
Loss: Categorical Crossentropy + Label Smoothing (0.05)
Epochs: 30 (early stopping di epoch ke-24)
Evaluasi
Confusion Matrix & Classification Report
Stratified K-Fold Cross Validation (k=5)
Metrik utama: Accuracy, Precision, Recall, F1-score
📊 Hasil Utama
Akurasi Training: 93.45% (epoch ke-14)
Akurasi Validasi: 81.51%
Akurasi Uji (Hold-out): ±82%
Precision & Recall terbaik: Lonchura maja (0.90 / 0.90)
Kelas paling sulit: Lonchura punctulata (F1 = 0.80)
Cross Validation (5-Fold Stratified)
Total data validasi: 1.510 citra
Konsistensi performa across folds dengan standar deviasi rendah
Confusion Matrix agregat menunjukkan kesalahan dominan antarspesies Lonchura
📌 Catatan & Keterbatasan
Kesalahan klasifikasi dominan antarspesies bondol (Lonchura) akibat kemiripan morfologi.
Faktor teknis: banyak citra diambil dari jarak jauh dengan ukuran burung kecil, serta adanya noise (vegetasi/benda sekitar).
Perlu dataset lapangan tambahan dengan variasi kondisi pencahayaan & sudut pandang agar model lebih robust.