Aplikasi Web Flask Untuk Mengidentifikasi Kondisi Visual Uang Kertas Rupiah Menggunakan Ekstraksi Fitur Gray Level Co-occurrence Matrix (GLCM) dan Model Random Forest.
- Upload gambar uang kertas Rupiah.
- Preprocessing gambar: resize 256 x 256 dan konversi grayscale.
- Ekstraksi 6 fitur GLCM rata-rata: contrast, dissimilarity, homogeneity, energy, correlation, ASM.
- Klasifikasi kondisi visual:
normal,dirty,scuffed,scuffed-dirty,torn. - Konversi prediksi menjadi status kelayakan visual.
- Halaman hasil prediksi dengan preview, confidence, dan tabel fitur GLCM.
- Halaman Model berisi ringkasan model, fitur GLCM, distribusi dataset, metrik evaluasi, confusion matrix, contoh visual kelas, dan keterbatasan model.
- Script training yang menghasilkan model, fitur CSV, metrics, classification report, dan confusion matrix.
- Python
- Flask
- OpenCV
- scikit-image
- scikit-learn
- pandas
- Matplotlib dan Seaborn
- HTML, CSS, Bootstrap CDN, JavaScript sederhana
.
|-- app.py
|-- requirements.txt
|-- README.md
|-- dataset/
|-- artifacts/
| |-- model.pkl
| |-- label_encoder.pkl
| |-- features.csv
| |-- metrics.json
| |-- classification_report.txt
| `-- confusion_matrix.png
|-- src/
| |-- config.py
| |-- dataset_loader.py
| |-- glcm_features.py
| |-- model_page.py
| |-- predict_model.py
| |-- preprocessing.py
| |-- train_model.py
| `-- utils.py
|-- static/
| |-- css/style.css
| |-- examples/
| |-- images/confusion_matrix.png
| |-- js/script.js
| `-- uploads/
|-- templates/
| |-- base.html
| |-- index.html
| |-- result.html
| |-- model.html
| `-- about.html
`-- tests/
|-- test_app.py
`-- test_core.py
Dataset berada di folder dataset/ dengan struktur:
dataset/
|-- 1000/
| |-- dirty/
| |-- normal/
| |-- scuffed/
| |-- scuffed-dirty/
| `-- torn/
|-- 2000/
|-- 5000/
|-- 10000/
|-- 20000/
|-- 50000/
`-- 100000/
Label prediksi diambil dari nama folder kondisi, bukan dari nama file gambar. Dataset lokal berisi 350 gambar PNG: 7 nominal, 5 kondisi, dan 10 gambar per kombinasi nominal-kondisi.
Gunakan Python 3.11 atau 3.12.
python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txtJika perintah python tidak tersedia di Windows, coba Python Launcher:
py -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt| Name | Required | Description |
|---|---|---|
FLASK_SECRET_KEY |
Tidak untuk lokal | Secret key Flask untuk flash message/session. Jika kosong, app memakai nilai default lokal rvcc-local-dev. |
FLASK_DEBUG |
Tidak | Set 1 jika ingin menjalankan Flask debug mode saat pengembangan lokal. |
Jalankan training dari root project:
python -m src.train_model --dataset dataset --artifacts artifactsOutput training:
artifacts/model.pklartifacts/label_encoder.pklartifacts/features.csvartifacts/metrics.jsonartifacts/classification_report.txtartifacts/confusion_matrix.png
Jika model di-training ulang dan ingin page Model menampilkan confusion matrix terbaru, salin file hasil training:
copy artifacts\confusion_matrix.png static\images\confusion_matrix.pngSetelah model tersedia:
python app.pyBuka:
http://127.0.0.1:5000
Halaman yang tersedia:
http://127.0.0.1:5000/untuk upload dan prediksi.http://127.0.0.1:5000/modeluntuk informasi model dan evaluasi.http://127.0.0.1:5000/aboutuntuk penjelasan metode dan batasan proyek.
python -m unittest discover -s testsFile/Folder Yang Berada Pada .gitignore:
.venv/__pycache__/*.pyc*.log*.tmp.env.vscode/.idea/static/uploads/*kecuali.gitkeep
- Model menggunakan fitur tekstur GLCM, bukan CNN atau deep learning.
- Prediksi dapat kurang stabil jika gambar upload memiliki pencahayaan, latar, atau sudut yang sangat berbeda dari dataset.
- Sistem tidak mendeteksi nominal otomatis.
- Sistem tidak memvalidasi keaslian uang.


