Sistem klasifikasi citra sampah otomatis (3 kelas) menggunakan EfficientNetV2-S + Stratified 5-Fold Cross-Validation, sesuai SDLC proyek.
| Kode | Kategori |
|---|---|
| 0 | Recyclable |
| 1 | Electronic |
| 2 | Organic |
- Python 3.10+
- Git
- GPU NVIDIA opsional (CPU tetap bisa, gunakan mode cepat)
Ganti <REPO_URL> dengan URL Git repository Anda:
git clone <REPO_URL>
cd waste-pythonpython -m venv .venvAktifkan virtual environment:
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activateLalu install paket proyek (termasuk dependency development untuk pytest):
pip install -U pip
pip install -e ".[dev]"Citra tidak ikut di-commit. Letakkan dataset resmi sesuai layout di bagian Data layout:
- Isi
data/train/(citra berlabel per kelas) - Isi
data/test/(citra uji tanpa label) - Pastikan
data/template.csvada (sudah termasuk di repository)
pytestJika semua test lolos, environment siap dipakai.
Untuk menjalankan pipeline pertama kali (ramah CPU):
python scripts/train.py --config configs/fast.yaml
python scripts/predict.py --config configs/fast.yamlHasil yang diharapkan:
- Checkpoint di
outputs/models/(mis.fold_0.pth,fold_1.pth) - Submission di
outputs/submissions/submission.csv
Untuk training penuh (5-fold) dan inferensi final, lihat bagian Training dan Inferensi di bawah.
Jalankan pipeline di T4 GPU Colab memakai disk lokal runtime (/content) β tanpa Google Drive.
- Buka
notebooks/colab_run.ipynbdi Colab (File β Upload notebook, atau Open in Colab jika repo sudah di GitHub). - Runtime β Change runtime type β Hardware accelerator β T4 GPU.
- Isi
REPO_URL, clone, lalupip install -e .. - Siapkan dataset ke
/content/waste-python/data/lewat upload ZIP atau unduh URL (layout sama seperti Data layout). - Train & predict (
default.yamlβ batch T4-safe, device auto CPU/GPU):
python scripts/train.py --config configs/default.yaml
python scripts/predict.py --config configs/default.yaml- Unduh
outputs/submissions/submission.csv(dan checkpoint jika perlu) sebelum disconnect.
Runtime Colab ephemeral: data, checkpoint, dan submission hilang saat sesi berakhir. Jangan andalkan penyimpanan lokal Colab untuk jangka panjang.
Letakkan dataset resmi di folder berikut (citra tidak di-commit):
data/
βββ train/
β βββ 0_Recyclable/ # atau 0/ / Recyclable/
β βββ 1_Electronic/ # atau 1/ / Electronic/
β βββ 2_Organic/ # atau 2/ / Organic/
βββ test/ # 1.458 citra tanpa label (nama mengikuti id di template)
βββ template.csv # kolom: id,predicted
Output prediksi mengisi kolom predicted dengan nilai 0, 1, atau 2.
Full run (5-fold, kualitas final). Device otomatis: GPU jika ada, else CPU. Batch T4-safe (train=8, infer=16):
python scripts/train.py --config configs/default.yamlMode cepat di CPU (2-fold, subset, resolusi lebih kecil β untuk iterasi):
python scripts/train.py --config configs/fast.yamlCheckpoint per fold disimpan di outputs/models/fold_{0..4}.pth (atau fold_0/1 untuk mode cepat). Early stopping menghentikan fold jika macro F1 validasi tidak naik.
Memakai semua checkpoint fold_*.pth yang ada di outputs/models/ (1 fold atau ensemble penuh).
python scripts/predict.py --config configs/default.yamlMode cepat (batch lebih besar; cocok setelah train dengan fast.yaml):
python scripts/predict.py --config configs/fast.yamlMenghasilkan outputs/submissions/submission.csv lalu menjalankan QA validasi.
pytest- Data uji hanya dipakai saat inferensi (
predict.py). - Tidak ada akses label test selama training.
- Seed dikunci untuk reproduktifitas.