update
This commit is contained in:
parent
0034d55c4e
commit
d197569981
4
.env
4
.env
|
|
@ -1,8 +1,8 @@
|
||||||
# MySQL Database Configuration
|
# MySQL Database Configuration
|
||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
DB_USER=root
|
DB_USER=kali
|
||||||
DB_PASSWORD=
|
DB_PASSWORD=asu
|
||||||
DB_NAME=deteksi_pmk
|
DB_NAME=deteksi_pmk
|
||||||
|
|
||||||
# Flask Configuration
|
# Flask Configuration
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,5 @@ models/*
|
||||||
!models/pca.pkl
|
!models/pca.pkl
|
||||||
results/*
|
results/*
|
||||||
uploads/*
|
uploads/*
|
||||||
|
.venv
|
||||||
|
.python-version
|
||||||
|
|
@ -0,0 +1,497 @@
|
||||||
|
# AGENTS.md — Panduan AI untuk Sistem Deteksi PMK
|
||||||
|
|
||||||
|
File ini adalah **satu-satunya sumber kebenaran** untuk AI agent yang bekerja pada project ini. **WAJIB diperbarui** setiap kali ada perubahan arsitektur, dependensi, struktur database, atau alur sistem.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. GAMBARAN PROYEK
|
||||||
|
|
||||||
|
**Sistem Deteksi dan Diagnosis Penyakit Mulut dan Kuku (PMK / FMD) pada Sapi**
|
||||||
|
|
||||||
|
- **Bahasa:** Python 3.12.5
|
||||||
|
- **Framework Web:** Flask (Bootstrap 5 UI)
|
||||||
|
- **Desktop (Legacy):** Tkinter (`main.py`, `predict_image.py`)
|
||||||
|
- **Deployment:** Railway (Nixpacks + gunicorn)
|
||||||
|
- **Repository:** `https://github.com/livindra/deteksi_PMK`
|
||||||
|
|
||||||
|
Dua jalur utama:
|
||||||
|
|
||||||
|
1. **Deteksi Berbasis Gambar** — ML (KNN) multi-class (sehat + tiap jenis PMK) + Computer Vision (color moments + GLCM texture)
|
||||||
|
2. **Sistem Pakar** — Forward chaining inference engine (29 gejala, 5 penyakit, 5 aturan)
|
||||||
|
|
||||||
|
> **Dataset:** Folder `dataset/` berisi `healthy/` dan folder `pmk_*` per jenis penyakit.
|
||||||
|
> `train_model.py` otomatis mendeteksi semua folder berawalan `pmk_*` sebagai kelas terpisah.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. STRUKTUR PROYEK
|
||||||
|
|
||||||
|
```
|
||||||
|
deteksi_PMK/
|
||||||
|
├── app.py # Main Flask app (~1000 baris) — routing, prediksi, sistem pakar
|
||||||
|
├── expert_system.py # Forward chaining engine + KnowledgeBase + Evaluator
|
||||||
|
├── train_model.py # Training KNN model (k=5, euclidean, uniform)
|
||||||
|
├── setup_db.py # Inisialisasi database MySQL
|
||||||
|
├── main.py # LEGACY — Tkinter desktop menu
|
||||||
|
├── predict_image.py # LEGACY — Tkinter prediction GUI
|
||||||
|
├── test_forward_chaining.py # Unit test expert system
|
||||||
|
├── test_env.py # Test environment variables & DB connection
|
||||||
|
├── show_scaler_params.py # Utility: lihat parameter scaler
|
||||||
|
├── requirements.txt # Python dependencies
|
||||||
|
├── Procfile # gunicorn app:app
|
||||||
|
├── railway.json # Railway Nixpacks builder config
|
||||||
|
├── .env # Environment variables (TIDAK DI-COMMIT)
|
||||||
|
├── .env.example # Template env
|
||||||
|
├── .gitignore
|
||||||
|
├── .python-version # 3.12.5
|
||||||
|
│
|
||||||
|
├── QUICK_START.md # Panduan cepat (Bahasa Indonesia)
|
||||||
|
├── AGENTS.md # ← FILE INI — panduan AI, HARUS DIUPDATE
|
||||||
|
│
|
||||||
|
├── dataset/ # Dataset gambar training
|
||||||
|
│ ├── healthy/ # ~200 gambar sapi sehat
|
||||||
|
│ ├── pmk_oral/ # Gambar PMK oral
|
||||||
|
│ ├── pmk_podal/ # Gambar PMK podal (kaki)
|
||||||
|
│ ├── pmk_laktasi/ # Gambar PMK laktasi (ambing)
|
||||||
|
│ └── pmk_akut_general/ # Gambar PMK akut general
|
||||||
|
│
|
||||||
|
├── features/ # CSV fitur hasil ekstraksi
|
||||||
|
│ ├── dataset.csv
|
||||||
|
│ ├── data_train.csv
|
||||||
|
│ └── data_test.csv
|
||||||
|
│
|
||||||
|
├── models/ # Model terlatih (.pkl)
|
||||||
|
│ ├── knn_model.pkl # BINARY — KNeighborsClassifier (sehat/sakit)
|
||||||
|
│ ├── scaler.pkl # BINARY — StandardScaler
|
||||||
|
│ ├── label_encoder.pkl # BINARY — LabelEncoder
|
||||||
|
│ ├── multiclass_knn_model.pkl # MULTI — KNeighborsClassifier (jenis PMK)
|
||||||
|
│ ├── multiclass_scaler.pkl # MULTI — StandardScaler
|
||||||
|
│ ├── multiclass_label_encoder.pkl# MULTI — LabelEncoder
|
||||||
|
│ └── pca.pkl # TIDAK DIGUNAKAN (legacy)
|
||||||
|
│
|
||||||
|
├── uploads/ # Gambar hasil upload user
|
||||||
|
│ └── resize/ # Hasil resize
|
||||||
|
│ └── threshold/ # Hasil threshold
|
||||||
|
│
|
||||||
|
├── utils/
|
||||||
|
│ ├── __init__.py
|
||||||
|
│ ├── mysql_db.py # SQLAlchemy ORM — models, CRUD, seed data (916 baris)
|
||||||
|
│ ├── preprocessing.py # Validasi sapi + preprocessing pipeline (340 baris)
|
||||||
|
│ ├── feature_extraction.py # Ekstraksi fitur: RGB avg + HSV + GLCM + histogram + Hu (46 fitur)
|
||||||
|
│ └── helpers.py # Load/save model, dataset prep, confidence estimation (237 baris)
|
||||||
|
│
|
||||||
|
├── templates/ # Jinja2 templates
|
||||||
|
│ ├── base.html # Layout utama (Bootstrap 5, navbar, footer)
|
||||||
|
│ ├── index.html # Halaman utama
|
||||||
|
│ ├── upload.html # Form upload multi-file (JS sederhana)
|
||||||
|
│ ├── result.html # Hasil deteksi (sehat/sakit)
|
||||||
|
│ ├── riwayat_deteksi.html # Riwayat (client localStorage + MySQL)
|
||||||
|
│ ├── detail_deteksi.html # Detail satu prediksi + diagnosis
|
||||||
|
│ ├── expert_system.html # Sistem pakar — pilih gejala + hasil
|
||||||
|
│ └── diagnosis_history.html # Riwayat diagnosis sistem pakar
|
||||||
|
│
|
||||||
|
└── static/
|
||||||
|
├── css/style.css # Custom CSS (gradient, animasi, responsive)
|
||||||
|
└── js/main.js # JS — tooltips, file preview, API fetch, dark mode
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. ARSITEKTUR & ALUR DATA
|
||||||
|
|
||||||
|
### 3.1 Jalur Deteksi Gambar
|
||||||
|
|
||||||
|
```
|
||||||
|
User upload gambar
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[app.py] validate_cattle_image()
|
||||||
|
├─ Tolak wajah manusia (Haar cascade)
|
||||||
|
├─ Deteksi mata (HoughCircles) — bonus scoring
|
||||||
|
├─ Validasi warna HSV (coklat, merah, hitam, putih)
|
||||||
|
├─ Analisis tekstur (Laplacian variance)
|
||||||
|
├─ Edge detection (Canny)
|
||||||
|
└─ Final: weighted confidence (eye 15%, color 40%, texture 30%, edge 15%), threshold ≥ 65%
|
||||||
|
│
|
||||||
|
├─ Gagal → tolak dengan pesan error
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[preprocessing.py] preprocess_pipeline()
|
||||||
|
→ resize 128×128 → grayscale → Otsu threshold → mask → masked RGB + masked gray
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[feature_extraction.py] FeatureExtractor.extract_all_features()
|
||||||
|
→ 46 fitur: [RGB avg (3), HSV mean+std (6), GLCM (6), histogram 24, Hu (7)]
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[helpers.py] scaler.transform() → [BINARY MODEL] predict()
|
||||||
|
│
|
||||||
|
├ ─ 'sehat' → Simpan ke MySQL
|
||||||
|
│
|
||||||
|
▼ sakit
|
||||||
|
[helpers.py] multiclass_scaler.transform() → [MULTI-CLASS MODEL] predict()
|
||||||
|
→ label_encoder.inverse_transform()
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[helpers.py] estimate_prediction_confidence()
|
||||||
|
→ weighted neighbor confidence (clipped 50.0 – 98.5)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Simpan ke MySQL (primary) + CSV (fallback)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Semua gambar diproses — jika ada yang sakit:
|
||||||
|
→ Redirect ke expert-system?symptoms=G01,G02,...&mode=image
|
||||||
|
→ Gejala otomatis tercentang sesuai jenis PMK — hanya gejala yang relevan dengan body part PMK type tersebut (tidak cross-category)
|
||||||
|
Jika semua sehat:
|
||||||
|
→ Flash "Semua X gambar sehat" → /result/healthy
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 Jalur Sistem Pakar
|
||||||
|
|
||||||
|
```
|
||||||
|
User memilih gejala di web form
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
[expert_system.py] ForwardChaining.tambah_gejala(gejala_list)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
ForwardChaining.inferensi()
|
||||||
|
→ Untuk setiap aturan:
|
||||||
|
- Hitung coverage = matched_count / total_count
|
||||||
|
- Hitung support_ratio = matched_rules / total_rules_for_disease
|
||||||
|
- Hitung evidence_strength = min(best_matched / 4, 1.0)
|
||||||
|
- Combined score = best_coverage*0.5 + avg_coverage*0.25 + support_ratio*0.15 + evidence_strength*0.1 + exact_bonus
|
||||||
|
- Threshold minimum: 0.35
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
ForwardChaining.get_diagnosis()
|
||||||
|
→ Urutkan penyakit berdasarkan score
|
||||||
|
→ Kembalikan top diagnosis + matched rules + solusi
|
||||||
|
→ Severity map: P01=oral, P02=podal, P03=laktasi, P05=akut umum
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Simpan ke MySQL (tabel predictions + diagnosis_history)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Render expert_system.html
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 Storage Hybrid
|
||||||
|
|
||||||
|
- **MySQL** (primary): tabel `predictions`, `diagnosis_history`, `expert_symptoms`, `expert_diseases`, `expert_rules`, join table `expert_rules_expert_symptoms`
|
||||||
|
- **localStorage** (browser): menyimpan array ID prediksi untuk ditampilkan di halaman riwayat
|
||||||
|
- **CSV fallback**: `results/predictions.csv`, `results/diagnosis_history.csv`
|
||||||
|
|
||||||
|
> **Batch upload:** Semua gambar dari satu sesi upload disimpan dalam **1 baris** tabel `predictions`. Data per-gambar (filename, prediction, pmk_type, confidence) disimpan sebagai JSON di kolom `images_data`. Field `prediction` diisi 'sakit' jika ada gambar sakit, 'sehat' jika semua sehat.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. DATABASE (MySQL via SQLAlchemy)
|
||||||
|
|
||||||
|
### 4.1 Tabel
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Tabel prediksi hasil deteksi gambar
|
||||||
|
predictions
|
||||||
|
id INT AUTO_INCREMENT PK
|
||||||
|
original_filename VARCHAR(255)
|
||||||
|
filename VARCHAR(255)
|
||||||
|
image_path VARCHAR(500)
|
||||||
|
prediction VARCHAR(50) -- 'sehat' / 'sakit'
|
||||||
|
confidence FLOAT
|
||||||
|
features TEXT -- JSON string dari extracted features
|
||||||
|
images_data TEXT -- JSON array dari per-gambar (batch upload)
|
||||||
|
timestamp DATETIME
|
||||||
|
|
||||||
|
-- Tabel riwayat diagnosis sistem pakar
|
||||||
|
diagnosis_history
|
||||||
|
id INT AUTO_INCREMENT PK
|
||||||
|
prediction_id INT FK → predictions.id (nullable)
|
||||||
|
diagnosis TEXT -- JSON string detail diagnosis
|
||||||
|
severity VARCHAR(50) -- 'ringan' / 'sedang' / 'berat'
|
||||||
|
timestamp DATETIME
|
||||||
|
|
||||||
|
-- Master gejala (29 gejala)
|
||||||
|
expert_symptoms
|
||||||
|
id INT AUTO_INCREMENT PK
|
||||||
|
code VARCHAR(10) UNIQUE -- G01–G29
|
||||||
|
description TEXT
|
||||||
|
category VARCHAR(50) -- umum, mulut, kaki, ambing, berat
|
||||||
|
display_order INT
|
||||||
|
|
||||||
|
-- Master penyakit (5 penyakit)
|
||||||
|
expert_diseases
|
||||||
|
id INT AUTO_INCREMENT PK
|
||||||
|
code VARCHAR(10) UNIQUE -- P01–P05
|
||||||
|
name VARCHAR(120)
|
||||||
|
description TEXT
|
||||||
|
solutions TEXT -- JSON array of strings
|
||||||
|
display_order INT
|
||||||
|
|
||||||
|
-- Aturan forward chaining (5 aturan)
|
||||||
|
expert_rules
|
||||||
|
id INT AUTO_INCREMENT PK
|
||||||
|
code VARCHAR(20) UNIQUE -- FC01–FC04
|
||||||
|
symptom_codes TEXT -- JSON array of symptom codes
|
||||||
|
result_disease_code VARCHAR(10) FK → expert_diseases.code
|
||||||
|
description TEXT
|
||||||
|
is_active BOOLEAN
|
||||||
|
display_order INT
|
||||||
|
|
||||||
|
-- Join table many-to-many
|
||||||
|
expert_rules_expert_symptoms
|
||||||
|
rule_id INT FK → expert_rules.id (ON DELETE CASCADE)
|
||||||
|
symptom_id INT FK → expert_symptoms.id (ON DELETE CASCADE)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Knowledge Base Default
|
||||||
|
|
||||||
|
**29 Gejala (G01–G29)** per kategori:
|
||||||
|
|
||||||
|
- **umum** (7): G01 demam >39.5°C, G11 nafsu makan turun, G12 lesu, G17 demam >40.5°C, G25 lebih sering berbaring, G28 takikardia, G29 sesak napas
|
||||||
|
- **mulut** (9): G02 air liur berlebih, G03 luka lidah/gusi, G04 nyeri setelah lepuh, G10 hidung berair, G14 lepuh moncong, G18 lepuh lidah meluas, G19 sulit mengunyah, G20 lepuh bantalan gigi, G21 bau mulut
|
||||||
|
- **kaki** (6): G05 lepuh celah kuku, G06 pincang, G15 nyeri kaki, G22 edema/radang, G23 bengkak celah kuku, G24 telapak kaki longgar
|
||||||
|
- **ambing** (5): G07 lepuh puting, G08 lesi puting, G09 produksi susu turun, G26 puting retak, G27 susu menggumpal
|
||||||
|
- **berat** (2): G13 miokarditis/kematian mendadak, G16 abortus/infertilitas
|
||||||
|
|
||||||
|
**5 Penyakit (P01–P05):**
|
||||||
|
|
||||||
|
- P01 = PMK_ORAL (gejala mulut)
|
||||||
|
- P02 = PMK_PODAL (gejala kaki/kuku)
|
||||||
|
- P03 = PMK_LAKTASI (gejala ambing)
|
||||||
|
- P05 = PMK_AKUT_GENERAL (gejala umum berat)
|
||||||
|
|
||||||
|
**4 Aturan (FC01–FC04):**
|
||||||
|
|
||||||
|
- FC01 → P01 (oral): [G01, G02, G03, G04, G11, G18, G19, G20, G21]
|
||||||
|
- FC02 → P02 (podal): [G01, G02, G05, G06, G15, G22, G23, G24, G25]
|
||||||
|
- FC03 → P03 (laktasi): [G01, G02, G07, G08, G09, G26, G27]
|
||||||
|
- FC04 → P05 (akut umum): [G01, G02, G03, G04, G05, G06, G07, G09, G11, G12, G14, G18, G20, G22, G23, G24, G26]
|
||||||
|
|
||||||
|
> **Auto-check gejala dari hasil deteksi gambar** (di `app.py:pmk_to_symptoms`):
|
||||||
|
> Mapping ini digunakan saat redirect ke expert system via mode=image. Hanya gejala spesifik body part yang diikutkan (tanpa gejala umum):
|
||||||
|
> - `pmk_oral` → gejala mulut: [G02, G03, G04, G10, G14, G18, G19, G20, G21]
|
||||||
|
> - `pmk_podal` → gejala kaki: [G05, G06, G15, G22, G23, G24]
|
||||||
|
|
||||||
|
> **Jika menambah/mengubah gejala, penyakit, atau aturan**, update data di:
|
||||||
|
>
|
||||||
|
> 1. `utils/mysql_db.py` — constants `DEFAULT_EXPERT_SYMPTOMS`, `DEFAULT_EXPERT_DISEASES`, `DEFAULT_EXPERT_RULES`
|
||||||
|
> 2. File ini (AGENTS.md) — bagian ini
|
||||||
|
> 3. Jalankan ulang `seed_expert_knowledge(force=True)` atau hapus tabel agar di-reseed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. API ENDPOINTS (Flask)
|
||||||
|
|
||||||
|
| Method | Route | Deskripsi |
|
||||||
|
| -------- | -------------------------------- | -------------------------------------------------- |
|
||||||
|
| GET | `/` | Homepage — model status + recent history |
|
||||||
|
| GET | `/upload` | Halaman upload gambar |
|
||||||
|
| POST | `/predict` | Upload + prediksi gambar multi-file. Semua gambar disimpan sbg 1 baris di DB. Jika sakit → redirect ke expert-system dgn gejala otomatis + semua gambar ditampilkan. Jika sehat → /result/healthy |
|
||||||
|
| GET | `/result/healthy` | Hasil sehat |
|
||||||
|
| GET | `/result/sick` | Hasil sakit (legacy, tidak dipakai di alur baru) |
|
||||||
|
| GET | `/riwayat_deteksi` | Halaman riwayat deteksi |
|
||||||
|
| GET | `/detail-deteksi/<int:pred_id>` | Detail prediksi + diagnosis |
|
||||||
|
| POST | `/api/validate-image` | Validasi gambar real-time (apakah sapi) |
|
||||||
|
| POST | `/api/get_data_riwayat_deteksi` | Ambil riwayat berdasarkan localStorage IDs |
|
||||||
|
| POST | `/api/diagnosis` | API diagnosis sistem pakar |
|
||||||
|
| GET/POST | `/expert-system` | Halaman sistem pakar (GET=form dgn param `symptoms` untuk pre-check, POST=diagnosis) |
|
||||||
|
| GET | `/expert-system/from-prediction` | Redirect ke expert system mode gambar |
|
||||||
|
| GET | `/riwayat-diagnosis` | Halaman riwayat diagnosis |
|
||||||
|
| GET | `/export/csv` | Export prediksi ke CSV |
|
||||||
|
| GET | `/export/excel` | Export prediksi ke Excel |
|
||||||
|
| GET | `/clear-session` | Bersihkan Flask session |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. ML MODEL DETAILS
|
||||||
|
|
||||||
|
**Arsitektur Hierarchical (2-level):**
|
||||||
|
|
||||||
|
```
|
||||||
|
Input image → 46 fitur (RGB+HSV+GLCM+Histogram+Hu)
|
||||||
|
│
|
||||||
|
┌──────┴──────┐
|
||||||
|
▼ ▼
|
||||||
|
[BINARY MODEL] [selamat — end]
|
||||||
|
sehat vs sakit
|
||||||
|
│ (sakit)
|
||||||
|
▼
|
||||||
|
[MULTI-CLASS MODEL]
|
||||||
|
pmk_oral / pmk_podal / pmk_laktasi / pmk_akut_general
|
||||||
|
```
|
||||||
|
|
||||||
|
### Binary Model (prefix='')
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
| ----------------- | -------------------------------- |
|
||||||
|
| **Task** | sehat vs sakit |
|
||||||
|
| **Algorithm** | K-Nearest Neighbors (KNN) |
|
||||||
|
| **k** | Hyperparameter tuned (1–15) |
|
||||||
|
| **Distance** | Hyperparameter tuned (euclidean/manhattan) |
|
||||||
|
| **Weight** | Hyperparameter tuned (uniform/distance) |
|
||||||
|
| **Accuracy** | ±98% |
|
||||||
|
| **Model file** | `models/knn_model.pkl` |
|
||||||
|
|
||||||
|
### Multi-class Model (prefix='multiclass_')
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
| ----------------- | -------------------------------- |
|
||||||
|
| **Task** | Jenis PMK (hanya data sakit) |
|
||||||
|
| **Algorithm** | K-Nearest Neighbors (KNN) |
|
||||||
|
| **k** | Hyperparameter tuned (1–15) |
|
||||||
|
| **Distance** | Hyperparameter tuned (euclidean/manhattan) |
|
||||||
|
| **Weight** | Hyperparameter tuned (uniform/distance) |
|
||||||
|
| **Accuracy** | ±60% |
|
||||||
|
| **Model file** | `models/multiclass_knn_model.pkl`|
|
||||||
|
|
||||||
|
### Common
|
||||||
|
|
||||||
|
| Parameter | Value |
|
||||||
|
| ----------------- | --------------------------------------------------------------------------- |
|
||||||
|
| **Features** | 46: avg_red, avg_green, avg_blue, hsv_h_mean, hsv_h_std, hsv_s_mean, hsv_s_std, hsv_v_mean, hsv_v_std, contrast, homogeneity, correlation, energy, dissimilarity, asm, 8-bin histogram × 3 channels (24), hu_moment_0..6 (7) |
|
||||||
|
| **Image size** | 256×256 |
|
||||||
|
| **Preprocessing** | Otsu threshold, mask, resize |
|
||||||
|
| **Scaling** | StandardScaler |
|
||||||
|
| **Output** | Binary: `sehat` / `sakit`; Multi-class: `pmk_oral`, `pmk_podal`, `pmk_laktasi`, `pmk_akut_general`, ... |
|
||||||
|
| **Confidence** | Custom weighted neighbor, clipped 50.0–98.5% |
|
||||||
|
| **Class detection** | Auto-detect all folders under `dataset/` — `healthy` → `sehat`, `pmk_*` → nama folder |
|
||||||
|
|
||||||
|
> **Jika menambah/mengubah fitur**, update:
|
||||||
|
>
|
||||||
|
> 1. `utils/feature_extraction.py` — `FeatureExtractor.feature_names`
|
||||||
|
> 2. `train_model.py` — feature export dimensions
|
||||||
|
> 3. Retrain model (`python train_model.py`)
|
||||||
|
> 4. AGENTS.md ini
|
||||||
|
>
|
||||||
|
> **Jika menambah kelas penyakit baru** (folder `pmk_*`):
|
||||||
|
>
|
||||||
|
> 1. Buat folder `dataset/pmk_nama_baru/` — otomatis terdeteksi oleh `prepare_dataset()`
|
||||||
|
> 2. Retrain model (`python train_model.py`)
|
||||||
|
> 3. Update AGENTS.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. CATTLE IMAGE VALIDATION
|
||||||
|
|
||||||
|
Lokasi: `utils/preprocessing.py:validate_cattle_image()`
|
||||||
|
|
||||||
|
Layer validasi berlapis:
|
||||||
|
|
||||||
|
1. **Face rejection** — Haar cascade face detection (tolak foto manusia)
|
||||||
|
2. **Eye detection** — HoughCircles (bonus scoring)
|
||||||
|
3. **Color validation** — HSV threshold (brown, red, black, white)
|
||||||
|
4. **Texture analysis** — Laplacian variance (range 45–3500)
|
||||||
|
5. **Edge detection** — Canny edge density (range 0.01–0.35)
|
||||||
|
|
||||||
|
Final confidence = `eye_score*0.15 + color_score*0.40 + texture_score*0.30 + edge_score*0.15`
|
||||||
|
Threshold: **≥ 65%** untuk lolos sebagai sapi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. DEPLOYMENT
|
||||||
|
|
||||||
|
### Railway
|
||||||
|
|
||||||
|
- **Builder:** Nixpacks (`railway.json`)
|
||||||
|
- **Start:** `gunicorn app:app --bind 0.0.0.0:$PORT`
|
||||||
|
- **Env:** `FLASK_SECRET`, `DATABASE_URL` atau `MYSQLHOST/PORT/USER/PASSWORD/DATABASE`
|
||||||
|
- `opencv-python-headless` — tidak butuh GUI library
|
||||||
|
|
||||||
|
### Local
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Setup database
|
||||||
|
python setup_db.py
|
||||||
|
|
||||||
|
# 2. (Opsional) Training model
|
||||||
|
python train_model.py
|
||||||
|
|
||||||
|
# 3. Jalankan app
|
||||||
|
python app.py
|
||||||
|
# Buka http://localhost:5000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. TESTING
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Test environment & database
|
||||||
|
python test_env.py
|
||||||
|
|
||||||
|
# Test expert system forward chaining
|
||||||
|
python test_forward_chaining.py
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Jika menambah fitur baru**, tambahkan test case di file terkait. Jika menambah test file baru, update bagian ini.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. CONFIGURATION
|
||||||
|
|
||||||
|
### Environment Variables (`.env`)
|
||||||
|
|
||||||
|
```
|
||||||
|
DB_HOST=localhost
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_USER=root
|
||||||
|
DB_PASSWORD=
|
||||||
|
DB_NAME=deteksi_pmk
|
||||||
|
MYSQLHOST= # Railway
|
||||||
|
MYSQLPORT= # Railway
|
||||||
|
MYSQLUSER= # Railway
|
||||||
|
MYSQLPASSWORD= # Railway
|
||||||
|
MYSQLDATABASE= # Railway
|
||||||
|
DATABASE_URL= # Railway
|
||||||
|
FLASK_SECRET=deteksi-pmk-secret-key-2026
|
||||||
|
FLASK_DEBUG=0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. ATURAN UNTUK AI AGENT
|
||||||
|
|
||||||
|
1. **Jangan pernah mengubah fungsionalitas tanpa memperbarui file ini.**
|
||||||
|
2. **Jika menambah variabel environment**, tambahkan ke `.env.example` dan dokumentasikan di sini.
|
||||||
|
3. **Jika mengubah struktur tabel**, update: (a) model SQLAlchemy di `utils/mysql_db.py`, (b) skema di AGENTS.md, (c) constants `DEFAULT_EXPERT_*`.
|
||||||
|
4. **Jika menambah endpoint**, dokumentasikan di bagian API ENDPOINTS.
|
||||||
|
5. **Jika mengubah fitur ML**, update `feature_names`, retrain model, update AGENTS.md.
|
||||||
|
6. **Jika menambah dependensi**, tambahkan ke `requirements.txt` dan update tabel dependensi.
|
||||||
|
7. **File ini WAJIB dibaca** sebelum melakukan perubahan signifikan.
|
||||||
|
8. **Gunakan Bahasa Indonesia** untuk komentar, UI, dan dokumentasi end-user karena target pengguna adalah peternak/inspektur Indonesia.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. DEPENDENSI (requirements.txt)
|
||||||
|
|
||||||
|
| Package | Version | Kegunaan |
|
||||||
|
| ---------------------- | -------- | --------------------------------- |
|
||||||
|
| opencv-python-headless | 4.9.0.80 | Image processing, validasi sapi |
|
||||||
|
| numpy | <2 | Numerical operations |
|
||||||
|
| pandas | ≥2.1.0 | Data manipulation |
|
||||||
|
| scikit-learn | ≥1.3.2 | KNN, StandardScaler, LabelEncoder |
|
||||||
|
| scikit-image | ≥0.22.0 | GLCM texture features |
|
||||||
|
| matplotlib | ≥3.8.0 | Feature analysis plots |
|
||||||
|
| pillow | ≥10.1.0 | Image loading fallback |
|
||||||
|
| joblib | ≥1.3.2 | Model serialization |
|
||||||
|
| Flask | ≥2.3.3 | Web framework |
|
||||||
|
| SQLAlchemy | ≥2.0.0 | ORM MySQL |
|
||||||
|
| PyMySQL | ≥1.1.0 | MySQL driver |
|
||||||
|
| python-dotenv | ≥1.0.0 | Environment loading |
|
||||||
|
| gunicorn | ≥21.2.0 | WSGI production server |
|
||||||
|
| pytz | ≥2024.1 | Timezone (Asia/Jakarta) |
|
||||||
|
| cryptography | ≥3.4.8 | MySQL password encryption |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. LEGACY CODE (TIDAK DIGUNAKAN LAGI)
|
||||||
|
|
||||||
|
File berikut adalah kode legacy desktop (Tkinter) yang **tidak aktif** di web app:
|
||||||
|
|
||||||
|
- `main.py` — Menu utama desktop
|
||||||
|
- `predict_image.py` — Prediksi gambar via GUI Tkinter
|
||||||
|
- `models/pca.pkl` — PCA model tidak digunakan (legacy)
|
||||||
|
|
||||||
|
> Jika ada refactoring besar, pertimbangkan untuk menghapus file-file ini atau tandai secara eksplisit.
|
||||||
302
app.py
302
app.py
|
|
@ -46,6 +46,7 @@ def get_symptom_desc(symptom_code):
|
||||||
try:
|
try:
|
||||||
from utils.mysql_db import (
|
from utils.mysql_db import (
|
||||||
save_prediction_mysql,
|
save_prediction_mysql,
|
||||||
|
save_batch_prediction_mysql,
|
||||||
get_recent_predictions_mysql,
|
get_recent_predictions_mysql,
|
||||||
get_prediction_by_id,
|
get_prediction_by_id,
|
||||||
init_mysql_tables,
|
init_mysql_tables,
|
||||||
|
|
@ -82,30 +83,38 @@ except Exception as import_err:
|
||||||
model = None
|
model = None
|
||||||
scaler = None
|
scaler = None
|
||||||
label_encoder = None
|
label_encoder = None
|
||||||
|
multiclass_model = None
|
||||||
|
multiclass_scaler = None
|
||||||
|
multiclass_label_encoder = None
|
||||||
extractor = FeatureExtractor()
|
extractor = FeatureExtractor()
|
||||||
model_loading = False
|
model_loading = False
|
||||||
model_loaded = False
|
model_loaded = False
|
||||||
|
|
||||||
def _load_model_background():
|
def _load_model_background():
|
||||||
global model, scaler, label_encoder, model_loading, model_loaded
|
global model, scaler, label_encoder, multiclass_model, multiclass_scaler, multiclass_label_encoder
|
||||||
|
global model_loading, model_loaded
|
||||||
|
|
||||||
# Prevent double-loading
|
|
||||||
if model_loading or model_loaded:
|
if model_loading or model_loaded:
|
||||||
return
|
return
|
||||||
|
|
||||||
model_loading = True
|
model_loading = True
|
||||||
try:
|
try:
|
||||||
from utils.helpers import load_model
|
from utils.helpers import load_model
|
||||||
print('[APP] Loading ML model in background...')
|
print('[APP] Loading ML models in background...')
|
||||||
m, s, le = load_model()
|
m, s, le = load_model()
|
||||||
model, scaler, label_encoder = m, s, le
|
model, scaler, label_encoder = m, s, le
|
||||||
|
try:
|
||||||
|
mm, ms, mle = load_model(prefix='multiclass_')
|
||||||
|
multiclass_model, multiclass_scaler, multiclass_label_encoder = mm, ms, mle
|
||||||
|
except Exception:
|
||||||
|
print('[APP] ⚠️ Multi-class model not loaded (binary-only mode)')
|
||||||
model_loaded = True
|
model_loaded = True
|
||||||
print('[APP] Model loaded successfully.')
|
print('[APP] Models loaded successfully.')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
model = None
|
model = None
|
||||||
scaler = None
|
scaler = None
|
||||||
label_encoder = None
|
label_encoder = None
|
||||||
model_loaded = True # Mark as done to prevent retry loop
|
model_loaded = True
|
||||||
print(f"[APP] ❌ Background model load failed: {e}")
|
print(f"[APP] ❌ Background model load failed: {e}")
|
||||||
finally:
|
finally:
|
||||||
model_loading = False
|
model_loading = False
|
||||||
|
|
@ -115,7 +124,6 @@ threading.Thread(target=_load_model_background, daemon=True).start()
|
||||||
|
|
||||||
|
|
||||||
def is_model_ready():
|
def is_model_ready():
|
||||||
"""Check if model is loaded and ready to use"""
|
|
||||||
return model is not None and scaler is not None and label_encoder is not None
|
return model is not None and scaler is not None and label_encoder is not None
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -180,6 +188,13 @@ def _serialize_prediction_row(prediction_row):
|
||||||
show_confidence = source != 'manual_expert_system'
|
show_confidence = source != 'manual_expert_system'
|
||||||
display_label = diagnosis_label if source == 'manual_expert_system' and diagnosis_label else ('Positif PMK' if prediction == 'sakit' else 'Sehat')
|
display_label = diagnosis_label if source == 'manual_expert_system' and diagnosis_label else ('Positif PMK' if prediction == 'sakit' else 'Sehat')
|
||||||
|
|
||||||
|
images_data = prediction_row.get('images_data')
|
||||||
|
image_count = prediction_row.get('image_count', 1)
|
||||||
|
sick_count = sum(1 for img in images_data if str(img.get('prediction', '')).lower() == 'sakit') if images_data else (1 if prediction == 'sakit' else 0)
|
||||||
|
|
||||||
|
if image_count > 1:
|
||||||
|
display_label = f'{sick_count} sakit / {image_count - sick_count} sehat ({image_count} gambar)'
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': pred_id,
|
'id': pred_id,
|
||||||
'original_filename': prediction_row.get('original_filename') or '',
|
'original_filename': prediction_row.get('original_filename') or '',
|
||||||
|
|
@ -193,6 +208,8 @@ def _serialize_prediction_row(prediction_row):
|
||||||
'confidence': round(confidence, 1) if show_confidence else None,
|
'confidence': round(confidence, 1) if show_confidence else None,
|
||||||
'show_confidence': show_confidence,
|
'show_confidence': show_confidence,
|
||||||
'timestamp': prediction_row.get('timestamp'),
|
'timestamp': prediction_row.get('timestamp'),
|
||||||
|
'image_count': image_count,
|
||||||
|
'images_data': images_data,
|
||||||
'detail_url': url_for('detail_deteksi', pred_id=pred_id),
|
'detail_url': url_for('detail_deteksi', pred_id=pred_id),
|
||||||
'image_url': url_for('uploaded_file', filename=prediction_row.get('filename') or '') if prediction_row.get('filename') else None,
|
'image_url': url_for('uploaded_file', filename=prediction_row.get('filename') or '') if prediction_row.get('filename') else None,
|
||||||
}
|
}
|
||||||
|
|
@ -388,164 +405,212 @@ def api_validate_image():
|
||||||
print(f"[VALIDATE API] ⚠️ Error menghapus temp file: {e}")
|
print(f"[VALIDATE API] ⚠️ Error menghapus temp file: {e}")
|
||||||
|
|
||||||
|
|
||||||
@app.route('/predict', methods=['POST'])
|
def _predict_single(filepath, original_filename):
|
||||||
def predict():
|
"""Process a single image and return prediction result dict."""
|
||||||
if 'image' not in request.files:
|
features = extractor.extract_all_features(*preprocess_pipeline(filepath))
|
||||||
flash('File tidak ditemukan', 'error')
|
|
||||||
return redirect(url_for('index'))
|
|
||||||
|
|
||||||
file = request.files['image']
|
|
||||||
if file.filename == '':
|
|
||||||
flash('Tidak ada file yang dipilih', 'error')
|
|
||||||
return redirect(url_for('index'))
|
|
||||||
|
|
||||||
if file and allowed_file(file.filename):
|
|
||||||
# Generate unique filename to avoid conflicts
|
|
||||||
original_filename = secure_filename(file.filename)
|
|
||||||
ext = original_filename.rsplit('.', 1)[1].lower()
|
|
||||||
filename = f"{uuid.uuid4()}.{ext}"
|
|
||||||
filepath = os.path.join(UPLOAD_FOLDER, filename)
|
|
||||||
file.save(filepath)
|
|
||||||
|
|
||||||
# Validasi ulang di backend supaya request langsung ke /predict tidak bisa bypass.
|
|
||||||
is_cattle, validation_confidence, validation_reason = validate_cattle_image(
|
|
||||||
filepath,
|
|
||||||
confidence_threshold=0.65,
|
|
||||||
)
|
|
||||||
if not is_cattle:
|
|
||||||
if os.path.exists(filepath):
|
|
||||||
try:
|
|
||||||
os.remove(filepath)
|
|
||||||
print(f"[PREDICT] ✓ File DIHAPUS (bukan sapi): {filename}")
|
|
||||||
except Exception as del_err:
|
|
||||||
print(f"[PREDICT] ⚠️ Error menghapus file non-sapi: {del_err}")
|
|
||||||
|
|
||||||
flash(validation_reason or 'Gambar selain sapi tidak diizinkan', 'error')
|
|
||||||
return redirect(url_for('index'))
|
|
||||||
|
|
||||||
print(f"[PREDICT] ✅ File lolos validasi backend: {filename} ({validation_confidence*100:.0f}%)")
|
|
||||||
|
|
||||||
if not is_model_ready():
|
|
||||||
# Model belum siap - HAPUS FILE
|
|
||||||
if os.path.exists(filepath):
|
|
||||||
try:
|
|
||||||
os.remove(filepath)
|
|
||||||
print(f"[PREDICT] ✓ File DIHAPUS (model belum ready): {filename}")
|
|
||||||
except Exception as del_err:
|
|
||||||
print(f"[PREDICT] ⚠️ Error menghapus file: {del_err}")
|
|
||||||
|
|
||||||
flash('Model belum tersedia. Jalankan training terlebih dahulu.', 'error')
|
|
||||||
return redirect(url_for('index'))
|
|
||||||
|
|
||||||
# Preprocess and extract
|
|
||||||
img_rgb, gray_processed = preprocess_pipeline(filepath)
|
|
||||||
features = extractor.extract_all_features(img_rgb, gray_processed)
|
|
||||||
features_scaled = scaler.transform([features])
|
features_scaled = scaler.transform([features])
|
||||||
|
|
||||||
pred_encoded = model.predict(features_scaled)[0]
|
pred_encoded = model.predict(features_scaled)[0]
|
||||||
prediction = label_encoder.inverse_transform([pred_encoded])[0]
|
prediction = label_encoder.inverse_transform([pred_encoded])[0]
|
||||||
confidence = estimate_prediction_confidence(model, features_scaled)
|
confidence = estimate_prediction_confidence(model, features_scaled)
|
||||||
if confidence is None:
|
if confidence is None:
|
||||||
probabilities = model.predict_proba(features_scaled)[0]
|
confidence = float(max(model.predict_proba(features_scaled)[0]) * 100)
|
||||||
confidence = float(max(probabilities) * 100)
|
|
||||||
|
pmk_type = None
|
||||||
|
if prediction.lower() == 'sakit' and multiclass_model is not None:
|
||||||
|
multi_scaled = multiclass_scaler.transform([features])
|
||||||
|
multi_enc = multiclass_model.predict(multi_scaled)[0]
|
||||||
|
pmk_type = multiclass_label_encoder.inverse_transform([multi_enc])[0]
|
||||||
|
|
||||||
# Prepare feature dictionary for database
|
|
||||||
features_dict = {name: float(features[i]) for i, name in enumerate(extractor.feature_names)}
|
features_dict = {name: float(features[i]) for i, name in enumerate(extractor.feature_names)}
|
||||||
|
features_table = list(zip(extractor.feature_names, [round(float(x), 4) for x in features]))
|
||||||
|
|
||||||
# Try to save to MySQL first (primary storage)
|
return {
|
||||||
|
'original_filename': original_filename,
|
||||||
|
'prediction': prediction,
|
||||||
|
'pmk_type': pmk_type,
|
||||||
|
'confidence': confidence,
|
||||||
|
'features': features,
|
||||||
|
'features_dict': features_dict,
|
||||||
|
'features_table': features_table,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _save_prediction_to_mysql(original_filename, filename, filepath, prediction, confidence, features_dict):
|
||||||
|
"""Save a single prediction to MySQL and return rowid."""
|
||||||
rowid = None
|
rowid = None
|
||||||
if MYSQL_AVAILABLE:
|
if MYSQL_AVAILABLE:
|
||||||
try:
|
try:
|
||||||
rowid = save_prediction_mysql(original_filename, filename, filepath, prediction, confidence, features_dict)
|
rowid = save_prediction_mysql(original_filename, filename, filepath, prediction, confidence, features_dict)
|
||||||
print(f"✓ Saved prediction to MySQL, id={rowid}")
|
print(f"✓ Saved prediction to MySQL, id={rowid}")
|
||||||
# store DB id in session so result page can link to the new history row
|
|
||||||
try:
|
|
||||||
session.setdefault('last_prediction', {})
|
|
||||||
session['last_prediction']['db_id'] = int(rowid) if rowid is not None else None
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
import traceback
|
import traceback
|
||||||
print(f"✗ Gagal menyimpan ke MySQL: {e}")
|
print(f"✗ Gagal menyimpan ke MySQL: {e}")
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
return rowid
|
||||||
|
|
||||||
# Also save to CSV as fallback/backup (ensure consistent columns, migrate old files if needed)
|
|
||||||
|
def _append_prediction_to_csv(original_filename, filename, prediction, confidence, features, features_dict):
|
||||||
|
"""Append a single prediction row to CSV fallback."""
|
||||||
try:
|
try:
|
||||||
os.makedirs(os.path.join(BASE_DIR, 'results'), exist_ok=True)
|
os.makedirs(os.path.join(BASE_DIR, 'results'), exist_ok=True)
|
||||||
data = {
|
data = {'image_path': [original_filename], 'filename': [filename],
|
||||||
'image_path': [original_filename], # Simpan nama asli
|
'prediction': [prediction], 'confidence': [confidence],
|
||||||
'filename': [filename], # Simpan nama unik
|
'timestamp': [pd.Timestamp.now()]}
|
||||||
'prediction': [prediction],
|
|
||||||
'confidence': [confidence],
|
|
||||||
'timestamp': [pd.Timestamp.now()]
|
|
||||||
}
|
|
||||||
for i, name in enumerate(extractor.feature_names):
|
for i, name in enumerate(extractor.feature_names):
|
||||||
data[name] = [float(features[i])]
|
data[name] = [float(features[i])]
|
||||||
|
|
||||||
df = pd.DataFrame(data)
|
df = pd.DataFrame(data)
|
||||||
csv_path = os.path.join(BASE_DIR, 'results', 'predictions.csv')
|
csv_path = os.path.join(BASE_DIR, 'results', 'predictions.csv')
|
||||||
|
|
||||||
if os.path.exists(csv_path):
|
if os.path.exists(csv_path):
|
||||||
# Check existing columns
|
|
||||||
try:
|
try:
|
||||||
existing_cols = pd.read_csv(csv_path, nrows=0).columns.tolist()
|
existing_cols = pd.read_csv(csv_path, nrows=0).columns.tolist()
|
||||||
except Exception:
|
except Exception:
|
||||||
existing_cols = []
|
existing_cols = []
|
||||||
|
|
||||||
desired_cols = list(df.columns)
|
desired_cols = list(df.columns)
|
||||||
|
|
||||||
# If existing file missing any desired columns, migrate by adding empty columns and re-saving
|
|
||||||
if not set(desired_cols).issubset(set(existing_cols)):
|
if not set(desired_cols).issubset(set(existing_cols)):
|
||||||
try:
|
try:
|
||||||
df_existing = pd.read_csv(csv_path)
|
df_existing = pd.read_csv(csv_path)
|
||||||
for c in desired_cols:
|
for c in desired_cols:
|
||||||
if c not in df_existing.columns:
|
if c not in df_existing.columns:
|
||||||
df_existing[c] = ''
|
df_existing[c] = ''
|
||||||
# Reorder columns to desired order
|
|
||||||
df_existing = df_existing.reindex(columns=desired_cols)
|
df_existing = df_existing.reindex(columns=desired_cols)
|
||||||
df_existing.to_csv(csv_path, index=False)
|
df_existing.to_csv(csv_path, index=False)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Gagal memigrasi CSV lama: {e}")
|
print(f"Gagal memigrasi CSV lama: {e}")
|
||||||
|
|
||||||
# Append new row without header
|
|
||||||
df.to_csv(csv_path, mode='a', header=False, index=False)
|
df.to_csv(csv_path, mode='a', header=False, index=False)
|
||||||
else:
|
else:
|
||||||
df.to_csv(csv_path, index=False)
|
df.to_csv(csv_path, index=False)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Gagal menyimpan prediksi ke CSV: {e}")
|
print(f"Gagal menyimpan prediksi ke CSV: {e}")
|
||||||
|
|
||||||
# Compact features table for session (round values to reduce size)
|
|
||||||
features_table = list(zip(extractor.feature_names, [round(float(x), 4) for x in features]))
|
|
||||||
|
|
||||||
# Simpan hasil prediksi ke session untuk digunakan di halaman result
|
@app.route('/predict', methods=['POST'])
|
||||||
existing_db_id = None
|
def predict():
|
||||||
|
if 'image' not in request.files:
|
||||||
|
flash('File tidak ditemukan', 'error')
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
files = request.files.getlist('image')
|
||||||
|
if not files or (len(files) == 1 and files[0].filename == ''):
|
||||||
|
flash('Tidak ada file yang dipilih', 'error')
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
if not is_model_ready():
|
||||||
|
flash('Model belum tersedia. Jalankan training terlebih dahulu.', 'error')
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
results = []
|
||||||
|
|
||||||
|
for file in files:
|
||||||
|
if file.filename == '' or not allowed_file(file.filename):
|
||||||
|
continue
|
||||||
|
|
||||||
|
original_filename = secure_filename(file.filename)
|
||||||
|
ext = original_filename.rsplit('.', 1)[1].lower()
|
||||||
|
filename = f"{uuid.uuid4()}.{ext}"
|
||||||
|
filepath = os.path.join(UPLOAD_FOLDER, filename)
|
||||||
|
file.save(filepath)
|
||||||
|
|
||||||
|
is_cattle, validation_confidence, validation_reason = validate_cattle_image(filepath, confidence_threshold=0.65)
|
||||||
|
if not is_cattle:
|
||||||
|
if os.path.exists(filepath):
|
||||||
try:
|
try:
|
||||||
existing_db_id = session.get('last_prediction', {}).get('db_id')
|
os.remove(filepath)
|
||||||
except Exception:
|
except Exception:
|
||||||
existing_db_id = None
|
pass
|
||||||
|
continue
|
||||||
|
|
||||||
session['last_prediction'] = {
|
result = _predict_single(filepath, original_filename)
|
||||||
'filename': filename,
|
result['filename'] = filename
|
||||||
'original_filename': original_filename,
|
result['filepath'] = filepath
|
||||||
'prediction': prediction,
|
|
||||||
'confidence': confidence,
|
results.append(result)
|
||||||
'features_table': features_table,
|
|
||||||
'filepath': filepath,
|
if not results:
|
||||||
'source': 'image_processing',
|
flash('Tidak ada gambar sapi yang valid untuk diproses', 'error')
|
||||||
'db_id': existing_db_id
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
# Save ALL images as ONE prediction row
|
||||||
|
images_for_db = []
|
||||||
|
for r in results:
|
||||||
|
images_for_db.append({
|
||||||
|
'original_filename': r['original_filename'],
|
||||||
|
'filename': r['filename'],
|
||||||
|
'image_path': r['filepath'],
|
||||||
|
'prediction': r['prediction'],
|
||||||
|
'pmk_type': r['pmk_type'],
|
||||||
|
'confidence': r['confidence'],
|
||||||
|
})
|
||||||
|
|
||||||
|
pred_id = None
|
||||||
|
if MYSQL_AVAILABLE:
|
||||||
|
try:
|
||||||
|
pred_id = save_batch_prediction_mysql(images_for_db)
|
||||||
|
print(f"✓ Saved batch prediction to MySQL, id={pred_id} ({len(results)} images)")
|
||||||
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
|
print(f"✗ Gagal menyimpan batch ke MySQL: {e}")
|
||||||
|
traceback.print_exc()
|
||||||
|
|
||||||
|
# Also save to CSV (batch summary)
|
||||||
|
_append_prediction_to_csv(
|
||||||
|
f"{len(results)} images batch",
|
||||||
|
f"batch_{pred_id}" if pred_id else "batch_unknown",
|
||||||
|
'sakit' if any(r['prediction'].lower() == 'sakit' for r in results) else 'sehat',
|
||||||
|
max(r['confidence'] for r in results),
|
||||||
|
results[0]['features'],
|
||||||
|
results[0]['features_dict']
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build image data for session/template
|
||||||
|
upload_images = []
|
||||||
|
for r in results:
|
||||||
|
upload_images.append({
|
||||||
|
'filename': r['filename'],
|
||||||
|
'original_filename': r['original_filename'],
|
||||||
|
'filepath': r['filepath'],
|
||||||
|
'prediction': r['prediction'],
|
||||||
|
'pmk_type': r['pmk_type'],
|
||||||
|
'confidence': r['confidence'],
|
||||||
|
'features_table': r['features_table'],
|
||||||
|
})
|
||||||
|
|
||||||
|
# Determine if any sick results
|
||||||
|
sick_pmk_types = set()
|
||||||
|
for r in results:
|
||||||
|
if r['prediction'].lower() == 'sakit' and r['pmk_type']:
|
||||||
|
sick_pmk_types.add(r['pmk_type'])
|
||||||
|
|
||||||
|
pmk_to_symptoms = {
|
||||||
|
'pmk_oral': ['G02', 'G03', 'G04', 'G10', 'G14', 'G18', 'G19', 'G20', 'G21'],
|
||||||
|
'pmk_podal': ['G05', 'G06', 'G15', 'G22', 'G23', 'G24'],
|
||||||
}
|
}
|
||||||
|
|
||||||
# Tentukan template berdasarkan hasil prediksi
|
preselected = set()
|
||||||
# Tambahkan jeda singkat agar tampilan hasil tidak muncul terlalu cepat
|
for pmk_type in sick_pmk_types:
|
||||||
if prediction.lower() == 'sakit':
|
key = pmk_type.lower()
|
||||||
time.sleep(1.5)
|
if key in pmk_to_symptoms:
|
||||||
return redirect(url_for('result_sick'))
|
preselected.update(pmk_to_symptoms[key])
|
||||||
else:
|
|
||||||
time.sleep(1.5)
|
|
||||||
return redirect(url_for('result_healthy'))
|
|
||||||
|
|
||||||
flash('Tipe file tidak didukung', 'error')
|
# Store all images in session for expert system display
|
||||||
return redirect(url_for('index'))
|
session['last_prediction'] = {
|
||||||
|
'db_id': pred_id,
|
||||||
|
'filename': upload_images[0]['filename'],
|
||||||
|
'original_filename': upload_images[0]['original_filename'],
|
||||||
|
'prediction': 'sakit' if sick_pmk_types else 'sehat',
|
||||||
|
'confidence': upload_images[0]['confidence'],
|
||||||
|
'source': 'image_processing',
|
||||||
|
}
|
||||||
|
session['upload_images_data'] = upload_images
|
||||||
|
|
||||||
|
time.sleep(1.0)
|
||||||
|
|
||||||
|
if preselected:
|
||||||
|
symptoms_param = ','.join(sorted(preselected))
|
||||||
|
return redirect(url_for('expert_system_page', mode='image', symptoms=symptoms_param))
|
||||||
|
else:
|
||||||
|
flash(f'Semua {len(results)} gambar terdeteksi SEHAT', 'success')
|
||||||
|
return redirect(url_for('result_healthy'))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/result/healthy')
|
@app.route('/result/healthy')
|
||||||
|
|
@ -744,12 +809,14 @@ def expert_system_page():
|
||||||
|
|
||||||
# Jika ada hasil prediksi berbasis image processing sebelumnya, tambahkan ke konteks
|
# Jika ada hasil prediksi berbasis image processing sebelumnya, tambahkan ke konteks
|
||||||
last_prediction = session.get('last_prediction', {})
|
last_prediction = session.get('last_prediction', {})
|
||||||
|
upload_images = session.get('upload_images_data', [])
|
||||||
image_info = None
|
image_info = None
|
||||||
if use_image_context and last_prediction.get('source') == 'image_processing':
|
if use_image_context and last_prediction.get('source') == 'image_processing':
|
||||||
image_info = {
|
image_info = {
|
||||||
'filename': last_prediction.get('original_filename', ''),
|
'filename': last_prediction.get('original_filename', ''),
|
||||||
'prediction': last_prediction.get('prediction', ''),
|
'prediction': last_prediction.get('prediction', ''),
|
||||||
'confidence': last_prediction.get('confidence', 0)
|
'confidence': last_prediction.get('confidence', 0),
|
||||||
|
'db_id': last_prediction.get('db_id'),
|
||||||
}
|
}
|
||||||
|
|
||||||
return render_template('expert_system.html',
|
return render_template('expert_system.html',
|
||||||
|
|
@ -758,23 +825,34 @@ def expert_system_page():
|
||||||
diagnosis=diagnosis,
|
diagnosis=diagnosis,
|
||||||
selected_gejala=gejala_terpilih,
|
selected_gejala=gejala_terpilih,
|
||||||
image_info=image_info,
|
image_info=image_info,
|
||||||
|
upload_images=upload_images,
|
||||||
context_mode='image' if use_image_context else 'manual')
|
context_mode='image' if use_image_context else 'manual')
|
||||||
|
|
||||||
# GET request - tampilkan form
|
# GET request - tampilkan form
|
||||||
|
# Parse preselected symptoms from query param
|
||||||
|
preselected_symptoms = []
|
||||||
|
symptoms_param = request.args.get('symptoms', '')
|
||||||
|
if symptoms_param:
|
||||||
|
preselected_symptoms = [s.strip() for s in symptoms_param.split(',') if s.strip()]
|
||||||
|
|
||||||
# Ambil informasi gambar dari session jika hasil sebelumnya berasal dari image processing
|
# Ambil informasi gambar dari session jika hasil sebelumnya berasal dari image processing
|
||||||
last_prediction = session.get('last_prediction', {})
|
last_prediction = session.get('last_prediction', {})
|
||||||
|
upload_images = session.get('upload_images_data', [])
|
||||||
image_info = None
|
image_info = None
|
||||||
if use_image_context and last_prediction.get('source') == 'image_processing':
|
if use_image_context and last_prediction.get('source') == 'image_processing':
|
||||||
image_info = {
|
image_info = {
|
||||||
'filename': last_prediction.get('original_filename', ''),
|
'filename': last_prediction.get('original_filename', ''),
|
||||||
'prediction': last_prediction.get('prediction', ''),
|
'prediction': last_prediction.get('prediction', ''),
|
||||||
'confidence': last_prediction.get('confidence', 0)
|
'confidence': last_prediction.get('confidence', 0),
|
||||||
|
'db_id': last_prediction.get('db_id'),
|
||||||
}
|
}
|
||||||
|
|
||||||
return render_template('expert_system.html',
|
return render_template('expert_system.html',
|
||||||
gejala_list=expert_system.get_gejala_list(),
|
gejala_list=expert_system.get_gejala_list(),
|
||||||
gejala_groups=expert_system.get_gejala_groups(),
|
gejala_groups=expert_system.get_gejala_groups(),
|
||||||
image_info=image_info,
|
image_info=image_info,
|
||||||
|
upload_images=upload_images,
|
||||||
|
selected_gejala=preselected_symptoms,
|
||||||
context_mode='image' if use_image_context else 'manual')
|
context_mode='image' if use_image_context else 'manual')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ DISEASE_ALIAS_MAP = {
|
||||||
'P01': {'ORAL', 'ORAL_KUAT', 'P01'},
|
'P01': {'ORAL', 'ORAL_KUAT', 'P01'},
|
||||||
'P02': {'PODAL', 'PODAL_KUAT', 'P02'},
|
'P02': {'PODAL', 'PODAL_KUAT', 'P02'},
|
||||||
'P03': {'LAKTASI', 'LAKTASI_KUAT', 'P03'},
|
'P03': {'LAKTASI', 'LAKTASI_KUAT', 'P03'},
|
||||||
'P04': {'JUVENIL', 'JUVENIL_KUAT', 'P04'},
|
|
||||||
'P05': {'AKUT_GENERAL', 'AKUT_GENERAL_KUAT', 'P05'},
|
'P05': {'AKUT_GENERAL', 'AKUT_GENERAL_KUAT', 'P05'},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,7 +210,6 @@ class ForwardChaining:
|
||||||
'P01': 'oral',
|
'P01': 'oral',
|
||||||
'P02': 'podal',
|
'P02': 'podal',
|
||||||
'P03': 'laktasi',
|
'P03': 'laktasi',
|
||||||
'P04': 'juvenil',
|
|
||||||
'P05': 'akut umum'
|
'P05': 'akut umum'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,81 +1,201 @@
|
||||||
image_name,label_name,label,avg_red,avg_green,avg_blue,contrast,homogeneity,correlation,energy
|
image_name,label_name,label,avg_red,avg_green,avg_blue,mean_hue,mean_saturation,mean_value,std_hue,std_saturation,std_value,contrast,homogeneity,correlation,energy,dissimilarity,ASM,hist_r_0,hist_r_1,hist_r_2,hist_r_3,hist_r_4,hist_r_5,hist_r_6,hist_r_7,hist_g_0,hist_g_1,hist_g_2,hist_g_3,hist_g_4,hist_g_5,hist_g_6,hist_g_7,hist_b_0,hist_b_1,hist_b_2,hist_b_3,hist_b_4,hist_b_5,hist_b_6,hist_b_7,hu_moment_1,hu_moment_2,hu_moment_3,hu_moment_4,hu_moment_5,hu_moment_6,hu_moment_7
|
||||||
Healthy (29).jpg,normal,0,38.26141357421875,37.37353515625,36.12744140625,1375.900070241906,0.8564597118356718,0.9076873284220274,0.8316132560236419
|
14-Copy-10-_jpg.rf.d1e665991e98c14e423bb213484ab7ec.jpg,sakit,0,31.442413330078125,29.391250610351562,22.996002197265625,7.98065185546875,10.585678100585938,31.605575561523438,20.709009170532227,31.921104431152344,77.06120300292969,1126.1105509692272,0.8514636928765195,0.8901975736444322,0.8325719841364824,8.094875186409013,0.693189577011642,0.8534393310546875,0.0,0.0,0.000579833984375,0.0124359130859375,0.01666259765625,0.0372314453125,0.07965087890625,0.8534393310546875,0.0,0.0,0.0008392333984375,0.0282135009765625,0.0285186767578125,0.0350341796875,0.053955078125,0.8534393310546875,0.0010986328125,0.0222625732421875,0.03106689453125,0.0235137939453125,0.0205535888671875,0.0238037109375,0.024261474609375,2.545060353738578,5.769250385045134,8.52906389580099,9.931062615971916,-9.999999999984299,-9.99991916564025,9.99999999999472
|
||||||
Healthy (95).jpg,normal,0,116.6544189453125,108.01556396484375,95.7125244140625,2639.1888915402874,0.5144186750490266,0.885222541677552,0.45146488814132785
|
2346-128-_jpg.rf.2b458f808811a8c2edc380ed6bb3c717.jpg,sakit,0,52.826019287109375,46.61273193359375,37.72100830078125,10.66790771484375,19.94097900390625,52.922393798828125,21.743560791015625,43.40488052368164,92.06571197509766,336.24500161233686,0.7856777532856934,0.9763393573045164,0.7343507911848581,4.33767331898578,0.5392881394429397,0.7447662353515625,0.0,0.000762939453125,0.0083770751953125,0.020172119140625,0.050079345703125,0.0530548095703125,0.1227874755859375,0.7447662353515625,0.0,0.009765625,0.043182373046875,0.0352935791015625,0.03125,0.0540618896484375,0.0816802978515625,0.7449493408203125,0.0220184326171875,0.043853759765625,0.0356597900390625,0.0326385498046875,0.0388641357421875,0.061553955078125,0.0204620361328125,2.921813371368525,6.330823441215252,9.513570594731513,9.54591742213028,9.999999999858792,9.999454800118935,9.999999999932756
|
||||||
air_liur_12h.jpg,normal,0,28.0606689453125,28.48687744140625,27.1719970703125,2718.0165872536786,0.8364354350429116,0.7368102194714145,0.8235741121215968
|
38131144184_03e65940d1_o.jpg,sakit,0,101.34414672851562,91.10659790039062,82.79591369628906,34.8975830078125,28.642837524414062,102.78387451171875,68.15164184570312,37.15221405029297,98.43955993652344,868.4141037913905,0.5168381762161308,0.9461258668878708,0.4392799109351715,10.518673184652135,0.1930230186290353,0.4658355712890625,0.0,0.0,0.00927734375,0.0958099365234375,0.14898681640625,0.2127685546875,0.06732177734375,0.4658355712890625,0.0,0.00048828125,0.0698089599609375,0.114776611328125,0.197509765625,0.13653564453125,0.015045166015625,0.4658355712890625,0.000946044921875,0.0482940673828125,0.0938568115234375,0.1238861083984375,0.168121337890625,0.0856475830078125,0.0134124755859375,3.084137473530295,7.120391345333493,9.701479488943049,9.93536416236092,9.99999999999806,9.999990892725279,9.999999999998016
|
||||||
air_liur_1h.jpg,normal,0,107.8831787109375,92.25640869140625,57.67578125,1057.1871091616208,0.4025787648832689,0.8946021403572079,0.2907755356594676
|
49579785876_09f6840ed2_o.jpg,sakit,0,84.51034545898438,94.24876403808594,140.573486328125,160.73883056640625,73.42205810546875,145.00631713867188,127.58490753173828,70.21085357666016,103.22804260253906,1138.937970697565,0.4156634155524623,0.8719909125565901,0.2702354737521527,13.294365698557668,0.07309750648931097,0.3054351806640625,0.0,0.2269439697265625,0.186676025390625,0.148284912109375,0.113128662109375,0.0139007568359375,0.0056304931640625,0.3054351806640625,0.0,0.002838134765625,0.2722930908203125,0.3306732177734375,0.072540283203125,0.00970458984375,0.0065155029296875,0.3054351806640625,9.1552734375e-05,0.004241943359375,0.083892822265625,0.1086578369140625,0.0807342529296875,0.0418853759765625,0.37506103515625,3.0340379771267645,7.600374995130791,9.932898274034047,9.999727556758529,-10.0,9.999999956916783,10.0
|
||||||
air_liur_5h.jpg,normal,0,38.865234375,35.009033203125,28.94757080078125,1125.4364354938803,0.5850194864245984,0.7459059889548558,0.5533045177927906
|
5198047453_ab0d6212d0_bWM-1.jpg,sakit,0,71.85682678222656,83.8292236328125,69.59938049316406,73.0799560546875,33.92225646972656,89.42710876464844,96.98072814941406,42.519798278808594,96.02003479003906,4335.675951035452,0.4594541743837602,0.6993818920488885,0.43209145713367353,34.205795042081874,0.18704524240600953,0.522674560546875,0.0,0.010040283203125,0.101409912109375,0.20758056640625,0.10516357421875,0.03643798828125,0.016693115234375,0.522674560546875,0.0,0.000335693359375,0.0627288818359375,0.1245880126953125,0.109466552734375,0.115478515625,0.064727783203125,0.522674560546875,0.0045928955078125,0.036285400390625,0.1079864501953125,0.16339111328125,0.1127471923828125,0.03973388671875,0.0125885009765625,2.8315533256001744,6.823155883056394,9.63863868182487,9.983985427042798,9.999999999999813,-9.999997491301684,-9.999999999999691
|
||||||
augmented_healthyf_107.jpg,normal,0,12.859130859375,13.083251953125,12.71649169921875,1571.6210654835106,0.8666531601617821,0.5412038535944765,0.8650011832213252
|
5198047901_73ee826532_bWM.jpg,sakit,0,70.69245910644531,71.14852905273438,66.82170104980469,42.832275390625,11.0601806640625,73.0533447265625,74.88367462158203,23.032129287719727,97.92052459716797,2425.273187140068,0.6207714321757023,0.864726134494947,0.5817008937170794,19.47257075064787,0.33852056663415325,0.6283111572265625,0.0,0.0004730224609375,0.0081939697265625,0.0919189453125,0.0932159423828125,0.080291748046875,0.09759521484375,0.6283111572265625,0.0,9.1552734375e-05,0.0055694580078125,0.097900390625,0.0883636474609375,0.073699951171875,0.1060638427734375,0.6283111572265625,0.001251220703125,0.014251708984375,0.04522705078125,0.0825042724609375,0.0695953369140625,0.063262939453125,0.0955963134765625,2.7573571130506798,7.031521988532275,9.872106175995551,9.568289767055449,-9.99999999998282,-9.999775419033984,9.99999999994624
|
||||||
augmented_healthyf_109.jpg,normal,0,67.1448974609375,65.0955810546875,59.59539794921875,2406.7418223232685,0.5678815775268374,0.816570659295464,0.5471936533076194
|
52700780213_927e29e488_o.jpg,sakit,0,85.54339599609375,84.51777648925781,92.01506042480469,90.64212036132812,22.018783569335938,97.78349304199219,125.8850326538086,30.533153533935547,111.52782440185547,1916.5127242586104,0.5748715889209686,0.9001479284915722,0.5123468014678538,15.745464867148357,0.2626155187780453,0.5524139404296875,0.0,0.0,0.0054779052734375,0.05938720703125,0.1537322998046875,0.1744537353515625,0.054534912109375,0.5524139404296875,0.0,0.0,0.021453857421875,0.105926513671875,0.0814666748046875,0.1348419189453125,0.1038970947265625,0.5524139404296875,0.0,0.010894775390625,0.02801513671875,0.06719970703125,0.0628204345703125,0.056610107421875,0.2220458984375,2.9418261525212888,7.517431638787939,9.660141343225368,9.970850054498968,9.999999999999398,9.999999112706123,-9.999999999999378
|
||||||
augmented_healthyf_120.jpg,normal,0,93.9176025390625,88.801025390625,84.21783447265625,949.4897725479414,0.35760621418005084,0.8851606269446273,0.26395981147474173
|
5531555631_23432771c3_o.jpg,sakit,0,91.22853088378906,84.02670288085938,78.68492126464844,28.197784423828125,17.83892822265625,91.98481750488281,64.71118927001953,27.535022735595703,100.52338409423828,2024.7890404665097,0.5530324349239745,0.8842229289490247,0.48188115869269993,17.62467514639698,0.23233791058464534,0.5262603759765625,0.0,0.0,0.0203857421875,0.1047210693359375,0.1186065673828125,0.08331298828125,0.1467132568359375,0.5262603759765625,0.0,7.62939453125e-05,0.03302001953125,0.1367645263671875,0.1417083740234375,0.1031494140625,0.05902099609375,0.5262603759765625,0.00079345703125,0.0078887939453125,0.064727783203125,0.13751220703125,0.1405792236328125,0.096343994140625,0.0258941650390625,2.901416153085185,6.966894507387559,9.621594957070377,9.696018794128154,-9.999999999947752,9.999972120544195,-9.999999999999226
|
||||||
augmented_healthyf_121.jpg,normal,0,86.966796875,81.22918701171875,74.23321533203125,1159.2603712165053,0.33397589089752927,0.8273208831826943,0.24062717174495526
|
6504861261_1935d54e91_o.jpg,sakit,0,113.43666076660156,96.36286926269531,83.07144165039062,22.957611083984375,42.70439147949219,113.49639892578125,46.05146408081055,39.89169692993164,95.50852966308594,1217.7989126695793,0.42368905676382856,0.9160624801734367,0.36467869190516095,14.698207840202384,0.13303845512047216,0.3968505859375,0.0,0.0,0.005767822265625,0.1343994140625,0.1909637451171875,0.16314697265625,0.1088714599609375,0.3968505859375,0.0,0.001251220703125,0.1318359375,0.1970062255859375,0.1314544677734375,0.1191558837890625,0.0224456787109375,0.3968505859375,0.00079345703125,0.0670166015625,0.215545654296875,0.137054443359375,0.1309356689453125,0.0432891845703125,0.008514404296875,3.048828982050739,7.465473728789742,9.972402326628774,9.971642835329247,9.999999999999954,9.999997690892693,-9.99999999999981
|
||||||
augmented_healthyf_136.jpg,normal,0,29.81982421875,29.81768798828125,27.61932373046875,1419.9608481131,0.6650600871245955,0.7081196501005139,0.6535094345162221
|
6505036901_0325410a27_o.jpg,sakit,0,89.84251403808594,85.86640930175781,82.57882690429688,35.947265625,11.159286499023438,90.84352111816406,79.6043472290039,20.166767120361328,110.7376708984375,1889.7247391270337,0.6291683763616375,0.9163819902853044,0.5563844749182272,14.670001450928472,0.30962016321636937,0.5893707275390625,0.0,0.0,0.0023193359375,0.0262603759765625,0.0758209228515625,0.08538818359375,0.2208404541015625,0.5893707275390625,0.0,0.0,0.0002288818359375,0.05035400390625,0.0894775390625,0.0962371826171875,0.1743316650390625,0.5893707275390625,0.0,0.00067138671875,0.0107269287109375,0.0541839599609375,0.0991668701171875,0.10723876953125,0.138641357421875,2.924446367188315,6.563905372386156,9.453669771261666,9.8106399235842,-9.999999999972859,-9.999877346176834,-9.999999999993769
|
||||||
augmented_healthyf_139.jpg,normal,0,64.03643798828125,61.98211669921875,57.20904541015625,2226.449247903912,0.5983904656254683,0.8350841993436156,0.5791465041774432
|
6505084171_92fc25f739_o.jpg,sakit,0,73.15585327148438,70.72311401367188,69.94853210449219,54.10052490234375,10.17376708984375,75.27783203125,98.1626205444336,18.920629501342773,96.81059265136719,785.7230737917349,0.7220290079331008,0.953675726675793,0.6045723665586282,6.3481060544376815,0.3655302264115186,0.619415283203125,0.0,0.0,0.0,0.0206451416015625,0.156646728515625,0.1764068603515625,0.026885986328125,0.619415283203125,0.0,0.0,1.52587890625e-05,0.062774658203125,0.159820556640625,0.133544921875,0.0244293212890625,0.619415283203125,0.0,0.0,0.0241546630859375,0.0561370849609375,0.136199951171875,0.131927490234375,0.03216552734375,2.8741799592792177,6.560724031656362,9.621781588197427,9.752836872174505,9.999999999967047,-9.99983766671353,9.99999999999026
|
||||||
augmented_healthyf_14.jpg,normal,0,42.504638671875,35.98724365234375,29.75640869140625,2338.409334599671,0.545029518014188,0.5660561860934739,0.5220891102720221
|
6505095679_f21defeac3_o.jpg,sakit,0,128.75938415527344,123.14814758300781,119.46382141113281,62.493408203125,23.937881469726562,132.99754333496094,85.7709732055664,24.499929428100586,90.73417663574219,559.511080894093,0.4483261060159008,0.9615315508838561,0.2833171257504429,7.519527333232015,0.0803032662441257,0.29833984375,0.0,0.0,0.0186614990234375,0.189605712890625,0.205169677734375,0.169525146484375,0.1186981201171875,0.29833984375,0.0,0.0001373291015625,0.045440673828125,0.1929779052734375,0.231689453125,0.1849365234375,0.046478271484375,0.29833984375,3.0517578125e-05,0.0101165771484375,0.0770263671875,0.1607208251953125,0.2899322509765625,0.1140899658203125,0.04974365234375,3.08112721724747,7.5374742793315725,9.842467190199576,9.964676792778103,9.999999999999522,9.999995429876781,9.999999999999478
|
||||||
augmented_healthyf_152.jpg,normal,0,27.61578369140625,27.93707275390625,26.90155029296875,2127.897058738015,0.860368345251572,0.7985680850802245,0.8455607843810077
|
6505358073_8e50dc787e_o.jpg,sakit,0,152.85610961914062,135.5255126953125,137.22842407226562,154.16995239257812,27.813201904296875,153.63816833496094,158.15208435058594,23.66185188293457,80.1552963256836,682.2294830316314,0.5512938187432983,0.9407202513201164,0.19190230170909572,6.540843647356791,0.03685662297380112,0.202728271484375,0.0,0.0,0.0,0.027679443359375,0.547637939453125,0.0987091064453125,0.1232452392578125,0.202728271484375,0.0,0.0,0.033935546875,0.299041748046875,0.31005859375,0.045074462890625,0.109161376953125,0.202728271484375,0.0,1.52587890625e-05,0.0450592041015625,0.2668304443359375,0.2919769287109375,0.109344482421875,0.08404541015625,3.054158610665358,7.928130320871967,9.990790937746873,9.985019808708941,-9.999999999999968,-9.999998533095244,-9.999999999999973
|
||||||
augmented_healthyf_16.jpg,normal,0,33.39727783203125,33.122802734375,30.6710205078125,1449.724817096472,0.6457443461117479,0.7341381580485628,0.6328015157235215
|
6505584445_e23fc6527a_o.jpg,sakit,0,93.50617980957031,88.54948425292969,83.3775634765625,40.47406005859375,11.965362548828125,93.76902770996094,86.31880187988281,22.22137451171875,115.3624267578125,3078.8388665083744,0.6966655902313641,0.8732665553101575,0.564425805848278,17.356301983763476,0.3186587954032782,0.5988922119140625,0.0,0.0,0.0,0.0,0.010711669921875,0.1231689453125,0.2672271728515625,0.5988922119140625,0.0,0.0,0.0,0.0,0.0799102783203125,0.1257171630859375,0.1954803466796875,0.5988922119140625,0.0,0.0,0.0003204345703125,0.02691650390625,0.13018798828125,0.097625732421875,0.14605712890625,2.7970251330177027,7.0037542170187645,9.590739914614721,9.402628907803862,9.999999999727883,-9.999768605765718,-9.999999999951772
|
||||||
augmented_healthyf_162.jpg,normal,0,26.30438232421875,24.33197021484375,21.0955810546875,2258.8342801410695,0.7834171580207735,0.6500941889171303,0.7736485850776457
|
7-day-vesicle-steer-foot_jpg.rf.cdd8da2a7ec2c4dbca9fef213ab3da24.jpg,sakit,0,45.52806091308594,34.62548828125,20.190948486328125,9.506805419921875,34.525787353515625,45.644317626953125,21.694623947143555,63.25164794921875,82.3665771484375,706.2429133370688,0.7664730819554814,0.9172765192853882,0.734271317338102,7.661359290634473,0.5391730231027504,0.75628662109375,0.0001220703125,0.002227783203125,0.0178375244140625,0.03717041015625,0.06201171875,0.07861328125,0.0457305908203125,0.75628662109375,0.0,0.014862060546875,0.07843017578125,0.0754241943359375,0.05035400390625,0.0241851806640625,0.000457763671875,0.756378173828125,0.07135009765625,0.109954833984375,0.039703369140625,0.015838623046875,0.005950927734375,0.000762939453125,6.103515625e-05,2.5819542857124542,6.217855135213198,9.812728884881468,8.577484938463773,-9.999999996888173,9.992871345954295,9.999999997337516
|
||||||
augmented_healthyf_166.jpg,normal,0,35.2481689453125,34.2960205078125,31.43695068359375,1860.0630745973351,0.6670905381274541,0.7264419718580579,0.6555533055842447
|
8400384539_93d1834718_o.jpg,sakit,0,77.65904235839844,77.50015258789062,76.99766540527344,45.643768310546875,13.98590087890625,82.74836730957031,82.0966796875,25.886003494262695,105.98339080810547,1745.3675390520573,0.6562868515751261,0.9137132501439811,0.5821938764956844,13.760638120509293,0.33901495992279934,0.61212158203125,0.0,0.0,0.0210418701171875,0.0723419189453125,0.06451416015625,0.0759429931640625,0.1540374755859375,0.61212158203125,0.0,0.0,0.00067138671875,0.09112548828125,0.0813446044921875,0.0701141357421875,0.144622802734375,0.61212158203125,0.0,0.001708984375,0.0263519287109375,0.0474853515625,0.0930023193359375,0.081451416015625,0.13787841796875,2.8622216666684897,6.664417220311037,9.388821226325877,9.786885377118576,-9.999999999976465,-9.999873995425418,9.999999999969582
|
||||||
augmented_healthyf_17.jpg,normal,0,13.36212158203125,13.58575439453125,13.21563720703125,1683.0189469126392,0.8597379431340607,0.5337585827330162,0.857971394036357
|
Base-ringing-400x284.jpg,sakit,0,115.13601684570312,86.74455261230469,71.52322387695312,13.10064697265625,60.70323181152344,115.13601684570312,17.231557846069336,50.815372467041016,93.34558868408203,625.0260114398575,0.4503737916196929,0.9465431549709017,0.3582268001666218,9.382617112647557,0.12838341547138535,0.381011962890625,0.0,0.0,0.0175018310546875,0.1068115234375,0.219635009765625,0.20355224609375,0.0714874267578125,0.381011962890625,0.0,0.0196533203125,0.1984100341796875,0.2347259521484375,0.1566314697265625,0.009521484375,4.57763671875e-05,0.381011962890625,0.0131988525390625,0.15765380859375,0.2326202392578125,0.1705780029296875,0.0428314208984375,0.002105712890625,0.0,2.9937902200658697,7.390740750459567,9.82119752605254,9.947195761741886,-9.99999999999943,-9.999989944701202,-9.999999999998677
|
||||||
augmented_healthyf_171.jpg,normal,0,48.08953857421875,44.04364013671875,40.32623291015625,1247.021324312796,0.5236146190910663,0.7780323119685861,0.48728740898266415
|
Chemical-burn-7-e1515283936872-400x284.jpg,sakit,0,53.44621276855469,44.1090087890625,37.726165771484375,7.000579833984375,21.191558837890625,53.44621276855469,13.214006423950195,36.61761474609375,86.67949676513672,224.9851891664343,0.8414937091506801,0.9800353046169014,0.7179545367655596,2.4823265740606044,0.5154617333006016,0.722625732421875,0.0,0.0,4.57763671875e-05,0.015777587890625,0.0842742919921875,0.177276611328125,0.0,0.722625732421875,0.0,0.00555419921875,0.0333709716796875,0.06622314453125,0.172210693359375,1.52587890625e-05,0.0,0.722625732421875,0.0053253173828125,0.0223388671875,0.052398681640625,0.1534271240234375,0.04388427734375,0.0,0.0,2.5492059421039235,5.829748320560376,7.830562214213266,8.427714362917117,9.999999915854126,-9.994771083550452,-9.999999921194112
|
||||||
augmented_healthyf_179.jpg,normal,0,50.5711669921875,48.814208984375,45.36004638671875,1534.6610803718324,0.6429723200227812,0.8437795305573074,0.6067919373253753
|
Chemical-damage-e1515285856612-356x284.jpg,sakit,0,69.14717102050781,62.51557922363281,61.10594177246094,56.292022705078125,12.418014526367188,69.29348754882812,118.80715942382812,24.689470291137695,95.79721069335938,917.6252852288277,0.7025319948869152,0.9431537844164772,0.6330914899693353,7.860002643816163,0.4008279595598902,0.652008056640625,0.0,0.0,0.0,0.0153961181640625,0.12054443359375,0.1531524658203125,0.05889892578125,0.652008056640625,0.0,0.0,0.0128631591796875,0.1098480224609375,0.07000732421875,0.1213836669921875,0.0338897705078125,0.652008056640625,0.0,0.0017547607421875,0.028472900390625,0.1164703369140625,0.0591278076171875,0.1060943603515625,0.03607177734375,2.7370131273066525,5.958197148028143,9.17494114535149,9.359060806413561,9.99999999937689,9.998528361576293,-9.999999999845876
|
||||||
augmented_healthyf_29.jpg,normal,0,52.38519287109375,50.580078125,47.1275634765625,1224.2264070405386,0.6291959780067711,0.8700790342900685,0.5916772435117987
|
Diseased dental pad 28.jpg,sakit,0,103.44242858886719,87.35147094726562,132.43788146972656,153.78701782226562,62.75531005859375,135.83917236328125,124.8288803100586,52.95044708251953,102.74452209472656,1446.8357775547536,0.45791192129894015,0.8623390241642017,0.2983066624464522,15.095662567329759,0.0890782691721572,0.339599609375,0.0,0.0069732666015625,0.11767578125,0.1810455322265625,0.318939208984375,0.02069091796875,0.01507568359375,0.339599609375,0.0,0.0352325439453125,0.2513885498046875,0.3240203857421875,0.0202484130859375,0.01837158203125,0.011138916015625,0.3398895263671875,0.0013275146484375,0.0123291015625,0.0455169677734375,0.074249267578125,0.1130523681640625,0.1492462158203125,0.2643890380859375,3.0346521123255843,7.456079143698732,9.764734825368574,9.926201592079403,9.999999999998622,9.999986939807254,9.999999999997408
|
||||||
augmented_healthyf_35.jpg,normal,0,54.86376953125,46.564453125,39.00006103515625,1703.3002244690772,0.46011690783096665,0.6761490062770408,0.41645282983031656
|
Diseased foot 1- (17).jpg,sakit,0,87.0050048828125,85.49433898925781,80.66531372070312,45.313323974609375,12.540252685546875,89.10977172851562,83.16511535644531,32.21553039550781,112.67426300048828,3014.206617413174,0.6776475325115037,0.8726509551000897,0.5670286073812912,19.38271871375567,0.32162800689283716,0.6093597412109375,0.0,0.0,0.00439453125,0.005096435546875,0.059600830078125,0.1013946533203125,0.22015380859375,0.6093597412109375,0.0,0.0,0.0,0.0268096923828125,0.073211669921875,0.0775604248046875,0.2130584716796875,0.60968017578125,0.002838134765625,0.013427734375,0.028961181640625,0.0435333251953125,0.0384979248046875,0.0528717041015625,0.2101898193359375,2.870227064701343,6.4279417778196235,9.064572993861342,9.458977465719085,9.999999999606509,9.99970254976381,9.999999999748686
|
||||||
augmented_healthyf_36.jpg,normal,0,20.816162109375,20.3389892578125,19.01934814453125,1682.5238052311313,0.829145651943473,0.7023989580578552,0.82193373053236
|
Diseased foot 1- (8).jpg,sakit,0,99.49627685546875,92.41487121582031,88.90342712402344,80.31600952148438,27.31195068359375,103.68354797363281,106.24797821044922,35.521942138671875,85.99860382080078,4318.9959208752825,0.33066760233057196,0.6437671904108826,0.29385925491572334,36.45979473538041,0.08657759708437758,0.3914794921875,0.0,0.0,0.04925537109375,0.2703704833984375,0.1729888916015625,0.085601806640625,0.030303955078125,0.3914794921875,0.0,0.0001068115234375,0.09100341796875,0.321441650390625,0.1488800048828125,0.039398193359375,0.0076904296875,0.3914794921875,0.000152587890625,0.0249176025390625,0.1407470703125,0.252166748046875,0.14520263671875,0.0407562255859375,0.00457763671875,2.9348441959874014,7.616351312185747,9.984930659688137,9.996477362576307,-10.0,9.999999657074842,-9.999999999999995
|
||||||
augmented_healthyf_38.jpg,normal,0,44.2755126953125,44.843017578125,44.82122802734375,3541.0979361229533,0.7663027785406117,0.7697111371779263,0.7457280082264036
|
Diseased foot 17.jpg,sakit,0,87.0050048828125,85.49433898925781,80.66531372070312,45.313323974609375,12.540252685546875,89.10977172851562,83.16511535644531,32.21553039550781,112.67426300048828,3014.206617413174,0.6776475325115037,0.8726509551000897,0.5670286073812912,19.38271871375567,0.32162800689283716,0.6093597412109375,0.0,0.0,0.00439453125,0.005096435546875,0.059600830078125,0.1013946533203125,0.22015380859375,0.6093597412109375,0.0,0.0,0.0,0.0268096923828125,0.073211669921875,0.0775604248046875,0.2130584716796875,0.60968017578125,0.002838134765625,0.013427734375,0.028961181640625,0.0435333251953125,0.0384979248046875,0.0528717041015625,0.2101898193359375,2.870227064701343,6.4279417778196235,9.064572993861342,9.458977465719085,9.999999999606509,9.99970254976381,9.999999999748686
|
||||||
augmented_healthyf_4.jpg,normal,0,55.7392578125,50.21246337890625,44.279296875,1602.999139490751,0.5188048028737077,0.7672089018072881,0.47171862774610784
|
Diseased foot 20.jpg,sakit,0,103.63067626953125,99.43507385253906,96.26065063476562,61.045867919921875,11.088836669921875,104.40003967285156,108.76203155517578,19.37093734741211,111.11895751953125,3835.7103472334184,0.6028367925416266,0.8335564663123826,0.4784032647559109,24.162442752870447,0.2290035638113335,0.52423095703125,0.0,0.0,0.000274658203125,0.001861572265625,0.09442138671875,0.1868133544921875,0.1923980712890625,0.52423095703125,0.0,0.0,0.0,0.0035552978515625,0.1755523681640625,0.134490966796875,0.16217041015625,0.52423095703125,0.0,0.0,0.0022125244140625,0.063018798828125,0.1508331298828125,0.1070709228515625,0.1526336669921875,2.8644860787292736,7.2091451343523625,9.439209197284711,9.706717834691911,-9.999999999933229,-9.999936868747685,9.99999999999742
|
||||||
augmented_healthyf_40.jpg,normal,0,101.982421875,85.7574462890625,55.001953125,980.8953777547632,0.4382382530512648,0.9059693011799793,0.33199825052783183
|
Diseased foot 21.jpg,sakit,0,64.57601928710938,59.751556396484375,56.14996337890625,19.8642578125,10.530624389648438,64.92665100097656,60.034149169921875,19.399946212768555,103.16492462158203,1470.5997498319223,0.7469561516124489,0.9217575164163178,0.6927021005013794,10.015159639623375,0.47986139509802506,0.7138671875,0.0,0.0,0.0,0.0004730224609375,0.0239105224609375,0.0931549072265625,0.1685943603515625,0.7138671875,0.0,0.0,0.0,0.001312255859375,0.07257080078125,0.1310882568359375,0.0811614990234375,0.7138671875,0.0,0.0,0.0002288818359375,0.02978515625,0.105712890625,0.1011199951171875,0.049285888671875,2.966752959845797,6.396446076859029,9.952600055378703,9.98126815093091,-9.999999999999867,-9.99999664395423,-9.999999999999972
|
||||||
augmented_healthyf_41.jpg,normal,0,13.77593994140625,13.65057373046875,13.0145263671875,1456.5462094339837,0.8944227855861976,0.6611014045093636,0.8913113701806176
|
Diseased foot 24.jpg,sakit,0,91.07377624511719,85.02781677246094,79.05401611328125,25.059417724609375,19.057586669921875,91.5743408203125,50.8616828918457,21.996374130249023,87.63896942138672,3542.679621750676,0.42200801250460557,0.7395925425927096,0.3833675545879958,29.875401299161812,0.14717768609886692,0.457122802734375,0.0,0.0,0.02655029296875,0.25360107421875,0.1400604248046875,0.0706024169921875,0.05206298828125,0.457122802734375,0.0,4.57763671875e-05,0.0930633544921875,0.261444091796875,0.104095458984375,0.05572509765625,0.02850341796875,0.457122802734375,0.00018310546875,0.003265380859375,0.1653289794921875,0.23663330078125,0.0869140625,0.0362701416015625,0.0142822265625,2.889224383036372,7.213146977009336,9.60315841908043,9.77422357112115,-9.999999999970706,-9.999927335308675,-9.999999999994104
|
||||||
augmented_healthyf_50.jpg,normal,0,89.15167236328125,88.4659423828125,79.40081787109375,2897.837211929165,0.4430884798404266,0.8070164229428735,0.42340172720375224
|
Diseased foot 3.jpg,sakit,0,104.20057678222656,96.67951965332031,88.05601501464844,67.96542358398438,28.94580078125,108.067626953125,96.01044464111328,43.24821853637695,101.57884979248047,1471.612161546948,0.6030779511313287,0.9126464468326044,0.4305622974561159,12.78093988284668,0.18544074990875867,0.4566192626953125,0.0,0.0,0.010345458984375,0.0562744140625,0.295745849609375,0.061248779296875,0.1197662353515625,0.4566192626953125,0.0,0.0,0.0250091552734375,0.086578369140625,0.32659912109375,0.0811309814453125,0.0240631103515625,0.4573516845703125,0.006561279296875,0.0313873291015625,0.0752716064453125,0.1252899169921875,0.074676513671875,0.2214202880859375,0.0080413818359375,2.848665473469481,7.129173046496989,9.91084139554375,9.657393336125729,9.999999999986384,9.999920856417479,-9.999999999976355
|
||||||
augmented_healthyf_55.jpg,normal,0,40.68731689453125,36.93841552734375,30.6837158203125,1104.0864905857964,0.5664167717017398,0.7566741183578675,0.5325486867157316
|
Diseased foot 9.jpg,sakit,0,75.66310119628906,80.07810974121094,80.49920654296875,48.214324951171875,14.831069946289062,84.09600830078125,74.6592025756836,27.676280975341797,101.52418518066406,755.2862049387451,0.64799641473804,0.9585995155170277,0.5680382016295857,8.230233335302357,0.32267634233260395,0.5807037353515625,0.0,0.0026092529296875,0.0439910888671875,0.061309814453125,0.178131103515625,0.0675811767578125,0.065673828125,0.5807037353515625,0.0,4.57763671875e-05,0.0039825439453125,0.07232666015625,0.175811767578125,0.07415771484375,0.0929718017578125,0.5807037353515625,0.0,0.0007476806640625,0.0106353759765625,0.0796661376953125,0.146331787109375,0.0703887939453125,0.1115264892578125,2.834704414300474,6.352257499864012,8.886952797594978,9.139499595965672,9.999999997655996,9.999423976445158,-9.999999999838087
|
||||||
augmented_healthyf_56.jpg,normal,0,60.99017333984375,61.02081298828125,58.18023681640625,3244.4610020744854,0.5463205779386999,0.706943666073551,0.5090816711651381
|
Diseased tongue 15.jpg,sakit,0,139.73826599121094,126.73722839355469,124.49357604980469,90.23333740234375,19.146163940429688,140.46971130371094,132.85000610351562,26.24274253845215,114.57310485839844,963.6454622718032,0.5718162156821475,0.9577514837272382,0.38221244699624374,9.122334258346678,0.1461262257617513,0.3856353759765625,0.0,0.0,0.0001678466796875,0.052703857421875,0.083404541015625,0.049468994140625,0.428619384765625,0.3856353759765625,0.0,0.0,0.0024261474609375,0.0838623046875,0.13037109375,0.186126708984375,0.211578369140625,0.3856353759765625,0.0,1.52587890625e-05,0.010528564453125,0.091461181640625,0.1551666259765625,0.151153564453125,0.2060394287109375,3.102400541152559,7.029504164870617,9.894813666398372,9.957281634927183,9.99999999999927,9.999988897317108,9.999999999999808
|
||||||
augmented_healthyf_58.jpg,normal,0,55.78533935546875,59.1370849609375,56.12542724609375,4594.4900751275745,0.6922610676904163,0.7452066159105487,0.6597407793692683
|
Diseased-dental-pad-36_jpg.rf.5dc1b0bb42ec944d87921d1e38216072.jpg,sakit,0,87.48114013671875,77.3009033203125,80.0216064453125,130.219482421875,21.53778076171875,89.02877807617188,152.42372131347656,26.964757919311523,82.19667053222656,813.5834703242332,0.4881444272449344,0.9283860266994531,0.41056335098879737,10.999459068973424,0.16866808167617475,0.4429473876953125,0.0,0.0022735595703125,0.08740234375,0.2064971923828125,0.1959381103515625,0.0630645751953125,0.0018768310546875,0.4429473876953125,0.0018310546875,0.0509185791015625,0.169097900390625,0.1731414794921875,0.131805419921875,0.0301971435546875,6.103515625e-05,0.4429473876953125,0.000213623046875,0.0390625,0.1631011962890625,0.1637115478515625,0.132171630859375,0.05743408203125,0.0013580322265625,3.10888073124209,7.72228717005679,9.993508351262598,9.99946448598763,10.0,9.999999993613795,10.0
|
||||||
augmented_healthyf_59.jpg,normal,0,53.4368896484375,51.677734375,48.14166259765625,1454.9791773890622,0.6261588766077232,0.8541566260190278,0.5870363678584735
|
Diseased-foot-11_jpg.rf.333ce66d542ab20c53e3b631b959def9.jpg,sakit,0,57.131378173828125,65.86224365234375,71.81413269042969,67.15499877929688,20.136810302734375,72.59196472167969,96.04843139648438,36.98027038574219,97.89659881591797,2253.983037004026,0.6173254614502482,0.8488850943492849,0.5796162342029695,18.672855344356268,0.33604732815216587,0.6317138671875,6.103515625e-05,0.011993408203125,0.08978271484375,0.1339874267578125,0.0544586181640625,0.0459747314453125,0.0320281982421875,0.6317138671875,0.0,0.0,0.009979248046875,0.129608154296875,0.090423583984375,0.08624267578125,0.052032470703125,0.6317138671875,0.0001220703125,0.0009765625,0.0144805908203125,0.0813751220703125,0.0676727294921875,0.081939697265625,0.1217193603515625,2.65568944775842,6.605946491234033,8.750438827769466,9.91630578283166,9.999999999986088,-9.999954083616979,-9.999999999989512
|
||||||
augmented_healthyf_61.jpg,normal,0,88.04046630859375,82.73046875,75.29608154296875,1657.915520630722,0.3172978440586815,0.7527508993332518,0.22453811361496465
|
Diseased-foot-12_jpg.rf.097b9b8442d3417ca1b07831b94d37a4.jpg,sakit,0,99.08255004882812,98.63813781738281,96.55162048339844,70.78067016601562,13.321182250976562,102.70904541015625,95.77396392822266,24.945035934448242,95.42000579833984,3681.975488280747,0.42570035120493005,0.7818311716480152,0.38305072788357836,29.930496523507518,0.14679437919042318,0.451416015625,0.0,0.001007080078125,0.0107421875,0.123321533203125,0.2386322021484375,0.1265106201171875,0.048370361328125,0.451416015625,0.0,0.0,0.0,0.15045166015625,0.2283935546875,0.12701416015625,0.042724609375,0.451416015625,0.0003662109375,0.006683349609375,0.03533935546875,0.1246337890625,0.202789306640625,0.1403045654296875,0.0384674072265625,2.9054741696931234,7.610393074601611,9.865490862840785,9.514773249713993,9.999999999954106,-9.999895210184366,-9.999999999937957
|
||||||
augmented_healthyf_70.jpg,normal,0,98.85198974609375,84.5867919921875,55.24261474609375,894.0513933878674,0.4441807771495094,0.9151135922886643,0.3428911150770913
|
FMD-Knuckles-_20-Copy_jpeg.rf.33f54ba9b0d0424fecd82748640d728a.jpg,sakit,0,66.37840270996094,64.78297424316406,62.51554870605469,34.2122802734375,8.115264892578125,66.63972473144531,66.16191101074219,13.042756080627441,72.90365600585938,4555.495851498258,0.4137979738986502,0.5518602020342954,0.39180935514762316,39.8456338713642,0.15403418242018305,0.52386474609375,0.0,0.000244140625,0.2030029296875,0.1632843017578125,0.0749053955078125,0.02960205078125,0.005096435546875,0.52386474609375,0.0,0.001251220703125,0.225433349609375,0.1516571044921875,0.06646728515625,0.02728271484375,0.0040435791015625,0.52386474609375,0.0,0.0316314697265625,0.2212677001953125,0.139678955078125,0.0582275390625,0.0229949951171875,0.0023345947265625,2.8796183949302394,7.983072355078446,9.874787937636837,9.788924766664477,9.999999999993555,-9.999994217908256,9.999999999989372
|
||||||
augmented_healthyf_71.jpg,normal,0,15.559326171875,15.23980712890625,14.7474365234375,1494.3519939490834,0.8725483382288206,0.6782548044998357,0.8684788624342992
|
FMD-Knuckles-_20-Copy_jpeg.rf.33f54ba9b0d0424fecd82748640d728a.jpg,sakit,0,68.31527709960938,66.71076965332031,64.45394897460938,38.2371826171875,8.547409057617188,68.70372009277344,70.72379302978516,13.728676795959473,73.8420639038086,5179.331667747587,0.38996421137788695,0.5027086623360845,0.36986048997843274,44.015595208076526,0.13717189662375717,0.5138397216796875,0.0,0.0005035400390625,0.200469970703125,0.1653289794921875,0.0808563232421875,0.0329742431640625,0.0060272216796875,0.5138397216796875,0.0,0.002899169921875,0.2225341796875,0.1519775390625,0.0725250244140625,0.031036376953125,0.00518798828125,0.5138397216796875,1.52587890625e-05,0.0368804931640625,0.2133636474609375,0.141204833984375,0.065093994140625,0.026336669921875,0.003265380859375,2.8858378628528705,8.061801433923772,9.88689831883763,9.82465963410187,9.999999999995476,-9.99999629114007,9.99999999999303
|
||||||
augmented_healthyf_74.jpg,normal,0,44.4544677734375,37.51239013671875,30.94580078125,2337.280250281942,0.5259535064358071,0.5711186556336237,0.5017847498647954
|
FMD-Knuckles-_7-Copy_jpeg.rf.1df23e54b2e811276749502dc5d1ba9f.jpg,sakit,0,96.49150085449219,91.58761596679688,87.46076965332031,37.606964111328125,19.766876220703125,98.78921508789062,70.78085327148438,24.890880584716797,88.71937561035156,4706.625960804988,0.36896610053795637,0.6610382906748347,0.330452181507036,36.97728751776025,0.10969019420708526,0.4333038330078125,0.0,0.0,0.01641845703125,0.232940673828125,0.1758880615234375,0.113800048828125,0.02764892578125,0.4333038330078125,0.0,0.0,0.025054931640625,0.2846832275390625,0.164794921875,0.0801239013671875,0.0120391845703125,0.4344635009765625,0.0019378662109375,0.0027923583984375,0.09332275390625,0.239959716796875,0.15985107421875,0.0641326904296875,0.0035400390625,2.8896697791727215,8.030444504938767,9.965512683100727,9.928522126715569,-9.999999999999892,-9.999997989393352,-9.999999999999062
|
||||||
augmented_healthyf_82.jpg,normal,0,68.59234619140625,70.15057373046875,62.5589599609375,2413.163877702826,0.6581775656190693,0.8704216892700601,0.6244315887519926
|
FMD-Knuckles-_8-Copy_jpeg.rf.0aea6ce7508c368c9d27d0d2a5a2eea6.jpg,sakit,0,116.27938842773438,112.92428588867188,108.17536926269531,44.299407958984375,19.949432373046875,120.10946655273438,73.88187408447266,19.774444580078125,90.08009338378906,3309.0515729009735,0.3453268050600257,0.7732493758237161,0.280311992488741,27.23565854346548,0.07873971326513342,0.3504638671875,0.0,0.0004730224609375,0.012054443359375,0.1345367431640625,0.28363037109375,0.208770751953125,0.01007080078125,0.3504638671875,0.0,0.0,0.0078582763671875,0.1953277587890625,0.28466796875,0.1468658447265625,0.0148162841796875,0.3504638671875,0.0,0.0,0.053253173828125,0.2204437255859375,0.2572479248046875,0.1024322509765625,0.0161590576171875,2.9737545184351175,7.583307655196731,9.942706300697326,9.996636021798906,-9.99999999999999,-9.999999455533581,10.0
|
||||||
augmented_healthyf_84.jpg,normal,0,93.16162109375,92.97247314453125,91.071533203125,4235.473054385809,0.5028095378883878,0.7913099252379977,0.4692168716039778
|
FMD-Knuckles-_8-Copy_jpeg.rf.0aea6ce7508c368c9d27d0d2a5a2eea6.jpg,sakit,0,116.41168212890625,113.13079833984375,108.41050720214844,44.481719970703125,20.011520385742188,120.35922241210938,74.52494049072266,20.30773162841797,90.4089584350586,3779.0121636427925,0.33631530020840067,0.7427292388676393,0.27368502495208985,30.171917257129277,0.0750256723230998,0.3514251708984375,0.0,0.000640869140625,0.0125885009765625,0.1289520263671875,0.2806396484375,0.2158050537109375,0.00994873046875,0.3514251708984375,0.0,0.0,0.007415771484375,0.187255859375,0.2899169921875,0.1495819091796875,0.014404296875,0.3514251708984375,0.0,0.0,0.050140380859375,0.217041015625,0.2598724365234375,0.104736328125,0.01678466796875,2.97513177200581,7.602650184225892,9.935071103729257,9.997310677398117,-9.999999999999991,-9.999999583951787,9.999999999999996
|
||||||
augmented_healthyf_86.jpg,normal,0,62.163818359375,60.66607666015625,57.3408203125,2870.882639685264,0.5185176013271808,0.7133148961490897,0.47937535084417293
|
FMD-foot-lesions-0-150x232 (2).jpg,sakit,0,51.71122741699219,46.27174377441406,40.25273132324219,19.399017333984375,17.652923583984375,52.065887451171875,53.94590377807617,38.426002502441406,86.8298110961914,1003.4425234995189,0.7325389380477937,0.9216068380384069,0.6973844654994371,9.705867900539257,0.48642987729303355,0.725372314453125,0.0,0.0,0.0053253173828125,0.0664215087890625,0.0817413330078125,0.06243896484375,0.0587005615234375,0.725372314453125,0.0,0.0,0.0655975341796875,0.0741729736328125,0.0447235107421875,0.047027587890625,0.0431060791015625,0.725372314453125,0.00311279296875,0.0648651123046875,0.0611114501953125,0.0408782958984375,0.026947021484375,0.0345001220703125,0.043212890625,2.688298600653088,6.072426018154686,9.202595212499338,9.860751009669094,-9.999999999990342,-9.999866984733739,9.999999999978934
|
||||||
augmented_healthyf_92.jpg,normal,0,45.1497802734375,43.7578125,40.3544921875,3015.8092065221003,0.6623400179186877,0.724297305564558,0.6358015136255415
|
FMD-foot-lesions-0-150x232.jpg,sakit,0,51.71122741699219,46.27174377441406,40.25273132324219,19.399017333984375,17.652923583984375,52.065887451171875,53.94590377807617,38.426002502441406,86.8298110961914,1003.4425234995189,0.7325389380477937,0.9216068380384069,0.6973844654994371,9.705867900539257,0.48642987729303355,0.725372314453125,0.0,0.0,0.0053253173828125,0.0664215087890625,0.0817413330078125,0.06243896484375,0.0587005615234375,0.725372314453125,0.0,0.0,0.0655975341796875,0.0741729736328125,0.0447235107421875,0.047027587890625,0.0431060791015625,0.725372314453125,0.00311279296875,0.0648651123046875,0.0611114501953125,0.0408782958984375,0.026947021484375,0.0345001220703125,0.043212890625,2.688298600653088,6.072426018154686,9.202595212499338,9.860751009669094,-9.999999999990342,-9.999866984733739,9.999999999978934
|
||||||
augmented_healthyf_93.jpg,normal,0,25.890625,26.14093017578125,23.95086669921875,2002.1333583580838,0.8700844044728399,0.7985232348831732,0.8552726700380625
|
FMD-foot-lesions-1-150x112.jpg,sakit,0,88.98959350585938,78.25149536132812,72.26141357421875,36.817047119140625,23.914154052734375,89.17935180664062,85.95736694335938,28.146926879882812,93.8855972290039,1112.9962202402046,0.5618399278160952,0.922750930912251,0.47806137044813,11.268645527160876,0.2286852409062308,0.510711669921875,0.0,0.0,0.0181121826171875,0.1212615966796875,0.157745361328125,0.1378631591796875,0.0543060302734375,0.510711669921875,0.0,0.0,0.0605010986328125,0.19927978515625,0.154327392578125,0.0677947998046875,0.00738525390625,0.510711669921875,0.0,0.009674072265625,0.12139892578125,0.1955413818359375,0.1228485107421875,0.03662109375,0.003204345703125,2.9414152118634354,7.5864175182202604,9.760887865234888,9.738048151790204,9.999999999979169,9.999984851050272,-9.99999999998124
|
||||||
FMD (4).jpeg,defective,1,65.62982177734375,58.34466552734375,47.6505126953125,5416.189029906841,0.5704264016190329,0.6044126113884224,0.5592342384266215
|
FMD-foot-lesions-10-150x225 (2).jpg,sakit,0,68.47552490234375,48.05793762207031,43.52470397949219,32.849578857421875,35.92558288574219,68.62351989746094,93.01292419433594,52.36088943481445,92.3684310913086,492.18804594730074,0.6611274107550202,0.9539222868609921,0.6093458216011872,7.018382102292887,0.37136504473343446,0.6328887939453125,0.0,1.52587890625e-05,0.026214599609375,0.0583038330078125,0.0908355712890625,0.1448822021484375,0.0468597412109375,0.6328887939453125,0.0,0.0477752685546875,0.1377410888671875,0.1161956787109375,0.0464935302734375,0.018829345703125,7.62939453125e-05,0.6328887939453125,0.0062255859375,0.1294403076171875,0.1094512939453125,0.0508270263671875,0.043212890625,0.0264739990234375,0.0014801025390625,3.1040485245046128,8.275613709785716,9.99586273687627,9.964877886033499,9.999999999999986,9.999999548365665,9.999999999999897
|
||||||
FMD (84).jpg,defective,1,103.8223876953125,99.53070068359375,96.32183837890625,5387.468397453059,0.5696093341029717,0.7655570806920996,0.45808610005967715
|
FMD-foot-lesions-11-150x226.jpg,sakit,0,48.74906921386719,43.979156494140625,39.89080810546875,9.408966064453125,12.037948608398438,48.76753234863281,28.72024917602539,25.73699378967285,85.45820617675781,403.89605655201086,0.7573895114873115,0.9678853340878345,0.7294731136828143,5.395768489078573,0.5321543670824419,0.744537353515625,0.0,0.0,0.019561767578125,0.041229248046875,0.056793212890625,0.0729522705078125,0.0649261474609375,0.744537353515625,0.0,0.0,0.040435791015625,0.0619964599609375,0.0602264404296875,0.06884765625,0.023956298828125,0.744537353515625,0.0,0.01593017578125,0.0586090087890625,0.06195068359375,0.0564422607421875,0.053436279296875,0.00909423828125,3.12112592779687,7.365426900313465,9.93767669102239,9.966275571086003,-9.999999999999645,9.999994609563952,-9.999999999999835
|
||||||
FMD(13).jpg,defective,1,101.58721923828125,102.14398193359375,102.306640625,2313.70863707047,0.40284656963400006,0.8315280116932359,0.3316823369910831
|
FMD-foot-lesions-11-Copy-10-_jpg.rf.53c98d15eeda2988465d5951cf71a8ed.jpg,sakit,0,48.13993835449219,41.660888671875,36.20597839355469,10.60400390625,16.7000732421875,48.18017578125,34.33731460571289,35.18727111816406,83.85802459716797,576.4317340519893,0.7361545623003432,0.9493464600992688,0.7190790616483982,7.964647874165493,0.517094858396163,0.7398529052734375,0.0,0.0009613037109375,0.0304107666015625,0.0433349609375,0.055816650390625,0.07391357421875,0.0557098388671875,0.7398529052734375,0.0,0.0052947998046875,0.066131591796875,0.0577239990234375,0.0607757568359375,0.057769775390625,0.012451171875,0.739898681640625,0.0086517333984375,0.0411376953125,0.0623931884765625,0.0564117431640625,0.0513153076171875,0.03643798828125,0.003753662109375,3.121112247811663,7.8763801456452365,9.914715165725688,9.944753308415839,-9.999999999999545,9.999996891044544,-9.999999999999098
|
||||||
FMD(17).jpg,defective,1,38.131591796875,37.65289306640625,37.69403076171875,1264.7854354783933,0.7699123624744865,0.8878860031522215,0.7513469272971792
|
FMD-foot-lesions-13_jpg.rf.abb26b8d7043297c0e75bcf8351b4f71.jpg,sakit,0,125.19828796386719,100.91854858398438,97.58511352539062,76.66256713867188,40.834228515625,125.84353637695312,131.34097290039062,36.92074203491211,98.35797119140625,2750.2562333428136,0.3468424088416884,0.8137615709915549,0.30639622985744186,27.105492126459428,0.09400814272109508,0.364715576171875,0.0,0.0,0.0081634521484375,0.069915771484375,0.2030792236328125,0.208770751953125,0.145355224609375,0.364715576171875,0.0,0.00018310546875,0.1303863525390625,0.23492431640625,0.1537933349609375,0.070648193359375,0.04534912109375,0.364715576171875,0.0,0.0137481689453125,0.1566925048828125,0.2165985107421875,0.1409759521484375,0.07568359375,0.031585693359375,3.0293511439981446,7.537548666615337,9.607208659731455,9.992386273116322,9.999999999999966,9.999998714224438,9.999999999999881
|
||||||
FMD(22).jpg,defective,1,70.60284423828125,72.96636962890625,70.00506591796875,6531.134836004053,0.45216187454080914,0.5437774168304257,0.4416470971819389
|
FMD-foot-lesions-13_jpg.rf.abb26b8d7043297c0e75bcf8351b4f71.jpg,sakit,0,125.19828796386719,100.91854858398438,97.58511352539062,76.66256713867188,40.834228515625,125.84353637695312,131.34097290039062,36.92074203491211,98.35797119140625,2750.2562333428136,0.3468424088416884,0.8137615709915549,0.30639622985744186,27.105492126459428,0.09400814272109508,0.364715576171875,0.0,0.0,0.0081634521484375,0.069915771484375,0.2030792236328125,0.208770751953125,0.145355224609375,0.364715576171875,0.0,0.00018310546875,0.1303863525390625,0.23492431640625,0.1537933349609375,0.070648193359375,0.04534912109375,0.364715576171875,0.0,0.0137481689453125,0.1566925048828125,0.2165985107421875,0.1409759521484375,0.07568359375,0.031585693359375,3.0293511439981446,7.537548666615337,9.607208659731455,9.992386273116322,9.999999999999966,9.999998714224438,9.999999999999881
|
||||||
FMD(26).jpg,defective,1,57.73248291015625,56.26446533203125,55.33624267578125,6756.185625538634,0.5625558883074002,0.501225453742337,0.5430419941103458
|
FMD-foot-lesions-6-Copy-10-_jpg.rf.cb864e751e9c4780a720fffbc4ff5cd5.jpg,sakit,0,92.70797729492188,93.14302062988281,85.85334777832031,34.64251708984375,11.633346557617188,94.07005310058594,47.656978607177734,19.254676818847656,102.2317886352539,2635.6114004192646,0.5486243117486956,0.8695628659487094,0.48498105813736886,20.92797082313464,0.23529346035074628,0.5298004150390625,0.0,0.0,3.0517578125e-05,0.0691375732421875,0.13934326171875,0.1545257568359375,0.1071624755859375,0.5298004150390625,0.0,0.0,0.000244140625,0.0797271728515625,0.1103668212890625,0.1634979248046875,0.116363525390625,0.5298004150390625,0.001708984375,0.0058441162109375,0.0307159423828125,0.0928802490234375,0.146453857421875,0.113800048828125,0.07879638671875,2.890096661636832,7.441036210257366,9.066795951487551,9.358163150938209,9.999999999361009,9.999847158831354,9.999999999619028
|
||||||
FMD(27).jpeg,defective,1,46.9739990234375,41.70880126953125,35.9525146484375,3611.6918657121946,0.6523138559029342,0.636689793370012,0.6432216274330268
|
FMD_0_1574.jpg,sakit,0,63.53495788574219,60.6455078125,57.61137390136719,33.658966064453125,12.441070556640625,64.86759948730469,73.29727935791016,22.69456672668457,89.56444549560547,905.7615593864724,0.6629522119119983,0.9374474878494331,0.618450634432818,9.487750418861078,0.382557185778041,0.643585205078125,0.0,0.0,0.0196685791015625,0.1135406494140625,0.0971527099609375,0.0735931396484375,0.052459716796875,0.643585205078125,0.0,0.0,0.0429840087890625,0.1172027587890625,0.10009765625,0.0549163818359375,0.0412139892578125,0.643585205078125,0.0,0.0064697265625,0.0662994384765625,0.1110992431640625,0.0947265625,0.049591064453125,0.028228759765625,3.0364830032662122,7.536909067274573,9.979281664886527,9.937494715927986,9.999999999999416,-9.999993483922966,9.999999999999988
|
||||||
FMD(30).jpeg,defective,1,52.2724609375,52.36932373046875,55.31573486328125,2003.540238640252,0.6228428903994958,0.7923917997422169,0.5724275401293599
|
FMD_0_1583.jpg,sakit,0,94.17607116699219,87.05525207519531,80.38356018066406,42.51458740234375,21.84405517578125,95.23910522460938,81.01897430419922,30.000017166137695,101.12249755859375,1240.6176232412888,0.5665693594623151,0.9302543061281937,0.487850920495641,11.708959571778243,0.23808432074480515,0.51763916015625,0.0,0.0,0.0032958984375,0.0871734619140625,0.130218505859375,0.1408843994140625,0.12078857421875,0.51763916015625,0.0,0.0,0.0125579833984375,0.14642333984375,0.1353302001953125,0.1239166259765625,0.0641326904296875,0.51763916015625,0.0,0.00531005859375,0.0549774169921875,0.1464691162109375,0.16510009765625,0.0844268798828125,0.0260772705078125,2.995850832333927,7.148890418467331,9.778504098731904,9.944255539782784,9.999999999998282,-9.99999600019511,-9.999999999999476
|
||||||
FMD(9).jpg,defective,1,51.008056640625,50.6854248046875,50.68359375,1515.3065279383834,0.7291491285142851,0.9009386773859444,0.7043931983564943
|
FMD_0_174.jpg,sakit,0,42.512176513671875,32.745819091796875,27.549163818359375,14.282958984375,27.409149169921875,42.69972229003906,42.13719940185547,48.939334869384766,66.59463500976562,439.0266980710315,0.7218289780121253,0.9259909971489471,0.6573684386639806,7.12274037948885,0.4321932359337379,0.6806488037109375,0.0,0.0507659912109375,0.1248321533203125,0.0549774169921875,0.05108642578125,0.028045654296875,0.0096435546875,0.6806488037109375,0.0157623291015625,0.1316986083984375,0.1171112060546875,0.03131103515625,0.0156097412109375,0.0071868896484375,0.00067138671875,0.684539794921875,0.0716705322265625,0.1286468505859375,0.08721923828125,0.0191650390625,0.0074920654296875,0.0012664794921875,0.0,2.886366494614982,6.813055093151047,8.914832909037894,9.484131907089536,9.99999999976517,9.999618001929203,-9.999999999559016
|
||||||
augmented_fmdf_1.jpg,defective,1,85.89434814453125,83.6572265625,79.0577392578125,2525.104704419354,0.5856247395748175,0.8692375984237944,0.5211491749744049
|
FMD_0_260.jpg,sakit,0,60.38722229003906,58.221282958984375,50.17481994628906,30.38885498046875,22.599624633789062,62.4417724609375,53.278194427490234,34.433799743652344,81.33226776123047,1647.8048570913918,0.5958759920424208,0.85654889479348,0.5597098913343649,16.435564025767665,0.31344490375092643,0.611572265625,0.0,7.62939453125e-05,0.0913543701171875,0.1657257080078125,0.0590057373046875,0.0403289794921875,0.0319366455078125,0.611572265625,0.0,3.0517578125e-05,0.1139068603515625,0.1663970947265625,0.057281494140625,0.029266357421875,0.02154541015625,0.611572265625,0.0005950927734375,0.0785675048828125,0.1336822509765625,0.09808349609375,0.0476226806640625,0.0172119140625,0.012664794921875,2.865670558852467,8.15924291738313,9.67043895859261,9.629356164413641,-9.999999999927585,9.999953612120754,-9.999999999999623
|
||||||
augmented_fmdf_110.jpg,defective,1,71.922119140625,71.9603271484375,72.65496826171875,2084.6297713330796,0.4779279097515093,0.8131079203208936,0.43756432803472856
|
FMD_0_4248.jpg,sakit,0,112.300048828125,93.64041137695312,77.93264770507812,59.73095703125,57.593994140625,118.5177001953125,79.64588928222656,75.7833023071289,98.28668212890625,1396.953228353822,0.4480420215807635,0.9012654140877552,0.3500716901568662,16.56628701026545,0.12266638809336405,0.3889312744140625,1.52587890625e-05,0.0185089111328125,0.0684814453125,0.0762786865234375,0.0913848876953125,0.2958831787109375,0.060516357421875,0.3889312744140625,0.0031585693359375,0.0753631591796875,0.1536407470703125,0.11199951171875,0.0968475341796875,0.095489501953125,0.0745697021484375,0.4371185302734375,0.1151123046875,0.043304443359375,0.0614471435546875,0.0982666015625,0.1254730224609375,0.10711669921875,0.0121612548828125,3.0183994549228585,7.609020317711837,9.500980017740575,9.941268387822742,9.999999999996586,9.999990482828597,9.99999999999917
|
||||||
augmented_fmdf_121.jpg,defective,1,50.7091064453125,50.89544677734375,54.06927490234375,1549.083116500977,0.6448868445242154,0.8329941754008825,0.5834555245250242
|
FMD_0_7015.jpg,sakit,0,74.55574035644531,72.08045959472656,72.64622497558594,61.3297119140625,15.340972900390625,77.934326171875,97.49957275390625,21.170917510986328,77.70587158203125,965.5276691146643,0.5580677202414114,0.9091462154496389,0.432862703248659,12.0704884237742,0.18745656293029392,0.465362548828125,0.0,0.02947998046875,0.194854736328125,0.21514892578125,0.0373992919921875,0.0262298583984375,0.031524658203125,0.465362548828125,9.1552734375e-05,0.02288818359375,0.272125244140625,0.14825439453125,0.0366668701171875,0.0259857177734375,0.02862548828125,0.465362548828125,0.0,0.03765869140625,0.273529052734375,0.116943359375,0.04217529296875,0.0275115966796875,0.0368194580078125,2.9471866798841635,7.746454378221208,9.814969765099352,9.734975504410356,9.999999999978726,-9.999989867492737,9.999999999988038
|
||||||
augmented_fmdf_122.jpg,defective,1,67.736328125,63.19769287109375,63.45745849609375,896.7664349146662,0.60068847288424,0.9169978241562089,0.5112486507464528
|
FMD_0_7016.jpg,sakit,0,62.95478820800781,52.23710632324219,54.355255126953125,64.45220947265625,14.386459350585938,63.23785400390625,129.2345428466797,26.15555763244629,99.68132781982422,665.5206835425614,0.7414449601580048,0.9575403005789053,0.688594531485533,6.941808825068034,0.4741966631531491,0.7044219970703125,0.0,0.0,0.0037689208984375,0.0388031005859375,0.0432281494140625,0.047210693359375,0.162567138671875,0.7044219970703125,0.0,0.00067138671875,0.0508575439453125,0.0540924072265625,0.0774383544921875,0.0605621337890625,0.0519561767578125,0.7044219970703125,0.0001068115234375,0.004638671875,0.021514892578125,0.0567626953125,0.0733795166015625,0.0861968994140625,0.052978515625,2.780310148944018,6.747970203827104,8.898424755055515,9.393097756466531,-9.999999999213218,-9.999822430613689,9.999999999978515
|
||||||
augmented_fmdf_137.jpg,defective,1,92.2081298828125,83.5755615234375,71.76580810546875,3325.8705930420274,0.42443023125893503,0.756682152630871,0.3806540647768267
|
FMD_0_7308.jpg,sakit,0,58.35420227050781,50.60601806640625,49.53242492675781,49.893829345703125,13.436050415039062,58.95570373535156,111.01488494873047,29.1417293548584,95.48084259033203,539.4797281229044,0.7866076633390796,0.9635523300634444,0.7033581661692496,5.53810801787199,0.4947386920535182,0.7161102294921875,0.0,0.0,0.0167694091796875,0.027252197265625,0.0406341552734375,0.0652313232421875,0.134002685546875,0.7161102294921875,0.0,0.0,0.0401763916015625,0.0502777099609375,0.073699951171875,0.07769775390625,0.0420379638671875,0.7161102294921875,6.103515625e-05,0.0067901611328125,0.0313262939453125,0.0948944091796875,0.036102294921875,0.049346923828125,0.06536865234375,2.6147124293357162,5.797995888800147,8.049086828645079,8.377325225413065,9.999999893373769,9.979996293644819,-9.999999991981007
|
||||||
augmented_fmdf_15.jpg,defective,1,91.75396728515625,84.60076904296875,55.3076171875,1741.9205119169528,0.4053949658599545,0.8434974712625682,0.3706578730586953
|
FMD_0_7310.jpg,sakit,0,67.44856262207031,68.33055114746094,67.26979064941406,58.186981201171875,12.293212890625,72.3662109375,96.02081298828125,24.11393928527832,90.04692077636719,1025.262288591058,0.6425885059636499,0.9294350856730237,0.5558166714294823,10.825977375671632,0.3090062589389387,0.5838775634765625,0.0,0.001983642578125,0.1024932861328125,0.160186767578125,0.0323638916015625,0.0431671142578125,0.075927734375,0.5838775634765625,0.0,0.001190185546875,0.0875244140625,0.152496337890625,0.0490875244140625,0.0511932373046875,0.0746307373046875,0.5838775634765625,0.0,0.0101165771484375,0.10430908203125,0.1366424560546875,0.0382232666015625,0.0468902587890625,0.0799407958984375,2.7342907503969545,7.690625987757247,9.117853746401618,9.660504952761713,9.999999999987471,9.999928026508572,-9.999999999856326
|
||||||
augmented_fmdf_152.jpg,defective,1,40.2183837890625,37.13311767578125,35.50677490234375,1943.2925237726524,0.6673424476727526,0.7391195899722894,0.6494312097024796
|
FMD_0_7322.jpg,sakit,0,107.07867431640625,111.76153564453125,82.95951843261719,56.90838623046875,55.41876220703125,117.79777526855469,57.0312614440918,62.64569854736328,94.68550109863281,956.504106422242,0.4737568841905431,0.9386481429238578,0.3463893640479167,11.868775365624117,0.12005869910307924,0.374359130859375,0.0,0.00872802734375,0.0796966552734375,0.1465301513671875,0.1544189453125,0.2282867431640625,0.0079803466796875,0.374359130859375,0.0,0.0069427490234375,0.07391357421875,0.1446533203125,0.1332244873046875,0.1477508544921875,0.1191558837890625,0.3828125,0.1055145263671875,0.1313934326171875,0.07952880859375,0.054168701171875,0.059539794921875,0.1624603271484375,0.0245819091796875,3.058948361272992,7.098400367785993,9.7069159964557,9.952207316720289,9.99999999999911,9.999992080054978,9.999999999998561
|
||||||
augmented_fmdf_155.jpg,defective,1,41.58197021484375,45.3931884765625,50.74920654296875,1244.5073834367743,0.6061557713805047,0.8301026997979902,0.5707347981234813
|
FMD_0_7368.jpg,sakit,0,35.10240173339844,34.71937561035156,34.694091796875,30.632171630859375,2.227813720703125,35.55943298339844,78.7939682006836,6.382655620574951,70.96859741210938,511.2470709282755,0.803171598999636,0.9476863936768796,0.769921915665638,5.63371896433173,0.5928130975359072,0.78582763671875,0.0,0.0,0.0550994873046875,0.068084716796875,0.032928466796875,0.024566650390625,0.0334930419921875,0.78582763671875,0.0,0.0,0.0595550537109375,0.068206787109375,0.0310821533203125,0.0225830078125,0.032745361328125,0.78582763671875,0.0,4.57763671875e-05,0.05364990234375,0.076019287109375,0.0326080322265625,0.0190582275390625,0.0327911376953125,2.7628896260857467,6.120998595603554,9.090807962623513,8.857645143500543,9.99999999528352,9.996217248992403,9.99999999746734
|
||||||
augmented_fmdf_157.jpg,defective,1,89.64581298828125,87.17352294921875,82.29217529296875,2574.9231575980066,0.55617770343609,0.8647067048748446,0.48707127393021327
|
FMD_0_7389.jpg,sakit,0,65.06211853027344,62.653167724609375,55.946990966796875,35.272003173828125,21.384384155273438,67.65165710449219,58.872764587402344,32.31502914428711,83.71342468261719,1487.4238469775216,0.5828402493649506,0.8765492807321383,0.5411748262995305,15.23468698571165,0.29300658421433107,0.5867919921875,0.0,9.1552734375e-05,0.10137939453125,0.1540374755859375,0.07000732421875,0.0536346435546875,0.0340576171875,0.5867919921875,0.0,3.0517578125e-05,0.1051483154296875,0.1847076416015625,0.06927490234375,0.03143310546875,0.022613525390625,0.5867919921875,0.0003509521484375,0.0443115234375,0.1436767578125,0.13873291015625,0.05474853515625,0.0178985595703125,0.01348876953125,2.8625230195338087,7.247056693764228,9.080961317746961,9.696481426114394,9.999999999880638,9.999902000576622,-9.99999999999986
|
||||||
augmented_fmdf_16.jpg,defective,1,90.85614013671875,83.47882080078125,79.806396484375,883.9958733851757,0.4674397478839094,0.9184644491661081,0.3755042844716039
|
FMD_0_8884.jpg,sakit,0,93.12924194335938,93.1199951171875,91.84327697753906,78.74234008789062,9.819137573242188,95.55036926269531,93.2579345703125,13.328598022460938,80.1515884399414,1070.4675672517153,0.4781365911750026,0.9121450235319356,0.3665637687977408,11.758151818900147,0.13441110489028565,0.3948516845703125,0.0,0.0,0.0911407470703125,0.305084228515625,0.14642333984375,0.049102783203125,0.013397216796875,0.3948516845703125,0.0,0.0,0.0890655517578125,0.310333251953125,0.14312744140625,0.0490875244140625,0.0135345458984375,0.3948516845703125,0.0,0.000396728515625,0.1143646240234375,0.29296875,0.133575439453125,0.0457611083984375,0.0180816650390625,2.946962315226535,7.247345176971396,9.526772193635145,9.734770027179936,9.999999999999035,-9.99995661604743,-9.999999999952896
|
||||||
augmented_fmdf_160.jpg,defective,1,105.96014404296875,99.46051025390625,95.9454345703125,2591.605549656933,0.331958374895098,0.7879668333875762,0.2803421146369575
|
FMD_11_jpg.rf.fd09ec987cad72e6475a1ab599468f27.jpg,sakit,0,97.56698608398438,88.61294555664062,81.48818969726562,31.325653076171875,23.714080810546875,98.09786987304688,63.97663497924805,33.54273223876953,102.73365783691406,743.1754486775413,0.5853499442540363,0.9598056424261463,0.4890948539371282,8.487535356199427,0.2392557490937326,0.506317138671875,0.0,0.0,0.0145263671875,0.08740234375,0.0936431884765625,0.1318817138671875,0.166229248046875,0.506317138671875,0.0002593994140625,0.0040283203125,0.058685302734375,0.126312255859375,0.089630126953125,0.10650634765625,0.1082611083984375,0.5063323974609375,0.001800537109375,0.034820556640625,0.1157989501953125,0.0888671875,0.0743560791015625,0.0984039306640625,0.079620361328125,3.1449333674003435,7.788489112397391,9.87561203685867,9.988424388050031,9.999999999999892,9.999998753117504,-9.999999999999979
|
||||||
augmented_fmdf_166.jpg,defective,1,44.9547119140625,40.44317626953125,37.33074951171875,2733.003881570337,0.6734555182012202,0.7122283589348647,0.6607526005142723
|
FMD_23_jpg.rf.5e1d53e50ed8e7552f4edf26c2f9698a - Copy.jpg,sakit,0,83.2481689453125,74.0516357421875,65.67221069335938,39.01251220703125,25.963088989257812,84.54350280761719,74.26718139648438,46.330875396728516,97.69152069091797,969.586063062978,0.6144095000687654,0.9372770477273319,0.5250580416144413,10.04560051214484,0.27578763711894266,0.55377197265625,0.0,0.0022735595703125,0.0357513427734375,0.07452392578125,0.1464080810546875,0.0843505859375,0.1029205322265625,0.55377197265625,0.0,0.005859375,0.0754852294921875,0.1004180908203125,0.1674041748046875,0.06341552734375,0.0336456298828125,0.5540924072265625,0.008453369140625,0.0581207275390625,0.114501953125,0.0864715576171875,0.074737548828125,0.0712890625,0.0323333740234375,2.9327975864623577,7.036548888688591,9.942791078191918,9.981603932886554,-9.99999999999994,9.999995650828904,-9.999999999999867
|
||||||
augmented_fmdf_173.jpg,defective,1,53.57952880859375,53.6822509765625,56.97259521484375,1334.517385918473,0.6328438454979091,0.8578138468151044,0.5657439623629942
|
FMD__1_jpg.rf.0b6fa9d8bc9b71b9eb15a84b61ab3724.jpg,sakit,0,67.78999328613281,59.89013671875,50.41355895996094,12.919189453125,20.913742065429688,67.86192321777344,31.685813903808594,37.098323822021484,102.11377716064453,696.5276433595272,0.7079908972786105,0.9597522676489486,0.6735119818932228,7.585365121157092,0.4536614381884379,0.6886138916015625,0.0,0.000396728515625,0.0036163330078125,0.015350341796875,0.02734375,0.0926971435546875,0.1719818115234375,0.6886138916015625,0.0,0.0008697509765625,0.0252685546875,0.038360595703125,0.056365966796875,0.1251373291015625,0.0653839111328125,0.6886138916015625,0.0003814697265625,0.0224151611328125,0.0528564453125,0.0682220458984375,0.0771636962890625,0.073211669921875,0.0171356201171875,2.8573385990358076,6.025291529329719,9.206570522448098,9.764320717262319,9.999999999949154,9.999775307040734,9.99999999996691
|
||||||
augmented_fmdf_176.jpg,defective,1,121.06707763671875,115.3619384765625,100.2586669921875,1364.7748133703183,0.4058958281308622,0.9127496480954522,0.31420260280943735
|
Lumpy_Skin_4.png,sakit,0,101.66375732421875,97.93742370605469,81.5455322265625,37.02484130859375,33.32774353027344,104.010009765625,39.99851989746094,33.909969329833984,85.37553405761719,5991.307327516155,0.32782313996427564,0.5268441088292244,0.266411893760026,43.20739091861862,0.07134858735285556,0.394073486328125,0.0,0.0,0.0086669921875,0.234375,0.2467193603515625,0.1156005859375,0.0005645751953125,0.394073486328125,0.0,0.0,0.0006561279296875,0.3133392333984375,0.2487030029296875,0.043182373046875,4.57763671875e-05,0.3942108154296875,0.00189208984375,0.0171051025390625,0.204010009765625,0.3079376220703125,0.0732269287109375,0.001617431640625,0.0,2.9824417622744996,7.779329268415489,9.978976015728701,9.944695261134981,9.99999999999978,-9.999996891086028,-9.999999999999568
|
||||||
augmented_fmdf_24.jpg,defective,1,72.47882080078125,60.9312744140625,52.92852783203125,1315.283260294281,0.5816758553361627,0.8933881509242916,0.5462813718586211
|
Papilloma-400x284.jpg,sakit,0,55.753631591796875,45.99317932128906,35.74476623535156,16.6771240234375,41.09855651855469,58.12495422363281,38.12685012817383,56.71615219116211,79.78274536132812,712.1600472351589,0.6436676051362146,0.9181022117415315,0.5962761114781726,9.52670320377423,0.35564339361126956,0.6305999755859375,0.0036773681640625,0.0116729736328125,0.1206207275390625,0.0780181884765625,0.079315185546875,0.06744384765625,0.0086517333984375,0.6305999755859375,0.0,0.0974273681640625,0.1132659912109375,0.09716796875,0.0530242919921875,0.0028533935546875,0.0056610107421875,0.6313629150390625,0.09320068359375,0.1163787841796875,0.0863189697265625,0.046051025390625,0.009307861328125,0.0042724609375,0.0131072998046875,2.9040517690592815,7.311644333869542,9.38465238422336,9.46588023325465,9.999999999739742,9.99980442853049,-9.999999999874074
|
||||||
augmented_fmdf_25.jpg,defective,1,36.85113525390625,39.74102783203125,45.07757568359375,1013.1143864478978,0.603042278319483,0.8221133910805651,0.565725648154473
|
Picture41-400x284.jpg,sakit,0,118.38644409179688,85.2127685546875,45.52833557128906,16.980865478515625,79.37716674804688,118.40217590332031,18.528005599975586,88.61226654052734,120.25740814208984,666.2747958980523,0.5665894930504511,0.9625796063160837,0.48472567290503193,8.053000625115658,0.23500210271636024,0.5029754638671875,0.0,0.0,0.0,0.0048370361328125,0.0309906005859375,0.0640869140625,0.3971099853515625,0.5029754638671875,0.0,0.0017852783203125,0.073577880859375,0.1239776611328125,0.1657562255859375,0.066436767578125,0.06549072265625,0.590240478515625,0.069305419921875,0.108917236328125,0.1052703857421875,0.0655517578125,0.04022216796875,0.015533447265625,0.0049591064453125,3.100059846410134,8.035362682511355,9.69138415454324,9.9652438093971,-9.999999999999138,9.999999915704976,-9.999999999999376
|
||||||
augmented_fmdf_29.jpg,defective,1,67.349365234375,56.49371337890625,46.8336181640625,1369.7937407858442,0.570064563622871,0.8577305508861702,0.5189770909194948
|
Picture47-1-400x284.jpg,sakit,0,87.40599060058594,68.29380798339844,65.98576354980469,46.07373046875,26.745223999023438,87.40776062011719,114.22496795654297,34.710025787353516,109.03238677978516,443.4864676983325,0.6777751300828213,0.9739974846512988,0.5835541178715564,5.361073732093613,0.3405647452284535,0.5959930419921875,0.0,0.0,0.0096588134765625,0.045501708984375,0.0415191650390625,0.069183349609375,0.2381439208984375,0.5959930419921875,0.0,0.0003814697265625,0.060333251953125,0.0761566162109375,0.14349365234375,0.12213134765625,0.0015106201171875,0.5959930419921875,0.0006561279296875,0.03106689453125,0.0481109619140625,0.0756378173828125,0.1335601806640625,0.110504150390625,0.0044708251953125,2.9159814429605673,6.583727629055651,8.944438986611438,9.757706588479303,9.999999999975934,9.999885693463721,9.999999999912996
|
||||||
augmented_fmdf_35.jpg,defective,1,57.46905517578125,52.8170166015625,46.32391357421875,1935.542493268578,0.6380042173836785,0.8319880462594081,0.6073069273816377
|
Picture49-400x284.jpg,sakit,0,35.46455383300781,35.31764221191406,34.91563415527344,7.43231201171875,0.7050018310546875,35.522552490234375,31.66611099243164,4.054631233215332,87.30280303955078,844.7342554683124,0.9415444293991547,0.9422304762390002,0.855682751935337,4.1240835534163365,0.7321959911283797,0.857513427734375,0.0,0.0,0.0,0.0,0.0018310546875,0.0098419189453125,0.1308135986328125,0.857513427734375,0.0,0.0,0.0,0.0,0.0039520263671875,0.0100860595703125,0.128448486328125,0.857513427734375,0.0,0.0,0.0,4.57763671875e-05,0.0080718994140625,0.008697509765625,0.12567138671875,2.3646595063505043,5.346869620663296,7.449552724701079,7.9914469779993365,-9.999999503786636,-9.934820228521858,-9.999999335312275
|
||||||
augmented_fmdf_38.jpg,defective,1,43.384765625,36.046875,34.31298828125,1038.412272743005,0.6137467289149113,0.8240224599051104,0.5851361593708143
|
Picture51-400x284.jpg,sakit,0,85.915771484375,65.36152648925781,55.29252624511719,15.089111328125,45.340057373046875,85.9764404296875,31.356037139892578,54.25792694091797,90.89411926269531,774.5963984512351,0.6364517949587656,0.9323313202624482,0.4873911434722187,7.925632862547926,0.23759621288770263,0.5085906982421875,0.0,0.0,0.013763427734375,0.2445526123046875,0.0854644775390625,0.086639404296875,0.0609893798828125,0.5085906982421875,0.0,0.0084686279296875,0.3406982421875,0.084075927734375,0.0130462646484375,0.0057525634765625,0.03936767578125,0.5085906982421875,0.0,0.254119873046875,0.1659698486328125,0.0209808349609375,0.00762939453125,0.00537109375,0.0373382568359375,2.8772682165464483,7.541343867873914,9.244719360699563,9.854547482548126,9.999999999986018,9.999974345647628,9.99999999998098
|
||||||
augmented_fmdf_39.jpg,defective,1,59.61602783203125,58.22723388671875,57.62530517578125,6370.367794281927,0.5576391357976227,0.5371798883652903,0.5361232932489518
|
Picture52-400x284.jpg,sakit,0,71.58062744140625,56.42741394042969,50.65840148925781,8.73138427734375,24.589828491210938,71.68992614746094,28.886001586914062,37.332237243652344,102.83378601074219,1494.7539452906685,0.7126369231812112,0.898254916820438,0.6331966425259318,11.473389829403564,0.40098766831945953,0.66326904296875,0.0,0.0,0.0,0.02056884765625,0.110748291015625,0.05267333984375,0.152740478515625,0.66326904296875,0.0,0.0,0.0085601806640625,0.127471923828125,0.1284332275390625,0.0658416748046875,0.0064239501953125,0.66326904296875,0.0,1.52587890625e-05,0.0666046142578125,0.1490936279296875,0.1103515625,0.0039825439453125,0.006683349609375,2.7310102370633254,6.349307054796062,8.872664383955463,8.972021433494366,-9.999999998572434,-9.997463870227808,9.99999999563053
|
||||||
augmented_fmdf_41.jpg,defective,1,88.67083740234375,84.30401611328125,53.0303955078125,1808.0118975184741,0.4224938661555036,0.8397277344329264,0.38942136005215594
|
SRm 2d-1WM-1.jpg,sakit,0,56.50703430175781,52.443450927734375,51.32293701171875,55.134002685546875,14.743743896484375,58.088714599609375,106.22659301757812,24.203279495239258,81.89093780517578,1084.3252011254533,0.6783007030594952,0.9059007149985648,0.6152236495981491,10.843220291827777,0.37857945784433644,0.649200439453125,0.0,0.000244140625,0.0649871826171875,0.144683837890625,0.0541229248046875,0.0627593994140625,0.0240020751953125,0.649200439453125,0.0,0.0013885498046875,0.140228271484375,0.0877532958984375,0.0522613525390625,0.0537109375,0.0154571533203125,0.649200439453125,0.0016326904296875,0.0085296630859375,0.108795166015625,0.116668701171875,0.090240478515625,0.0094451904296875,0.0154876708984375,2.8363597196726906,6.560960589668698,8.953522446414553,9.63810524171919,9.999999999919153,9.999915849027792,-9.999999999811521
|
||||||
augmented_fmdf_42.jpg,defective,1,93.98583984375,86.61236572265625,82.82818603515625,1007.7440021522704,0.4624042707042411,0.9104226558968839,0.3681120352882745
|
SRm 2d-2WM-1.jpg,sakit,0,61.09111022949219,58.89909362792969,57.19892883300781,51.857452392578125,11.903427124023438,62.73236083984375,97.18999481201172,22.72630500793457,82.32522583007812,1038.575883086169,0.63661676795084,0.9158964948710041,0.5778738763679235,11.337868909021743,0.33401028913395875,0.60748291015625,0.0,0.001434326171875,0.1139373779296875,0.1347198486328125,0.0578765869140625,0.0500946044921875,0.034454345703125,0.60748291015625,0.0,0.0028076171875,0.1550750732421875,0.1056060791015625,0.0489349365234375,0.0399627685546875,0.040130615234375,0.60748291015625,0.0034637451171875,0.0283050537109375,0.1413116455078125,0.10150146484375,0.042877197265625,0.03656005859375,0.0384979248046875,2.9529206420805822,6.781917952030201,9.602904463239314,9.552608371384894,9.999999999891077,9.999860754245532,-9.999999999932005
|
||||||
augmented_fmdf_55.jpg,defective,1,68.6456298828125,58.3345947265625,48.5191650390625,1362.5820159472805,0.5525466895450172,0.857678694986373,0.4974460638412134
|
augmented_fmdf_100.jpg,sakit,0,108.97236633300781,89.50309753417969,71.61097717285156,33.593719482421875,62.59236145019531,113.20350646972656,58.55181121826172,61.47018051147461,96.97742462158203,2294.140783217759,0.4059152395911744,0.8307994663957682,0.3477389605657612,22.511415998219732,0.12104986032102678,0.4104156494140625,0.0,0.0062103271484375,0.049560546875,0.072784423828125,0.1981353759765625,0.1609039306640625,0.10198974609375,0.4104156494140625,0.0,0.005889892578125,0.1909027099609375,0.162506103515625,0.1193695068359375,0.0956573486328125,0.0152587890625,0.4117889404296875,0.0655670166015625,0.1641693115234375,0.0869598388671875,0.106719970703125,0.1224365234375,0.0395050048828125,0.0028533935546875,3.0843940334450117,8.443331149832023,9.983286733920533,9.997403879341835,9.999999999999998,9.999999849712554,9.999999999999996
|
||||||
augmented_fmdf_6.jpg,defective,1,60.5467529296875,59.84075927734375,60.394287109375,1858.3212860132633,0.5304950946509233,0.8113719906531099,0.49515953578061495
|
augmented_fmdf_118.jpg,sakit,0,89.48434448242188,81.22517395019531,79.41200256347656,50.30609130859375,16.565704345703125,90.23307800292969,102.46377563476562,28.137434005737305,101.90421295166016,1818.838168100805,0.5854278053763173,0.9009788921033106,0.5128411509612694,14.998687118583037,0.26306406808406363,0.5499267578125,0.0,0.0,0.0031280517578125,0.0366058349609375,0.1701812744140625,0.1225128173828125,0.117645263671875,0.5499267578125,0.0,0.0,0.0274505615234375,0.161102294921875,0.0976104736328125,0.0547027587890625,0.1092071533203125,0.5499267578125,0.00299072265625,0.0040740966796875,0.06787109375,0.12982177734375,0.07672119140625,0.0579071044921875,0.110687255859375,2.8709721929729457,6.744350044242843,9.670764043002235,9.805719654111357,-9.999999999995879,-9.999896048643206,-9.99999999998084
|
||||||
augmented_fmdf_68.jpg,defective,1,90.7005615234375,83.76312255859375,80.46490478515625,939.576836908353,0.46430730610928533,0.9149123391031747,0.3780024068586904
|
augmented_fmdf_122.jpg,sakit,0,85.23057556152344,74.95530700683594,69.82298278808594,37.600067138671875,31.311492919921875,89.89559936523438,82.45623016357422,50.984127044677734,105.74153137207031,1574.5444122154177,0.6206415432184206,0.9100513097650372,0.5351170721737392,13.489284550884108,0.2864250183297176,0.5675048828125,0.0,0.0047454833984375,0.0368804931640625,0.06707763671875,0.059539794921875,0.1227874755859375,0.1414642333984375,0.5675048828125,0.0,0.0001068115234375,0.0803985595703125,0.14495849609375,0.0748748779296875,0.020416259765625,0.1117401123046875,0.5675048828125,0.0040435791015625,0.0539093017578125,0.1201934814453125,0.076446533203125,0.030242919921875,0.0245513916015625,0.12310791015625,2.799103670233196,7.089157579799977,9.262706636999324,9.076158515127561,9.999999998977119,9.999241094058627,9.99999999846645
|
||||||
augmented_fmdf_69.jpg,defective,1,56.00042724609375,56.20709228515625,59.6085205078125,1653.6487869305695,0.604058584174155,0.8286907631672956,0.5396007560214372
|
augmented_fmdf_124.jpg,sakit,0,31.997894287109375,28.655258178710938,24.756332397460938,10.1417236328125,12.919052124023438,32.40516662597656,37.87263107299805,29.728761672973633,64.96456146240234,901.6346181413736,0.8004103313956628,0.8704945091227835,0.7698633520225936,8.165389541479579,0.5927362838815358,0.79681396484375,0.0,0.000701904296875,0.02081298828125,0.0813140869140625,0.0921630859375,0.0073699951171875,0.000823974609375,0.79681396484375,0.0,0.0139312744140625,0.055084228515625,0.0647430419921875,0.06768798828125,0.001068115234375,0.00067138671875,0.79681396484375,0.003204345703125,0.0498809814453125,0.0543670654296875,0.0714569091796875,0.0229644775390625,0.000823974609375,0.00048828125,2.481183124785515,5.816674152122995,8.753043838705496,7.98925806266285,-9.999999913720094,9.948712550861437,9.999999840578589
|
||||||
augmented_fmdf_72.jpg,defective,1,111.97735595703125,107.33343505859375,93.67840576171875,1288.2685776682679,0.4422797216273233,0.9207084150394212,0.3543346326432004
|
augmented_fmdf_125.jpg,sakit,0,94.50384521484375,88.54676818847656,81.29763793945312,33.6517333984375,20.727447509765625,95.01629638671875,59.36677169799805,29.29527473449707,86.91230010986328,1054.2926620670116,0.5310754557947027,0.9221921876991259,0.41578631946137756,10.773876059658344,0.1729497180053984,0.4443511962890625,0.0,0.0,0.0319671630859375,0.1400146484375,0.266815185546875,0.11187744140625,0.004974365234375,0.4443511962890625,0.0,0.00146484375,0.0882415771484375,0.1658477783203125,0.220672607421875,0.0791778564453125,0.000244140625,0.4443511962890625,0.0006561279296875,0.0236358642578125,0.1321563720703125,0.1881103515625,0.1829376220703125,0.0281524658203125,0.0,3.0346354735969037,7.634548850069024,9.695727535736864,9.984835967277013,9.999999999999728,9.999997840081159,9.999999999999892
|
||||||
augmented_fmdf_86.jpg,defective,1,67.35626220703125,69.51171875,66.48602294921875,5217.719191051131,0.4669663765923135,0.6064982212958953,0.45557321814382395
|
augmented_fmdf_130.jpg,sakit,0,117.9752197265625,100.44415283203125,99.73220825195312,100.21328735351562,28.441299438476562,117.99490356445312,153.39369201660156,28.38370132446289,84.06383514404297,315.7038867850667,0.5361736524838234,0.9729350628531138,0.31795682229631,4.588438872941253,0.10111234737252729,0.326995849609375,0.0,0.0,0.005615234375,0.1542510986328125,0.3508148193359375,0.161376953125,0.000946044921875,0.326995849609375,0.0,0.0006256103515625,0.1739959716796875,0.2444305419921875,0.20526123046875,0.0486907958984375,0.0,0.326995849609375,0.0,0.00128173828125,0.1851654052734375,0.257232666015625,0.1734619140625,0.0558624267578125,0.0,2.952726223436252,7.506327565656443,9.894370872234544,9.89551828192594,9.999999999996854,9.999981187123467,-9.99999999999926
|
||||||
augmented_fmdf_88.jpg,defective,1,49.9962158203125,44.4931640625,40.86187744140625,2728.7643141857775,0.6395511538653171,0.7241083257875364,0.6246798004453263
|
augmented_fmdf_136.jpg,sakit,0,152.89141845703125,130.4967041015625,120.33732604980469,52.797454833984375,43.52943420410156,152.89141845703125,105.74246978759766,32.37936019897461,79.33324432373047,525.1125876219578,0.3708710903052628,0.947770948726454,0.1919383493035528,7.502062050606756,0.03687527319827171,0.2054595947265625,0.0,0.0,0.0,0.0246429443359375,0.378082275390625,0.351470947265625,0.04034423828125,0.2054595947265625,0.0,0.0,0.0461578369140625,0.258026123046875,0.4205322265625,0.065277099609375,0.004547119140625,0.2054595947265625,6.103515625e-05,0.015716552734375,0.1058502197265625,0.36553955078125,0.2832794189453125,0.0226593017578125,0.001434326171875,3.1282153101144665,8.93537400922667,9.971664784190727,9.989868601895711,9.99999999999996,9.999999900150032,-10.0
|
||||||
augmented_fmdf_94.jpg,defective,1,95.71502685546875,88.4622802734375,84.9202880859375,1103.004713858074,0.4552810270896772,0.9033106106467809,0.3586873295975983
|
augmented_fmdf_14.jpg,sakit,0,83.43389892578125,71.37458801269531,65.14707946777344,36.7288818359375,32.78131103515625,87.09086608886719,82.75304412841797,51.73426818847656,103.60638427734375,1429.8667366567495,0.6217071273235586,0.9125894151875947,0.5422535002530829,12.863472561451305,0.2941026978710089,0.57244873046875,0.0,0.0051116943359375,0.0326385498046875,0.0723724365234375,0.061553955078125,0.1305694580078125,0.12530517578125,0.57244873046875,0.0,0.000396728515625,0.0934600830078125,0.1515655517578125,0.0721282958984375,0.0195159912109375,0.090484619140625,0.57244873046875,0.0043182373046875,0.05865478515625,0.1350860595703125,0.0822906494140625,0.03143310546875,0.0215301513671875,0.09423828125,2.772946569046003,7.148763678939019,9.284202770664418,9.04039010614813,9.999999998665219,9.999246403849138,9.999999998436543
|
||||||
augmented_fmdf_97.jpg,defective,1,63.09228515625,62.6842041015625,62.6136474609375,1185.9984346842218,0.6824418494113406,0.9311320817875038,0.6436618751428788
|
augmented_fmdf_146.jpg,sakit,0,82.52407836914062,75.09243774414062,72.740478515625,49.688568115234375,14.44183349609375,82.54591369628906,109.46210479736328,19.7329158782959,94.83006286621094,277.76028108070085,0.7105685842475312,0.9825867358763704,0.5519257024612693,3.4694495861509007,0.30463314311078493,0.5604248046875,0.0,0.0,0.001312255859375,0.0752105712890625,0.1615447998046875,0.1618804931640625,0.0396270751953125,0.5604248046875,0.0,0.0,0.0524139404296875,0.1156005859375,0.13604736328125,0.1227264404296875,0.012786865234375,0.5604248046875,0.0,0.0,0.0529022216796875,0.1385498046875,0.140655517578125,0.1074066162109375,6.103515625e-05,2.9751525694691816,6.600909859556765,9.106128253939314,9.8019914667687,-9.99999999995404,-9.999884800702878,9.999999999980728
|
||||||
|
augmented_fmdf_148.jpg,sakit,0,35.760528564453125,29.563201904296875,27.181488037109375,31.9014892578125,18.818191528320312,35.93409729003906,85.17474365234375,36.382694244384766,55.96553039550781,380.95353793863245,0.6991019663717367,0.9186488943137209,0.6606420501107768,6.50302822559761,0.4364891912445503,0.683197021484375,0.006744384765625,0.1052093505859375,0.1051788330078125,0.0737762451171875,0.0184783935546875,0.0052490234375,0.002166748046875,0.683258056640625,0.036834716796875,0.15789794921875,0.0830230712890625,0.0299530029296875,0.005401611328125,0.002532958984375,0.0010986328125,0.683258056640625,0.0461273193359375,0.18536376953125,0.067657470703125,0.013702392578125,0.002593994140625,0.0009765625,0.0003204345703125,2.8836444952324762,6.4298788150612936,9.094158710712781,9.935474113728278,-9.999999999996966,9.999958063905504,9.999999999993259
|
||||||
|
augmented_fmdf_162.jpg,sakit,0,163.58558654785156,140.17079162597656,101.56504821777344,30.9149169921875,81.43650817871094,163.58824157714844,16.52335548400879,41.395389556884766,74.42249298095703,305.5137299944058,0.4059806128228645,0.9639247764900153,0.15697140358536923,5.171398829424658,0.02466900594164655,0.1641082763671875,0.0,0.0,0.0013275146484375,0.040008544921875,0.2354736328125,0.5247039794921875,0.0343780517578125,0.1641082763671875,0.0,0.000946044921875,0.054473876953125,0.159454345703125,0.5687103271484375,0.05230712890625,0.0,0.1641082763671875,0.0030975341796875,0.1131439208984375,0.3654937744140625,0.3167266845703125,0.0373077392578125,0.0001220703125,0.0,3.170216376334491,8.138114406555244,9.975704545143632,9.997980535203883,-9.999999999999996,-9.99999983865311,10.0
|
||||||
|
augmented_fmdf_168.jpg,sakit,0,134.62574768066406,104.70285034179688,102.45126342773438,96.18862915039062,45.36158752441406,134.62574768066406,150.02413940429688,36.79778289794922,94.9564437866211,237.0253098782231,0.42822738290958856,0.9821951752041039,0.3125834058011803,5.888476892432536,0.09772019158092947,0.3220062255859375,0.0,0.0,0.0107269287109375,0.0405731201171875,0.17340087890625,0.376953125,0.0763397216796875,0.3220062255859375,0.0,0.0280609130859375,0.1436920166015625,0.1436767578125,0.29217529296875,0.0700836181640625,0.00030517578125,0.3220062255859375,0.0011138916015625,0.0229034423828125,0.1610870361328125,0.197662353515625,0.216705322265625,0.0779571533203125,0.0005645751953125,3.146283770351587,6.957149586615612,9.988179702472811,9.999269173526233,-10.0,-9.999999885925307,-10.0
|
||||||
|
augmented_fmdf_27.jpg,sakit,0,170.58612060546875,145.85177612304688,104.64805603027344,32.21319580078125,85.84646606445312,170.58753967285156,15.861047744750977,39.470088958740234,68.88653564453125,303.66024715300824,0.3899431138575707,0.9580744389712293,0.1301685728846347,5.064739953408183,0.016969192843165025,0.1341552734375,0.0,0.0,0.0,0.0225982666015625,0.2490692138671875,0.559173583984375,0.035003662109375,0.1341552734375,0.0,0.0,0.0389862060546875,0.1754150390625,0.601318359375,0.0501251220703125,0.0,0.1341552734375,0.0020294189453125,0.11376953125,0.3998870849609375,0.31884765625,0.03131103515625,0.0,0.0,3.1587409621897913,8.13167944206708,9.94183991002417,9.99918094853639,-9.999999999999998,-9.99999993235609,-10.0
|
||||||
|
augmented_fmdf_33.jpg,sakit,0,131.27816772460938,101.17262268066406,99.07461547851562,92.20339965820312,46.035247802734375,131.27816772460938,147.9977264404297,37.62199783325195,94.21317291259766,208.62105881370402,0.4301512722014711,0.9838749989688051,0.3188557743449183,5.909782643312273,0.10168977393890366,0.329132080078125,0.0,0.0,0.0140228271484375,0.0480194091796875,0.18359375,0.3776397705078125,0.0475921630859375,0.329132080078125,0.0,0.0352630615234375,0.1568450927734375,0.1463623046875,0.2807464599609375,0.051513671875,0.0001373291015625,0.329132080078125,0.0013885498046875,0.026092529296875,0.1727752685546875,0.2008209228515625,0.22088623046875,0.048828125,7.62939453125e-05,3.1431706639237826,7.000529061629263,9.990027072716552,9.999598864795361,-10.0,-9.999999873951658,10.0
|
||||||
|
augmented_fmdf_41.jpg,sakit,0,79.5042724609375,70.19664001464844,64.85415649414062,34.030670166015625,26.358123779296875,82.62428283691406,79.7732925415039,47.81314468383789,105.22053527832031,1321.918201995636,0.6641695327219226,0.9256095254003901,0.5820059137231001,11.312928161012394,0.3387858319827956,0.6064300537109375,0.0,0.0033416748046875,0.0231170654296875,0.0615997314453125,0.05206298828125,0.1032867431640625,0.1501617431640625,0.6064300537109375,0.0,0.0,0.0728607177734375,0.1134490966796875,0.0672760009765625,0.01947021484375,0.120513916015625,0.6064300537109375,0.004669189453125,0.0453643798828125,0.10455322265625,0.0731048583984375,0.023406982421875,0.016021728515625,0.1264495849609375,2.756261024387464,6.92587643312242,8.879657205111695,8.900136321769402,9.999999996874497,9.998564309108886,9.999999994901817
|
||||||
|
augmented_fmdf_43.jpg,sakit,0,28.5103759765625,25.267898559570312,21.92584228515625,8.127532958984375,11.413467407226562,28.722259521484375,32.49595642089844,28.207351684570312,61.732017517089844,829.762030253723,0.8216285437348579,0.8677740070153588,0.7931434663208982,7.468771918636896,0.6291176295258228,0.818511962890625,0.0,0.00018310546875,0.016510009765625,0.0771026611328125,0.0809326171875,0.0059661865234375,0.00079345703125,0.818511962890625,0.0,0.0146636962890625,0.0506439208984375,0.058502197265625,0.056243896484375,0.0008087158203125,0.0006256103515625,0.818511962890625,0.0019378662109375,0.0483245849609375,0.0462646484375,0.0665130615234375,0.017242431640625,0.000701904296875,0.0005035400390625,2.3769201120000565,5.599161662474898,8.318640703457795,7.917924474445023,-9.999999622003923,9.924963685081309,-9.999999902079004
|
||||||
|
augmented_fmdf_45.jpg,sakit,0,68.07261657714844,60.04136657714844,53.82594299316406,17.733306884765625,21.093185424804688,68.18681335449219,41.628055572509766,33.881961822509766,88.32890319824219,724.5552637839138,0.6649265252427226,0.9445593884885839,0.5915117011457299,8.05834277058782,0.34993232822211856,0.616241455078125,0.0,0.0,0.0323486328125,0.066131591796875,0.1623382568359375,0.1095428466796875,0.013397216796875,0.616241455078125,0.0,0.0016937255859375,0.09393310546875,0.132659912109375,0.06878662109375,0.0856170654296875,0.001068115234375,0.616241455078125,3.0517578125e-05,0.029266357421875,0.1632843017578125,0.07147216796875,0.0597686767578125,0.0599365234375,0.0,2.9444605051164148,6.534845519842386,9.577429397691896,9.780441380233354,9.999999999976946,9.999860223067865,9.999999999981224
|
||||||
|
augmented_fmdf_49.jpg,sakit,0,110.07682800292969,96.47831726074219,95.65347290039062,89.74493408203125,22.465728759765625,110.10481262207031,146.89053344726562,23.945825576782227,87.66031646728516,305.5868131405985,0.5822806159593219,0.9766241884523298,0.36985030629491406,4.137901552841925,0.13680468121929681,0.3789825439453125,0.0,0.0,0.0020904541015625,0.1315460205078125,0.3076629638671875,0.1787261962890625,0.0009918212890625,0.3789825439453125,0.0,0.0,0.11785888671875,0.2171783447265625,0.222747802734375,0.063232421875,0.0,0.3789825439453125,0.0,6.103515625e-05,0.1266021728515625,0.2323150634765625,0.190216064453125,0.0718231201171875,0.0,2.9262652738880988,7.287639206881599,9.83438818301672,9.856160924836821,9.999999999992722,9.999962652714125,9.999999999999803
|
||||||
|
augmented_fmdf_5.jpg,sakit,0,107.91313171386719,95.59599304199219,82.38630676269531,18.4066162109375,36.52165222167969,107.91999816894531,16.54240608215332,34.978912353515625,92.71517181396484,761.8702295602579,0.5419869951627356,0.9470913364615691,0.3961184457401837,7.8773358561280675,0.1569468893684053,0.415191650390625,0.0,0.0,0.0,0.0852203369140625,0.317230224609375,0.1397705078125,0.0425872802734375,0.415191650390625,0.0,0.0,0.043060302734375,0.2289886474609375,0.2355499267578125,0.0491180419921875,0.0280914306640625,0.415191650390625,0.0,0.014617919921875,0.20599365234375,0.251190185546875,0.06463623046875,0.0285491943359375,0.0198211669921875,3.0316138621133346,6.867880797513451,9.416304955292645,9.913668886170422,-9.99999999999683,-9.999980384355522,9.99999999999316
|
||||||
|
augmented_fmdf_53.jpg,sakit,0,175.01084899902344,151.27220153808594,109.37471008300781,33.500030517578125,85.421875,175.01968383789062,14.926851272583008,37.247314453125,64.0491714477539,267.5552435479751,0.30294990173691155,0.9576958707619686,0.10852347711049239,5.889469168373934,0.011794116563450542,0.1122589111328125,0.0,0.0,0.00030517578125,0.0227813720703125,0.2455902099609375,0.5926513671875,0.0264129638671875,0.1122589111328125,0.0,0.0,0.0361328125,0.149688720703125,0.6435546875,0.0583648681640625,0.0,0.1122589111328125,0.00201416015625,0.1021270751953125,0.3855743408203125,0.356689453125,0.041290283203125,4.57763671875e-05,0.0,3.174208400234621,8.003740601889602,9.931335274322198,9.99979669522778,-10.0,9.999999986340741,-10.0
|
||||||
|
augmented_fmdf_54.jpg,sakit,0,171.5825958251953,146.69369506835938,106.69175720214844,31.74267578125,84.22311401367188,171.58380126953125,15.603398323059082,38.855255126953125,68.77145385742188,302.6756714671432,0.38908796479132685,0.9580547314558912,0.12777595687787927,5.038524584189515,0.01635412344495005,0.1321258544921875,0.0,0.0,6.103515625e-05,0.0236663818359375,0.2362060546875,0.567169189453125,0.040771484375,0.1321258544921875,0.0,1.52587890625e-05,0.041412353515625,0.16796875,0.597900390625,0.060577392578125,0.0,0.1321258544921875,0.0025177001953125,0.101470947265625,0.3785858154296875,0.345062255859375,0.0400238037109375,0.000213623046875,0.0,3.171173356154316,8.288135381773563,9.950942084739905,9.999072835225288,-10.0,-9.999999945747247,9.999999999999998
|
||||||
|
augmented_fmdf_55.jpg,sakit,0,138.9673309326172,117.55157470703125,108.72280883789062,50.583648681640625,42.109954833984375,138.9673309326172,105.7474594116211,36.01039505004883,84.06603240966797,336.05887157027445,0.4176659494047616,0.9703977368142792,0.2486681965838966,6.251237139950979,0.06186299811772652,0.260528564453125,0.0,0.0,0.00323486328125,0.0573883056640625,0.3563385009765625,0.3085479736328125,0.0139617919921875,0.260528564453125,0.0,0.004486083984375,0.0910186767578125,0.2352294921875,0.3536834716796875,0.05230712890625,0.00274658203125,0.260528564453125,0.0019989013671875,0.051422119140625,0.1129608154296875,0.2922515869140625,0.2605438232421875,0.0193023681640625,0.0009918212890625,3.1716122312308115,8.68802109244482,9.991637184498936,9.996601783488293,9.999999999999998,-9.999999850080039,9.999999999999996
|
||||||
|
augmented_fmdf_56.jpg,sakit,0,104.12594604492188,97.54019165039062,92.68275451660156,44.253082275390625,17.110061645507812,104.34944152832031,90.29619598388672,21.991212844848633,97.53240966796875,507.08588021246646,0.5556836197056235,0.9707946387496503,0.4339148859752912,6.522948355545357,0.18832024398827643,0.450347900390625,0.0,0.0,0.0082244873046875,0.1006011962890625,0.1827239990234375,0.1713409423828125,0.086761474609375,0.450347900390625,0.0,0.0,0.0379486083984375,0.1370849609375,0.22589111328125,0.072021484375,0.0767059326171875,0.450347900390625,0.0,0.0075225830078125,0.06304931640625,0.1796722412109375,0.1702728271484375,0.0559844970703125,0.073150634765625,3.09771452968394,7.492482154110753,9.932918686657757,9.919386001869425,-9.99999999999929,-9.999985245672844,9.999999999998527
|
||||||
|
augmented_fmdf_57.jpg,sakit,0,41.00727844238281,38.3729248046875,43.83198547363281,81.95175170898438,12.097381591796875,44.71095275878906,126.50650024414062,21.814245223999023,70.53279876708984,970.6093255804572,0.6908617569273509,0.8791390249844141,0.6579843877115518,11.249943043172152,0.4330175268610901,0.69403076171875,0.0,0.0380706787109375,0.123046875,0.0723419189453125,0.0435333251953125,0.02264404296875,0.0063323974609375,0.69403076171875,0.0001983642578125,0.0760955810546875,0.1102142333984375,0.061187744140625,0.0392913818359375,0.0136566162109375,0.0053253173828125,0.69403076171875,0.003265380859375,0.021514892578125,0.1024017333984375,0.084197998046875,0.050506591796875,0.0321044921875,0.0119781494140625,2.950160246996025,7.214936880272062,9.22904247964143,9.943520360221738,-9.999999999995069,-9.999985320269086,-9.999999999999332
|
||||||
|
augmented_fmdf_58.jpg,sakit,0,67.38385009765625,61.13499450683594,62.06440734863281,54.451141357421875,9.317153930664062,68.17489624023438,114.48955535888672,27.929710388183594,103.85758972167969,1405.3696448223866,0.7513226330709326,0.9257086164179019,0.6602218399763734,11.223093920474014,0.4359527452001812,0.6860809326171875,0.0,0.003204345703125,0.00653076171875,0.055816650390625,0.032318115234375,0.0301971435546875,0.18585205078125,0.6860809326171875,0.0,0.0072174072265625,0.0405120849609375,0.058258056640625,0.0394287109375,0.032501220703125,0.1360015869140625,0.6860809326171875,0.00384521484375,0.0031585693359375,0.0283203125,0.06695556640625,0.0368804931640625,0.031036376953125,0.1437225341796875,2.805214983927735,6.40347656557624,9.142706144115321,9.153588761381322,9.999999998451937,9.998360196683983,-9.999999999605043
|
||||||
|
augmented_fmdf_67.jpg,sakit,0,32.96839904785156,26.829238891601562,24.166107177734375,28.6104736328125,18.668838500976562,33.10758972167969,81.50275421142578,37.70643997192383,55.29994201660156,408.77652623036187,0.7231079953792582,0.9087491607884979,0.6902716421179166,6.460811038533316,0.4765357397803145,0.7129974365234375,0.008026123046875,0.0865020751953125,0.09429931640625,0.0709381103515625,0.01910400390625,0.0059051513671875,0.002227783203125,0.71307373046875,0.036224365234375,0.13726806640625,0.0786895751953125,0.026580810546875,0.00439453125,0.0026702880859375,0.0010986328125,0.7130584716796875,0.0445556640625,0.172637939453125,0.05810546875,0.0076751708984375,0.002685546875,0.0009307861328125,0.0003509521484375,2.8801803834558375,6.36025111039457,9.001796925935336,9.956143278926032,-9.999999999995568,-9.99997794681798,-9.999999999999204
|
||||||
|
augmented_fmdf_69.jpg,sakit,0,84.83279418945312,74.0994873046875,71.55546569824219,63.38946533203125,22.851577758789062,85.52870178222656,119.50455474853516,32.86423110961914,89.67286682128906,1010.6761061302008,0.5449526637271278,0.9250907549417261,0.4775670373314975,11.543268064871008,0.22812314096676836,0.5072479248046875,0.0,0.0066680908203125,0.050628662109375,0.1004638671875,0.193603515625,0.114105224609375,0.02728271484375,0.5072479248046875,1.52587890625e-05,0.0412445068359375,0.1113433837890625,0.1427154541015625,0.110504150390625,0.070648193359375,0.0162811279296875,0.5072479248046875,0.0005950927734375,0.054656982421875,0.1257781982421875,0.1244964599609375,0.1180419921875,0.0629119873046875,0.0062713623046875,2.9880698572648248,8.121909373753667,9.357978428384536,9.85251862546517,-9.999999999981137,-9.99998704002259,9.999999999991852
|
||||||
|
augmented_fmdf_71.jpg,sakit,0,84.8643798828125,78.93740844726562,72.52763366699219,30.81243896484375,19.850128173828125,85.29264831542969,60.05263137817383,29.805429458618164,85.57159423828125,912.7929348040319,0.5654165064459086,0.9301014746168305,0.45969197387236077,9.893689051252123,0.21138787806074574,0.4881591796875,0.0,0.0001220703125,0.05731201171875,0.1224517822265625,0.238067626953125,0.0900726318359375,0.003814697265625,0.4881591796875,0.0,0.0120086669921875,0.104644775390625,0.1388092041015625,0.1963653564453125,0.05999755859375,1.52587890625e-05,0.4881591796875,0.0007476806640625,0.044403076171875,0.1300048828125,0.1555938720703125,0.1612091064453125,0.0198822021484375,0.0,3.060532542752341,7.346510737475733,9.953329801621962,9.984773786003952,9.999999999999964,9.999998626002462,9.999999999999908
|
||||||
|
augmented_fmdf_99.jpg,sakit,0,77.11231994628906,67.59739685058594,60.37135314941406,17.21466064453125,24.241470336914062,77.15660095214844,38.788307189941406,35.401302337646484,91.3559341430664,771.3120376909561,0.6330360586710359,0.9446801084786124,0.547724933902263,8.481222889307107,0.3000532248423006,0.5732269287109375,0.0,0.0,0.02496337890625,0.07281494140625,0.1763763427734375,0.1368408203125,0.015777587890625,0.5732269287109375,0.0,0.0011444091796875,0.0970306396484375,0.155181884765625,0.0667572021484375,0.105499267578125,0.00115966796875,0.5732269287109375,0.0,0.022979736328125,0.1891326904296875,0.0824432373046875,0.0582427978515625,0.073974609375,0.0,2.99659806593245,6.791725764692607,9.973004993120801,9.870585880729704,-9.999999999998055,9.999939450903577,-9.999999999998868
|
||||||
|
blue11-e1515364798164-1012x1024-1-400x284.jpg,sakit,0,142.6956329345703,107.20973205566406,93.70187377929688,21.453338623046875,65.82667541503906,142.6956329345703,57.29437255859375,42.34526443481445,87.1002426147461,409.96709015660826,0.4186502377009457,0.9599207329797586,0.24747675008483258,6.6432070993663,0.06127597684365934,0.26043701171875,0.0,0.0,0.000213623046875,0.0835113525390625,0.227203369140625,0.3966522216796875,0.031982421875,0.26043701171875,0.0,0.0017852783203125,0.1793212890625,0.3421173095703125,0.2160186767578125,0.0003204345703125,0.0,0.26043701171875,0.00140380859375,0.1116180419921875,0.216156005859375,0.37493896484375,0.035430908203125,1.52587890625e-05,0.0,3.069469009941738,7.6087548235580345,9.913335043811987,9.97699028570355,-9.999999999999906,-9.99999900645746,9.999999999999758
|
||||||
|
bvd-md-bulbs-heel-lesion_jpg.rf.eaa3c17e2429635c02a37cf37be06e79.jpg,sakit,0,77.28486633300781,75.9945068359375,72.38021850585938,30.987548828125,10.856216430664062,79.15245056152344,66.73594665527344,20.067941665649414,105.7276840209961,1656.811332279145,0.7091282316614903,0.9200395752975644,0.6086929391579265,11.588487060879764,0.37053474888017934,0.6340789794921875,0.0,0.0,0.0,0.0243377685546875,0.0907440185546875,0.10302734375,0.1478118896484375,0.6340789794921875,0.0,0.0,0.0,0.020111083984375,0.1092071533203125,0.1221771240234375,0.1144256591796875,0.6340789794921875,0.0,1.52587890625e-05,0.0116119384765625,0.0589599609375,0.1110382080078125,0.075469970703125,0.10882568359375,2.7689696441994545,6.371973227573766,9.167874868848878,9.135483923199047,-9.999999998340666,-9.998373002169561,9.99999999992664
|
||||||
|
cattle_mastitis_018_jpg.rf.aff921ae16c9960dfe0c343c4a2ba5a3.jpg,sakit,0,66.42863464355469,43.550384521484375,38.39068603515625,33.19769287109375,55.96470642089844,66.45033264160156,91.12564086914062,59.658512115478516,68.95501708984375,366.6575026473199,0.5416609618575624,0.9311955658952996,0.45964158547400263,7.671960937107326,0.21135161946047773,0.48785400390625,0.0,0.0758819580078125,0.20660400390625,0.119110107421875,0.0900421142578125,0.0186767578125,0.0018310546875,0.48785400390625,0.0808258056640625,0.289825439453125,0.1212310791015625,0.0159912109375,0.001983642578125,0.0020599365234375,0.0002288818359375,0.4964447021484375,0.18109130859375,0.2248687744140625,0.0766448974609375,0.0160980224609375,0.0027923583984375,0.0020599365234375,0.0,2.926823253252768,7.586911537522415,9.463159119799373,9.559663076337062,9.999999999859137,9.99987888015338,9.99999999992848
|
||||||
|
cattle_mastitis_020_jpeg.rf.46975b51fb65008bcf494ed02d7d7afb.jpg,sakit,0,81.13725280761719,62.389190673828125,55.22926330566406,7.809326171875,32.65423583984375,81.13725280761719,18.120460510253906,41.87874984741211,102.13150024414062,329.96163183902974,0.725772884603264,0.9768260061498446,0.5947368488793612,3.777417808164124,0.3537218027233708,0.6020660400390625,0.0,0.0,0.0,0.0450592041015625,0.1029510498046875,0.11639404296875,0.1335296630859375,0.6020660400390625,0.0,0.002716064453125,0.055328369140625,0.165557861328125,0.1281585693359375,0.04595947265625,0.000213623046875,0.6020660400390625,0.0,0.0268096923828125,0.130706787109375,0.134735107421875,0.0849456787109375,0.0207366943359375,0.0,2.8696783479689594,6.6285277136337255,8.779299583262876,9.450943508630715,-9.999999999320496,-9.99947418115092,-9.999999999853763
|
||||||
|
cattle_mastitis_033_jpg.rf.2c5fd6593278c5a9f9e313d3ebed7342.jpg,sakit,0,65.54804992675781,63.242645263671875,61.666473388671875,45.10552978515625,13.741622924804688,68.34304809570312,91.68648529052734,27.097434997558594,96.49281311035156,727.1452064512405,0.7139511273876864,0.9558137400663077,0.6391933733019649,7.591573346780127,0.4085915808742444,0.6538848876953125,0.0,0.0,0.0144500732421875,0.0689849853515625,0.1119537353515625,0.0753021240234375,0.0754241943359375,0.6538848876953125,0.0,0.0,0.02288818359375,0.1023406982421875,0.0910491943359375,0.054962158203125,0.0748748779296875,0.6538848876953125,0.0002899169921875,0.014739990234375,0.0602264404296875,0.0701446533203125,0.053680419921875,0.053314208984375,0.093719482421875,2.7467513402852877,6.355465895741884,8.428554025496561,8.88410817493238,9.999999990579099,9.99878923774182,9.99999999441263
|
||||||
|
cattle_mastitis_051_jpg.rf.a4ce7a16fbcc32bdf4bda044b2dc8b47.jpg,sakit,0,83.3726806640625,66.38381958007812,41.75205993652344,20.26092529296875,82.61468505859375,86.35078430175781,25.504318237304688,70.4658432006836,68.73062896728516,535.1766639912834,0.6748507566988614,0.911305822005394,0.36200377521682037,6.821029823531107,0.13110721652322102,0.381744384765625,0.0,0.0388641357421875,0.1107177734375,0.4472503662109375,0.01873779296875,0.002685546875,0.0,0.381744384765625,0.0,0.2288818359375,0.27386474609375,0.1049041748046875,0.0103912353515625,0.000213623046875,0.0,0.4479522705078125,0.1178436279296875,0.4149627685546875,0.015106201171875,0.0041351318359375,0.0,0.0,0.0,3.004893431168626,8.394177281380516,9.563302484077731,9.965992613389618,9.999999999998673,-9.999999142456307,9.999999999999917
|
||||||
|
cattle_mastitis_064_jpg.rf.aa0e877d253adf91b8ff93df42e6fa4e.jpg,sakit,0,58.33906555175781,54.73838806152344,53.6712646484375,69.50164794921875,16.678207397460938,60.37001037597656,116.88568878173828,29.62981605529785,82.36532592773438,362.0359203156184,0.6955087365012144,0.9689850274096363,0.6206399421084291,5.121167716982712,0.38521587113903205,0.6324462890625,0.000701904296875,0.016815185546875,0.06158447265625,0.1234893798828125,0.1007080078125,0.031219482421875,0.0330352783203125,0.6324462890625,0.0,0.0166015625,0.1099853515625,0.1170501708984375,0.0726776123046875,0.0246429443359375,0.0265960693359375,0.6324462890625,0.00970458984375,0.025787353515625,0.09765625,0.099853515625,0.0820465087890625,0.0325775146484375,0.019927978515625,2.824131284769409,6.15902424437441,9.003616222600574,9.810415664922953,-9.999999999989448,-9.999846960559896,-9.999999999948557
|
||||||
|
cattle_mastitis_081_jpg.rf.8a3e17d1b2f237242ee6d0511ccde031.jpg,sakit,0,130.63291931152344,100.829833984375,75.84490966796875,20.45306396484375,83.14982604980469,131.83514404296875,19.793880462646484,52.506675720214844,76.60586547851562,158.26264403002446,0.499399766319263,0.9799637614531539,0.23684668940742049,3.5771859917557927,0.056113350954705966,0.2439727783203125,0.0,0.003692626953125,0.015167236328125,0.1764373779296875,0.3993988037109375,0.1613006591796875,3.0517578125e-05,0.2439727783203125,0.0,0.0241546630859375,0.3041839599609375,0.309967041015625,0.113677978515625,0.0040435791015625,0.0,0.24725341796875,0.0503997802734375,0.2657623291015625,0.3174896240234375,0.114898681640625,0.0041961669921875,0.0,0.0,3.180116338446048,8.144343497702893,9.956047979484728,9.999147393882625,9.999999999999998,-9.999999958394113,-10.0
|
||||||
|
cattle_mastitis_086_jpg.rf.be876086804506b1bd903ef5b6ec311c.jpg,sakit,0,55.438690185546875,45.73956298828125,35.47344970703125,16.85784912109375,40.759124755859375,57.68217468261719,38.84870910644531,56.188720703125,79.33658599853516,584.3846101609931,0.6594372845089002,0.9322314223100454,0.6024798989751717,8.01787067146145,0.36308742939300603,0.63189697265625,0.003204345703125,0.0113983154296875,0.12225341796875,0.0760955810546875,0.079437255859375,0.0681915283203125,0.0075225830078125,0.63189697265625,0.0,0.09735107421875,0.1114501953125,0.1004638671875,0.05169677734375,0.00177001953125,0.00537109375,0.6323089599609375,0.0928955078125,0.1159515380859375,0.0881500244140625,0.0451812744140625,0.0087890625,0.004974365234375,0.011749267578125,2.9034906425522173,7.304130308928188,9.385243416851514,9.460175739458078,9.999999999730706,9.999799437191948,-9.999999999874753
|
||||||
|
cattle_mastitis_090_jpg.rf.1ac736aed26df5bdd850f89dcc7febe8.jpg,sakit,0,69.96284484863281,59.40281677246094,48.622161865234375,12.365509033203125,30.810028076171875,70.15988159179688,19.069900512695312,42.04634475708008,87.82025909423828,472.4179707857411,0.7090989303418992,0.9602729695262435,0.5934928261079594,5.119673870784857,0.35226186246105695,0.60693359375,0.0,0.0,0.001861572265625,0.0559844970703125,0.2516326904296875,0.0821990966796875,0.0013885498046875,0.60693359375,0.0,0.0,0.0619354248046875,0.1979217529296875,0.1195220947265625,0.0133819580078125,0.00030517578125,0.60693359375,3.0517578125e-05,0.046600341796875,0.1734771728515625,0.15142822265625,0.0196533203125,0.0018768310546875,0.0,2.8468982048448983,6.8792743903148645,9.071649097909557,9.1720603576445,-9.999999998379202,9.999097331291415,-9.999999999841
|
||||||
|
cattle_mastitis_126_jpg.rf.4e811a1ba7ae081b375d15c4be8c3151.jpg,sakit,0,32.00492858886719,30.579696655273438,27.666641235351562,7.209197998046875,5.87109375,32.10694885253906,30.189308166503906,23.036865234375,79.31876373291016,720.8373766171056,0.9072067336155895,0.9376697199200454,0.8442781486399512,4.912919672069184,0.7128241551408371,0.8558197021484375,0.0,0.0,0.0,0.0012664794921875,0.0406036376953125,0.0217742919921875,0.080535888671875,0.8558197021484375,0.0,0.0,0.0,0.022064208984375,0.0345611572265625,0.019317626953125,0.0682373046875,0.8559722900390625,0.0019378662109375,0.0068359375,0.021514892578125,0.025604248046875,0.009033203125,0.012420654296875,0.066680908203125,2.304834292411467,4.71704337062354,8.296829808667475,8.610206435482723,9.9999999683987,9.967577092117576,-9.999999985230113
|
||||||
|
cattle_mastitis_134_jpg.rf.9eb66712af734a8da22a2d4409df802c.jpg,sakit,0,105.69866943359375,85.42803955078125,85.00509643554688,96.40362548828125,31.655807495117188,105.6998291015625,151.93348693847656,30.43230628967285,93.4542236328125,460.5000155337595,0.5296483566314515,0.965097477027239,0.4098104788288092,6.802837696952531,0.16798398118968702,0.424163818359375,0.0,0.0,0.030548095703125,0.0917816162109375,0.1898956298828125,0.2301177978515625,0.0334930419921875,0.424163818359375,0.0,0.013458251953125,0.1306915283203125,0.23236083984375,0.166351318359375,0.029083251953125,0.0038909912109375,0.424163818359375,0.0,0.0290679931640625,0.118988037109375,0.2119140625,0.1848602294921875,0.029632568359375,0.001373291015625,3.0085088412427123,7.226163220256638,9.868470348335887,9.790951362288846,9.999999999997256,-9.999949641470186,9.999999999987747
|
||||||
|
cattle_mastitis_138_jpg.rf.759bd7ed674e312d4e62758e107318e4.jpg,sakit,0,68.73577880859375,50.33454895019531,37.25213623046875,9.383819580078125,44.344573974609375,68.73577880859375,12.859750747680664,60.56590270996094,90.63226318359375,598.0344820587635,0.7561907850999842,0.9425968113236346,0.6113200763256299,5.676971306665127,0.3737519583739734,0.6267547607421875,0.0,0.0,0.0,0.0849456787109375,0.1473236083984375,0.1013031005859375,0.0396728515625,0.6267547607421875,0.0,0.0,0.2052001953125,0.10260009765625,0.0478973388671875,0.014892578125,0.002655029296875,0.6282958984375,0.023284912109375,0.2106781005859375,0.061920166015625,0.04547119140625,0.0209197998046875,0.0093994140625,3.0517578125e-05,2.8188156619990083,6.333723624707062,9.231498301935353,9.639537577738597,-9.999999999863771,9.999871008574269,9.999999999963885
|
||||||
|
cattle_mastitis_142_jpg.rf.909e19456144997c54b3866e2bcd6efc.jpg,sakit,0,85.00906372070312,66.68385314941406,56.840240478515625,8.20037841796875,34.37483215332031,85.00906372070312,11.515244483947754,44.15863037109375,105.21171569824219,240.02741102345536,0.6674651456557901,0.9846368224787353,0.5929665673385088,4.111890023813434,0.35161806995316924,0.5992279052734375,0.0,0.0,0.00274658203125,0.0176239013671875,0.05072021484375,0.174285888671875,0.1553955078125,0.5992279052734375,0.0,0.0025177001953125,0.029449462890625,0.1166534423828125,0.1863861083984375,0.0644378662109375,0.0013275146484375,0.5992279052734375,0.001953125,0.0268707275390625,0.0886383056640625,0.1717376708984375,0.09576416015625,0.01580810546875,0.0,2.9468400305692453,7.335105675999196,8.858383273140754,9.736674531365303,-9.999999999891713,-9.99992244192208,-9.999999999951799
|
||||||
|
cattle_mastitis_145_jpg.rf.7424d30ae6409f2a6ee563ba135ab7da.jpg,sakit,0,131.63002014160156,89.6934814453125,59.052490234375,13.671142578125,77.52641296386719,131.63002014160156,14.955950736999512,85.51932525634766,119.84668731689453,517.2543578615944,0.5985113181227862,0.9695027587324491,0.43161359870844246,5.9598255768528885,0.18632360694170572,0.445831298828125,0.0,0.0,0.0,0.01165771484375,0.0585479736328125,0.0338897705078125,0.4500732421875,0.445831298828125,0.0,0.022674560546875,0.1002349853515625,0.1487274169921875,0.1152801513671875,0.144287109375,0.0229644775390625,0.5433502197265625,0.0679168701171875,0.094451904296875,0.09033203125,0.043487548828125,0.094024658203125,0.059051513671875,0.00738525390625,3.0644749479766915,6.9723576292936364,9.691442628966676,9.893139269049845,9.999999999998291,9.99998699264365,-9.999999999993719
|
||||||
|
cattle_mastitis_174_jpg.rf.ded9649f566c03b0c381dba8152af103.jpg,sakit,0,114.96371459960938,86.72636413574219,71.58793640136719,13.050201416015625,60.4931640625,114.96371459960938,16.450050354003906,50.49021530151367,93.11152648925781,517.6822932549318,0.472113565614327,0.9555196278621532,0.3605478596268847,7.941300630323572,0.1300544809530782,0.380279541015625,0.0,0.0,0.01885986328125,0.108489990234375,0.2215423583984375,0.1995697021484375,0.071258544921875,0.380279541015625,0.0,0.0181121826171875,0.200897216796875,0.2364501953125,0.155609130859375,0.0086517333984375,0.0,0.380279541015625,0.012786865234375,0.1552734375,0.2375946044921875,0.172271728515625,0.040252685546875,0.0015411376953125,0.0,2.99468397797921,7.3957350366504855,9.822644367862484,9.946312018742262,-9.999999999999504,-9.999990084101047,-9.999999999998613
|
||||||
|
cattle_mastitis_177_jpg.rf.160f9c2d1726779015327e496951ccd9.jpg,sakit,0,104.13563537597656,91.02261352539062,76.15141296386719,17.1683349609375,35.92308044433594,104.20733642578125,29.85360336303711,39.72027587890625,107.6546859741211,636.1114489953392,0.5900815031916299,0.965980987093291,0.4853622757419542,7.743332934832712,0.23561130887517479,0.500732421875,0.0,0.0,0.001495361328125,0.0625762939453125,0.12109375,0.089599609375,0.2245025634765625,0.500732421875,0.0,0.0,0.028778076171875,0.11993408203125,0.1078338623046875,0.207550048828125,0.0351715087890625,0.500732421875,0.00018310546875,0.0553436279296875,0.1233978271484375,0.0836944580078125,0.101776123046875,0.1324615478515625,0.002410888671875,3.104357414419705,7.404892000900941,9.490113434877742,9.958626688665982,9.99999999999844,9.999997592261924,-9.999999999998668
|
||||||
|
cattle_mastitis_184_jpg.rf.e99f0381e2958dd2a9cc9461d0fc575b.jpg,sakit,0,117.45819091796875,89.11598205566406,80.73640441894531,7.239166259765625,41.66302490234375,117.45819091796875,14.784431457519531,44.12553787231445,116.37733459472656,306.8120778921418,0.6121122570330848,0.9835454568978553,0.47698024692611063,4.5775459836971955,0.22753793384109663,0.4870147705078125,0.0,0.0,0.0,0.014801025390625,0.0629425048828125,0.0940399169921875,0.3412017822265625,0.4870147705078125,0.0,0.0004425048828125,0.0509185791015625,0.1041717529296875,0.185760498046875,0.166351318359375,0.005340576171875,0.4870147705078125,0.0032958984375,0.0265045166015625,0.078216552734375,0.119537353515625,0.20452880859375,0.0803375244140625,0.0005645751953125,3.0666705322751087,6.909449917439637,9.444476283107791,9.9351893658198,-9.999999999999622,-9.999977583977886,-9.9999999999955
|
||||||
|
cattle_mastitis_191_jpg.rf.dc2d8f54f47de8602c014a77fd97f8d9.jpg,sakit,0,74.44561767578125,66.99903869628906,65.69752502441406,51.407684326171875,18.254180908203125,75.06796264648438,106.87545776367188,21.972244262695312,80.68800354003906,1724.222701657082,0.5099362543038811,0.8455575428714398,0.4608004031606027,17.893508060779688,0.21254794762814178,0.5169677734375,0.0,0.0,0.0889892578125,0.2400970458984375,0.087860107421875,0.04339599609375,0.0226898193359375,0.5169677734375,0.0,0.0010223388671875,0.2281494140625,0.15679931640625,0.051971435546875,0.0313262939453125,0.013763427734375,0.5169677734375,0.0,0.0110931396484375,0.2470550537109375,0.12939453125,0.0463409423828125,0.029541015625,0.0196075439453125,2.8872406638447954,8.844519152153882,9.903030897273236,9.96664793544318,9.99999999999988,9.99999978061876,-9.999999999999526
|
||||||
|
cattle_mastitis_197_jpg.rf.a274b059e5903a477929535913cc2508.jpg,sakit,0,74.48103332519531,70.33445739746094,66.31578063964844,14.819610595703125,11.636856079101562,74.64303588867188,38.41765213012695,18.025821685791016,94.73115539550781,1051.0632723352226,0.6504210847714428,0.9360321275892406,0.5840204715237671,9.442523116705852,0.3411851319805807,0.6100311279296875,0.0,0.0,0.002960205078125,0.056884765625,0.117431640625,0.17938232421875,0.0333099365234375,0.6100311279296875,0.0,0.0,0.0008697509765625,0.097320556640625,0.136077880859375,0.1520233154296875,0.0036773681640625,0.6100311279296875,0.0,0.002471923828125,0.0444183349609375,0.09039306640625,0.1308441162109375,0.12091064453125,0.0009307861328125,3.063263309948779,7.264920245928412,9.817504131204277,9.973414742437798,9.999999999999513,9.99999555105622,-9.999999999999899
|
||||||
|
cattle_mastitis_201_jpg.rf.21501bef21662832c2c11b1c79756359.jpg,sakit,0,148.34912109375,123.37330627441406,91.14862060546875,25.33197021484375,68.51228332519531,148.37705993652344,22.743871688842773,55.08070755004883,102.89568328857422,1070.2375893917952,0.4098708231780257,0.9339133836047644,0.29076766973834167,11.727122116695012,0.08458999276894208,0.3115234375,0.0,0.0,0.0009002685546875,0.0393218994140625,0.120208740234375,0.1732940673828125,0.3547515869140625,0.3115234375,0.0,1.52587890625e-05,0.0533599853515625,0.1840972900390625,0.1947021484375,0.1609039306640625,0.09539794921875,0.3115234375,0.0042572021484375,0.118896484375,0.2288818359375,0.1871795654296875,0.094482421875,0.024871826171875,0.0299072265625,3.0512942601982393,7.496610913255106,9.838644928967405,9.942804724870454,-9.9999999999991,-9.999990142882957,9.999999999998753
|
||||||
|
cattle_mastitis_223_jpg.rf.85a4a2e7622eabeea57c0bfbe72876e0.jpg,sakit,0,156.15084838867188,140.5472869873047,121.7916259765625,26.16900634765625,46.26869201660156,156.15109252929688,16.14059066772461,30.02067756652832,77.1695327758789,1361.3457337079178,0.30905955484253095,0.8667205683167372,0.15848629521625138,14.044961862272563,0.0252323952242742,0.1861572265625,0.0,0.0,0.0,0.0502166748046875,0.3603515625,0.3480224609375,0.0552520751953125,0.1861572265625,0.0,0.0,0.0070953369140625,0.2496795654296875,0.35540771484375,0.1947784423828125,0.0068817138671875,0.1861572265625,7.62939453125e-05,0.0164642333984375,0.16546630859375,0.305084228515625,0.3038787841796875,0.022857666015625,1.52587890625e-05,3.1121311078402405,7.864960942998086,9.958763808572108,9.988594883613853,-9.999999999999941,9.999999619881905,9.999999999999996
|
||||||
|
cattle_mastitis_225_jpg.rf.6a1afaad5a0a5744d74dfa599ba472cd.jpg,sakit,0,70.89015197753906,61.51460266113281,45.71275329589844,18.1668701171875,44.50297546386719,70.89352416992188,21.661165237426758,53.200355529785156,78.87892150878906,528.9559163087837,0.5642118368026042,0.946606298426548,0.5026484681162617,8.605289255102022,0.2527358137411441,0.52630615234375,0.0,0.0141754150390625,0.1305389404296875,0.1726226806640625,0.089508056640625,0.042877197265625,0.0239715576171875,0.52630615234375,0.0,0.07037353515625,0.20098876953125,0.114898681640625,0.0522918701171875,0.0190277099609375,0.01611328125,0.52630615234375,0.0882720947265625,0.2045135498046875,0.0945587158203125,0.0475006103515625,0.018768310546875,0.0095977783203125,0.0104827880859375,2.9981806741854076,9.651200898213602,9.296424434053675,9.92339324497323,-9.999999999996653,9.999999540435446,-9.99999999999339
|
||||||
|
cattle_mastitis_228_jpg.rf.5123663f9d0729c3d3f3f684bbdc4283.jpg,sakit,0,101.87564086914062,100.86955261230469,100.54310607910156,57.27154541015625,5.6901092529296875,103.18147277832031,95.12989044189453,10.844514846801758,102.5674819946289,1144.8439764457733,0.5695108650478589,0.9435965890533019,0.4570317522639877,10.797215703863829,0.20894551777464013,0.4779815673828125,0.0,0.0,0.011077880859375,0.10992431640625,0.110870361328125,0.1378936767578125,0.152252197265625,0.4779815673828125,0.0,0.0,0.0222015380859375,0.117218017578125,0.1035003662109375,0.12518310546875,0.1539154052734375,0.4779815673828125,0.0,0.000244140625,0.040771484375,0.099151611328125,0.0994720458984375,0.125732421875,0.156646728515625,2.9126644159776993,6.969320095018392,9.482069197997072,9.66432861372414,9.99999999993461,9.999887822617195,9.999999999949116
|
||||||
|
cattle_mastitis_235_jpg.rf.947522513bc13bbfbcced8c8c755b95c.jpg,sakit,0,120.56381225585938,117.15826416015625,114.24809265136719,48.4112548828125,11.4117431640625,121.66697692871094,84.78009796142578,13.404528617858887,102.91007232666016,2957.4743707249695,0.4548234217947627,0.8525308923150678,0.3599555419361052,20.936047266334576,0.12975996369226828,0.4090576171875,0.0,0.0,0.0,0.0075225830078125,0.19677734375,0.2342071533203125,0.152435302734375,0.4090576171875,0.0,0.0,0.0,0.0400238037109375,0.2182769775390625,0.20281982421875,0.12982177734375,0.4090576171875,0.0,0.0,0.0,0.0810546875,0.2242431640625,0.1612701416015625,0.1243743896484375,2.9151220803878832,9.034701286841125,9.871623004337172,9.956362352017935,-9.999999999999288,-9.999999734160614,9.999999999999492
|
||||||
|
cattle_mastitis_237_jpg.rf.79738044c3202a86c65d61771dee4406.jpg,sakit,0,83.72048950195312,77.8653564453125,65.22618103027344,26.2740478515625,35.086456298828125,84.16160583496094,29.382627487182617,33.884151458740234,71.45162963867188,495.0282113149912,0.5327295984598287,0.9443629090871112,0.3807076665751323,7.232264993043192,0.14499226854115418,0.400482177734375,0.0,0.01422119140625,0.1755828857421875,0.2952117919921875,0.09503173828125,0.0194091796875,6.103515625e-05,0.400482177734375,0.0,0.045379638671875,0.2469329833984375,0.2344207763671875,0.0631256103515625,0.0096588134765625,0.0,0.400482177734375,0.002532958984375,0.2049102783203125,0.2708282470703125,0.0828399658203125,0.03314208984375,0.0052642822265625,0.0,2.9517573138715916,7.524312488684073,9.982923634547808,9.948505251347909,-9.999999999999673,-9.999990615612036,-9.999999999999789
|
||||||
|
cattle_mastitis_244_jpg.rf.eb61abe2471d1979ae8295cf15dbb128.jpg,sakit,0,115.94180297851562,104.06547546386719,103.83100891113281,89.81414794921875,19.24365234375,115.96630859375,141.79347229003906,24.153987884521484,101.94442749023438,1901.8292932969177,0.4599441367553929,0.8951860328898745,0.38948950147366396,16.612484789507857,0.1518973967864036,0.428497314453125,0.0,0.0,0.0,0.0188751220703125,0.162994384765625,0.2703704833984375,0.1192626953125,0.428497314453125,0.0,0.0,0.009002685546875,0.13818359375,0.1973419189453125,0.1798095703125,0.0471649169921875,0.428497314453125,0.0,0.000213623046875,0.028289794921875,0.1243896484375,0.1758880615234375,0.193145751953125,0.0495758056640625,2.974801270153069,7.754196059203777,9.997490953611484,9.869033177869676,9.999999999999316,9.999980231868907,9.999999999999908
|
||||||
|
cattle_mastitis_250_jpg.rf.061ce2a65d94909e283c8bdfbb4f13fc.jpg,sakit,0,74.55262756347656,67.09086608886719,65.79905700683594,49.642669677734375,18.210037231445312,75.16300964355469,104.8134765625,21.953445434570312,80.6586685180664,1715.1690014187936,0.5094330529224173,0.8463159935337011,0.46024401408792753,17.843756931266118,0.21203471596154255,0.5161285400390625,0.0,0.0,0.0894012451171875,0.2408905029296875,0.0872955322265625,0.043701171875,0.0225830078125,0.5161285400390625,0.0,0.001312255859375,0.228912353515625,0.1562652587890625,0.05230712890625,0.031402587890625,0.013671875,0.5161285400390625,0.0,0.0109100341796875,0.247283935546875,0.130279541015625,0.0467071533203125,0.0294647216796875,0.01922607421875,2.88803560398143,8.842659001273006,9.904946395371251,9.966911832201578,9.999999999999881,9.999999760916603,9.999999999999536
|
||||||
|
cf 2-3d-3WM-1.jpg,sakit,0,84.11827087402344,81.82058715820312,80.74136352539062,88.22518920898438,10.730606079101562,85.89152526855469,128.50538635253906,18.203630447387695,96.97551727294922,2031.593167236798,0.5788731257789138,0.883369247075891,0.5112091076489756,15.809337790198756,0.26140459115825637,0.55206298828125,0.0,0.000244140625,0.001861572265625,0.0856475830078125,0.1442108154296875,0.1785125732421875,0.0374603271484375,0.55206298828125,0.0,0.0,0.0014190673828125,0.1137542724609375,0.135406494140625,0.1759033203125,0.021453857421875,0.55206298828125,0.0,0.0044403076171875,0.0304718017578125,0.0905914306640625,0.12664794921875,0.1641387939453125,0.031646728515625,2.808391060140266,6.894422323008793,9.542210506264453,9.596178470528631,9.999999999887361,9.999765815898682,-9.999999999993516
|
||||||
|
cf 3-4d-1WM-1.jpg,sakit,0,56.930694580078125,55.339385986328125,52.14448547363281,29.516845703125,14.8419189453125,59.69410705566406,67.40531158447266,33.284603118896484,85.39812469482422,2172.954043561246,0.6414707455190122,0.8293295053885759,0.6073009232041956,18.62967473972556,0.3688770775867171,0.66058349609375,0.0,0.0080413818359375,0.0369720458984375,0.1027679443359375,0.1013641357421875,0.0596160888671875,0.0306549072265625,0.66058349609375,0.0,0.0009002685546875,0.058502197265625,0.1063995361328125,0.108154296875,0.0391387939453125,0.0263214111328125,0.6613006591796875,0.0041351318359375,0.02789306640625,0.0673675537109375,0.08660888671875,0.086212158203125,0.039215087890625,0.0272674560546875,2.6540541097106467,6.333426611931586,8.971608036183719,9.175352428332166,9.999999998550287,9.998477620198543,-9.999999998886887
|
||||||
|
cf2-3d-1 WM.jpg,sakit,0,63.98899841308594,63.11067199707031,60.83732604980469,42.418914794921875,11.370254516601562,66.56253051757812,80.5380859375,23.240032196044922,95.75740051269531,1546.7710944067512,0.690225974407057,0.9065344166143147,0.6317539252665892,12.481234318425898,0.3991503962893023,0.661773681640625,0.0,0.0002288818359375,0.01220703125,0.0751800537109375,0.073638916015625,0.1039276123046875,0.0730438232421875,0.661773681640625,0.0,0.0,0.0228729248046875,0.0878448486328125,0.0619354248046875,0.0802001953125,0.0853729248046875,0.661773681640625,0.0022125244140625,0.0080413818359375,0.0574188232421875,0.0630035400390625,0.050323486328125,0.0695953369140625,0.0876312255859375,2.6557484601876897,6.2239420880750504,8.344925704787833,8.97835444503134,-9.999999993876703,-9.99839446355523,-9.99999999415021
|
||||||
|
chaps-4.1scabbed-400x284.png,sakit,0,94.34510803222656,84.06123352050781,70.73643493652344,17.746551513671875,27.479721069335938,94.55767822265625,23.95012664794922,41.47531509399414,112.36644744873047,1467.1176555045795,0.6321679098310177,0.9312549362658681,0.5537698984529421,12.046316644553952,0.30674725899157135,0.5834503173828125,0.0,0.0,0.0,9.1552734375e-05,0.018310546875,0.0985260009765625,0.29962158203125,0.5834503173828125,0.0,0.0,0.0170745849609375,0.0617523193359375,0.0589447021484375,0.1075439453125,0.171234130859375,0.5834503173828125,0.0,0.0140838623046875,0.0821075439453125,0.07720947265625,0.07574462890625,0.1284332275390625,0.038970947265625,3.0097175143240693,6.864139016079413,9.663688159592411,9.941438483770185,9.999999999997467,9.99997746277268,-9.999999999999536
|
||||||
|
cm 14-1sWM-1.jpg,sakit,0,86.28633117675781,83.41810607910156,81.30006408691406,46.279205322265625,16.843276977539062,89.76699829101562,82.45642852783203,25.32312774658203,95.9339599609375,1178.9788885936011,0.5935639123110649,0.9284121608399635,0.49376249202531675,11.085623262249195,0.2438768114182108,0.523529052734375,0.0,0.000335693359375,0.040985107421875,0.08642578125,0.13287353515625,0.188018798828125,0.02783203125,0.523529052734375,0.0,0.00213623046875,0.0376129150390625,0.12884521484375,0.1231689453125,0.178497314453125,0.0062103271484375,0.523529052734375,0.000396728515625,0.0037384033203125,0.05224609375,0.114593505859375,0.1475677490234375,0.15191650390625,0.006011962890625,3.001067641382491,6.991805399338414,9.498357393350032,9.924852971979465,-9.999999999995783,-9.99997630815298,9.99999999999686
|
||||||
|
ct 3-4-1WM-1.jpg,sakit,0,73.22140502929688,69.2991943359375,66.90876770019531,37.866943359375,10.604049682617188,73.90669250488281,86.12330627441406,22.54261016845703,93.04492950439453,1253.1504854346897,0.6630746857127412,0.9205101120142255,0.5784960577839907,10.259732530282497,0.3346881193362435,0.6067962646484375,0.0,0.0,0.00384521484375,0.062835693359375,0.1293792724609375,0.19525146484375,0.00189208984375,0.6067962646484375,0.0,0.0,0.016693115234375,0.105865478515625,0.119354248046875,0.15081787109375,0.0004730224609375,0.6067962646484375,0.0012359619140625,0.0045013427734375,0.05438232421875,0.0788116455078125,0.114288330078125,0.137664794921875,0.0023193359375,2.7694937201882426,6.168976423010015,9.221663949165604,9.87829432943742,9.9999999999843,9.999973901941202,9.999999999991468
|
||||||
|
dry-skin-crack7-400x284.jpg,sakit,0,96.18551635742188,60.57817077636719,53.234832763671875,5.875274658203125,64.39631652832031,96.18551635742188,9.270801544189453,60.77290725708008,87.7042236328125,522.6544165284922,0.5022698852740538,0.9390497398051488,0.4159264318466451,8.706736680266902,0.17309115813471357,0.4435882568359375,0.0,0.0,0.0253143310546875,0.128082275390625,0.25872802734375,0.1427001953125,0.0015869140625,0.4435882568359375,0.0046539306640625,0.181732177734375,0.2437896728515625,0.100860595703125,0.0242462158203125,0.001129150390625,0.0,0.4435882568359375,0.058837890625,0.252960205078125,0.1653289794921875,0.0641632080078125,0.0146636962890625,0.000457763671875,0.0,3.082336887418978,6.89049696990778,9.920585873535801,9.991089358042727,9.999999999999954,9.999997698627514,-9.999999999999966
|
||||||
|
dry-skin-crack9-400x284.jpg,sakit,0,53.29566955566406,41.95201110839844,41.97135925292969,57.40325927734375,20.660537719726562,53.32585144042969,125.97508239746094,34.32417297363281,74.19129180908203,1407.4877649546452,0.6281303052780328,0.8254297038328424,0.5921822333981963,15.477245658767648,0.3508658494238252,0.6436309814453125,0.0,0.0018310546875,0.099761962890625,0.1287689208984375,0.0848541259765625,0.0338592529296875,0.007293701171875,0.6436309814453125,0.00030517578125,0.0937652587890625,0.1568145751953125,0.06402587890625,0.0311431884765625,0.0093536376953125,0.0009613037109375,0.6436309814453125,0.002532958984375,0.1017608642578125,0.1430206298828125,0.0618133544921875,0.032073974609375,0.012359619140625,0.0028076171875,2.7287510525118646,6.418499378652612,9.490643755528367,9.361339373864263,9.99999999960205,9.999556228337415,9.999999999990607
|
||||||
|
dry-skin8-400x284.jpg,sakit,0,114.05419921875,88.28091430664062,86.04202270507812,68.80038452148438,32.33964538574219,114.05419921875,134.3292694091797,36.191200256347656,119.32710266113281,419.1376902125165,0.6268534438623702,0.9792201866181459,0.5115124656009251,4.292301895960709,0.2616620858619723,0.5210418701171875,0.0,0.0,0.0,0.0,0.0001983642578125,0.077239990234375,0.401519775390625,0.5210418701171875,0.0,0.0,0.0,0.04254150390625,0.261322021484375,0.175048828125,4.57763671875e-05,0.5210418701171875,0.0,0.0,0.0186767578125,0.0773468017578125,0.208465576171875,0.1694488525390625,0.0050201416015625,3.1678769288313475,7.572330041167739,9.872689695934689,9.998682528880913,9.999999999999998,-9.999999901178626,-9.999999999999996
|
||||||
|
eufmd-lesions_48583485077_o.jpg,sakit,0,72.49223327636719,66.63601684570312,60.464263916015625,31.6534423828125,22.816452026367188,74.15005493164062,66.15019989013672,33.78433609008789,90.90473175048828,1933.4938520649732,0.573872182383591,0.8629640408306408,0.5348016280506226,18.25268991404081,0.2861685930545054,0.5817718505859375,0.0,0.000152587890625,0.035491943359375,0.1430206298828125,0.1143798828125,0.067230224609375,0.057952880859375,0.5817718505859375,0.0,0.0001068115234375,0.1222076416015625,0.1285552978515625,0.0625457763671875,0.05462646484375,0.0501861572265625,0.5817718505859375,0.002532958984375,0.0379791259765625,0.1596527099609375,0.0865631103515625,0.052520751953125,0.0367584228515625,0.0422210693359375,2.764053896181034,8.292147743438258,9.837438582391348,9.368029549947908,-9.999999999875874,-9.999908460922068,9.99999999987772
|
||||||
|
eufmd-lesions_48598118761_o.jpg,sakit,0,86.87199401855469,81.55976867675781,73.70756530761719,22.253021240234375,19.59124755859375,87.09848022460938,43.5749397277832,26.07585906982422,91.58260345458984,1997.3369517849214,0.5433181778554984,0.8678052199884542,0.46619947688410357,16.589859694331235,0.2174708499015312,0.512786865234375,0.0,0.0,0.0025787353515625,0.1542510986328125,0.1524658203125,0.1503143310546875,0.0276031494140625,0.512786865234375,0.0,0.0,0.0433197021484375,0.1844024658203125,0.1263580322265625,0.1164093017578125,0.0167236328125,0.512786865234375,0.0005950927734375,0.0079498291015625,0.1197357177734375,0.1693267822265625,0.1265869140625,0.0583953857421875,0.0046234130859375,2.9045041828661216,8.133404388115856,9.597090883141787,9.94864808831916,9.999999999999421,-9.999996654785877,9.999999999997684
|
||||||
|
exfol3-400x284.jpg,sakit,0,96.539794921875,84.34072875976562,71.27033996582031,15.401947021484375,34.69354248046875,96.70747375488281,16.378734588623047,37.48291778564453,96.06346130371094,474.86096922046363,0.7239890186695517,0.9680747394979465,0.4826526530446464,4.656863593557282,0.2329827965515906,0.49322509765625,0.0,0.0004119873046875,0.002655029296875,0.0287017822265625,0.154998779296875,0.32000732421875,0.0,0.49322509765625,0.0,0.0,0.01654052734375,0.1289520263671875,0.35205078125,0.0092315673828125,0.0,0.49322509765625,0.003265380859375,0.031890869140625,0.0895233154296875,0.293975830078125,0.0881195068359375,0.0,0.0,2.89692899396293,7.048820909438014,9.719530782669649,9.472314470026607,9.999999999849008,9.999735607707237,-9.999999999999563
|
||||||
|
foot-and-mougth-10-_png_jpg.rf.7413233c05b6fa1a2ac03ecaf9b19a4d.jpg,sakit,0,61.84356689453125,60.08277893066406,56.96684265136719,22.812957763671875,6.980682373046875,62.063323974609375,54.08647918701172,14.618721961975098,94.12124633789062,464.1792770387342,0.7313992008742477,0.9724007107112019,0.6802153381647011,5.073071613441578,0.46270943478970133,0.6912384033203125,0.0,0.0,0.0012664794921875,0.0314483642578125,0.068115234375,0.136138916015625,0.0717926025390625,0.6912384033203125,0.0,0.0,0.004150390625,0.0403900146484375,0.090240478515625,0.109344482421875,0.06463623046875,0.6912384033203125,0.0,0.0010986328125,0.0185394287109375,0.051422119140625,0.1004486083984375,0.0957489013671875,0.04150390625,3.074458767524525,7.328421715745554,9.608439372454486,9.74165965315761,9.999999999964153,9.99998205113153,-9.999999999985963
|
||||||
|
foot_7.jpg,sakit,0,112.79682922363281,111.21937561035156,106.32644653320312,52.31597900390625,11.353012084960938,114.4561767578125,76.5777359008789,20.001543045043945,116.48558044433594,1147.9314362854518,0.6223880511171189,0.9553466602459676,0.4891788355423756,10.337708375461931,0.23931357288263963,0.5004730224609375,0.0,0.0,0.0,0.025360107421875,0.054718017578125,0.08929443359375,0.3301544189453125,0.5004730224609375,0.0,0.0,0.0,0.0378265380859375,0.05731201171875,0.111175537109375,0.293212890625,0.5004730224609375,0.0,0.0006103515625,0.0178985595703125,0.04840087890625,0.0755615234375,0.11224365234375,0.24481201171875,2.755112073210595,7.292551544952914,9.844116993805214,9.916970461294007,-9.999999999997243,9.999997016324675,9.999999999999892
|
||||||
|
foot_9.jpg,sakit,0,90.58650207519531,74.43183898925781,64.10173034667969,27.97808837890625,40.89552307128906,90.78036499023438,68.53421020507812,50.8287239074707,89.77967834472656,911.9463451868177,0.5195828843804872,0.9267717915409208,0.44883932050253134,11.638746890121952,0.2015515569025499,0.48236083984375,0.0,0.0001373291015625,0.0124053955078125,0.13726806640625,0.2375946044921875,0.101715087890625,0.0285186767578125,0.48236083984375,0.0,0.0250396728515625,0.15557861328125,0.20318603515625,0.0816802978515625,0.031097412109375,0.02105712890625,0.48236083984375,0.031402587890625,0.123138427734375,0.14471435546875,0.123504638671875,0.046783447265625,0.0274810791015625,0.0206146240234375,3.0523727705496144,7.7745582156782085,9.9118493698888,9.978907309494543,9.999999999999837,9.99999789517407,-9.99999999999984
|
||||||
|
footlesionWM-1.jpg,sakit,0,94.53665161132812,87.21095275878906,85.4697265625,61.279571533203125,14.250274658203125,95.25717163085938,115.92989349365234,22.69737434387207,98.58497619628906,3820.222693218984,0.4703505988002947,0.7770996152641332,0.4334107040911532,29.134814390203655,0.188085673999967,0.5060272216796875,0.0,0.0,0.0016937255859375,0.0717010498046875,0.1928863525390625,0.1472320556640625,0.0804595947265625,0.5060272216796875,0.0,0.000213623046875,0.0054779052734375,0.1667022705078125,0.1691741943359375,0.109649658203125,0.042755126953125,0.5060272216796875,0.0,0.002593994140625,0.02117919921875,0.1672515869140625,0.16180419921875,0.1024627685546875,0.0386810302734375,2.8925816037189898,7.435591263489098,9.391829281780861,9.852364169905709,9.99999999998413,9.999967466553834,9.999999999988566
|
||||||
|
frostbite5_preview-e1515281757816-400x284.jpeg,sakit,0,81.37936401367188,62.505157470703125,55.421356201171875,7.75457763671875,32.698486328125,81.37936401367188,18.32577896118164,41.963191986083984,102.24346923828125,351.7224196752674,0.7187847889400807,0.9753321309917928,0.5932434105358662,4.02171508392165,0.351947527510732,0.6010589599609375,0.0,0.0,3.0517578125e-05,0.04412841796875,0.10546875,0.115142822265625,0.1341705322265625,0.6010589599609375,0.0,0.003143310546875,0.0555877685546875,0.168304443359375,0.1257781982421875,0.0457916259765625,0.000335693359375,0.6010589599609375,3.0517578125e-05,0.028472900390625,0.1282958984375,0.1363372802734375,0.0828399658203125,0.0229034423828125,6.103515625e-05,2.871019363645858,6.634547727484543,8.784206934687456,9.45357350498905,-9.999999999334428,-9.999482895186771,-9.999999999850331
|
||||||
|
hyp13-e1515373816135-1024x738-1-400x284.jpg,sakit,0,107.14151000976562,93.8565673828125,96.22283935546875,73.78164672851562,56.42231750488281,121.032958984375,110.76087951660156,41.791751861572266,82.12283325195312,456.6266958049014,0.5862956876581772,0.94829355630475,0.2880094156662835,5.36473541651166,0.08299282996665908,0.3020782470703125,0.0,0.0046539306640625,0.2022552490234375,0.1820526123046875,0.198089599609375,0.110870361328125,0.0,0.3020782470703125,0.0,0.002685546875,0.3027801513671875,0.2595672607421875,0.132843017578125,4.57763671875e-05,0.0,0.3020782470703125,0.002899169921875,0.0528106689453125,0.2797088623046875,0.1753387451171875,0.079437255859375,0.10772705078125,0.0,3.038117130978127,7.160427234477102,9.672347439790833,9.960756152429644,-9.999999999998677,-9.999989218136143,-9.999999999999782
|
||||||
|
hyp24-e1515374393597-1024x788-1-400x284.jpg,sakit,0,121.19940185546875,83.46421813964844,40.98872375488281,19.331329345703125,102.20771789550781,121.19940185546875,17.002321243286133,89.1144027709961,97.10508728027344,742.2473841080077,0.7230542640012104,0.927367291490525,0.3597758346910378,7.75957036177052,0.12949582706900176,0.379302978515625,0.0,0.0,0.021270751953125,0.0696258544921875,0.07464599609375,0.4547576904296875,0.000396728515625,0.379302978515625,0.0,0.0067138671875,0.1956329345703125,0.410491943359375,0.007843017578125,1.52587890625e-05,0.0,0.4351348876953125,0.252777099609375,0.2241668701171875,0.0709228515625,0.0152435302734375,0.0017547607421875,0.0,0.0,3.0007535819886275,7.585074031611485,9.615208158381918,9.92323880929468,9.999999999995593,-9.99999828835937,9.999999999999892
|
||||||
|
hyp25-1024x683-1-400x284.jpg,sakit,0,53.33699035644531,40.72589111328125,33.50581359863281,5.10833740234375,25.116195678710938,53.33699035644531,9.769285202026367,46.665618896484375,90.70062255859375,200.23154657475956,0.8117403190466911,0.9821062260596244,0.7350198963537696,2.3570734865888316,0.5402628992116633,0.7410736083984375,0.0,0.0,0.0,0.0001220703125,0.0631256103515625,0.153778076171875,0.041900634765625,0.7410736083984375,0.0,0.0,0.0336761474609375,0.096221923828125,0.1114044189453125,0.0176239013671875,0.0,0.7468719482421875,0.012603759765625,0.025482177734375,0.0622100830078125,0.099273681640625,0.0526580810546875,0.0009002685546875,0.0,2.998896009335293,6.293936507902797,9.963818236331822,9.999613020552106,10.0,-9.999999848836453,10.0
|
||||||
|
kaki_13.jpg,sakit,0,63.98899841308594,63.11067199707031,60.83732604980469,42.418914794921875,11.370254516601562,66.56253051757812,80.5380859375,23.240032196044922,95.75740051269531,1546.7710944067512,0.690225974407057,0.9065344166143147,0.6317539252665892,12.481234318425898,0.3991503962893023,0.661773681640625,0.0,0.0002288818359375,0.01220703125,0.0751800537109375,0.073638916015625,0.1039276123046875,0.0730438232421875,0.661773681640625,0.0,0.0,0.0228729248046875,0.0878448486328125,0.0619354248046875,0.0802001953125,0.0853729248046875,0.661773681640625,0.0022125244140625,0.0080413818359375,0.0574188232421875,0.0630035400390625,0.050323486328125,0.0695953369140625,0.0876312255859375,2.6557484601876897,6.2239420880750504,8.344925704787833,8.97835444503134,-9.999999993876703,-9.99839446355523,-9.99999999415021
|
||||||
|
kaki_17.jpeg,sakit,0,83.91987609863281,81.00379943847656,76.46409606933594,22.000701904296875,9.584442138671875,84.08511352539062,42.02220916748047,17.463918685913086,107.4371109008789,1185.4369187357381,0.6455767703083474,0.9457995839787485,0.588070714404955,10.399160059564101,0.34587377711288664,0.61346435546875,0.0,0.0,4.57763671875e-05,0.021881103515625,0.0568084716796875,0.0991058349609375,0.2086944580078125,0.61346435546875,0.0,0.0,1.52587890625e-05,0.0486297607421875,0.0550689697265625,0.1167144775390625,0.166107177734375,0.61346435546875,0.0,0.00030517578125,0.018218994140625,0.05718994140625,0.0684967041015625,0.1264495849609375,0.115875244140625,3.043502138932483,6.58118101374078,9.989188018571616,9.960857781874827,9.999999999999837,9.999979271128462,9.999999999999886
|
||||||
|
kaki_22.jpg,sakit,0,66.46165466308594,65.91923522949219,64.47172546386719,31.8046875,11.402481079101562,69.9730224609375,70.00753021240234,25.832073211669922,103.07469940185547,2600.9181019911734,0.699815506989519,0.8651370986779287,0.6342432548104885,18.393268671204048,0.4023322717998106,0.6768646240234375,0.0,0.0,0.0193023681640625,0.041229248046875,0.0533599853515625,0.07183837890625,0.1374053955078125,0.6768646240234375,0.0,1.52587890625e-05,0.0010528564453125,0.066192626953125,0.0585479736328125,0.067108154296875,0.130218505859375,0.6768646240234375,0.00030517578125,0.0050048828125,0.0259552001953125,0.038604736328125,0.0616302490234375,0.0618438720703125,0.129791259765625,2.7798198237115286,6.330177585534967,9.23779708682269,9.768552465740232,9.99999999997907,-9.999898455888806,9.999999999947953
|
||||||
|
kaki_4.jpg,sakit,0,62.38398742675781,55.65234375,50.0455322265625,11.6923828125,16.459503173828125,62.41169738769531,32.24400329589844,29.823137283325195,94.21844482421875,895.8570136545941,0.6801878644756235,0.9405056792998138,0.6603282300890955,10.631713786392481,0.43605599620259666,0.6842498779296875,0.0,0.0,0.011749267578125,0.050048828125,0.0661163330078125,0.0896148681640625,0.0982208251953125,0.6842498779296875,0.0,1.52587890625e-05,0.04345703125,0.0767822265625,0.0710296630859375,0.079833984375,0.0446319580078125,0.6842498779296875,3.0517578125e-05,0.019775390625,0.071685791015625,0.07275390625,0.0677490234375,0.060791015625,0.0229644775390625,3.093620129455736,7.508146033608919,9.81097526568068,9.815999965544128,9.999999999988843,9.999962876306869,-9.999999999994847
|
||||||
|
lidah_2.jpg,sakit,0,81.91140747070312,75.82699584960938,73.6666259765625,46.095977783203125,11.96954345703125,82.040771484375,102.46224975585938,17.352916717529297,97.33645629882812,364.1296316150784,0.7040266244499082,0.9786577287144688,0.5689253495154124,4.2168035109788695,0.3236882949859604,0.577911376953125,0.0,0.0,0.000732421875,0.0481109619140625,0.1303863525390625,0.199005126953125,0.043853759765625,0.577911376953125,0.0,0.0,0.0215301513671875,0.09320068359375,0.1448211669921875,0.1436309814453125,0.0189056396484375,0.577911376953125,0.0,0.0,0.022857666015625,0.1109771728515625,0.149810791015625,0.13739013671875,0.0010528564453125,2.956542449627905,6.733455799696331,8.932465831430697,9.669492989489681,-9.999999999841421,-9.999791993846866,9.999999999931157
|
||||||
|
lidah_6.jpeg,sakit,0,109.26763916015625,98.52877807617188,86.47669982910156,21.048736572265625,32.46681213378906,109.34907531738281,23.39103889465332,35.33296585083008,97.70113372802734,826.9175033222397,0.559771652381731,0.950341908927951,0.4115361162189501,8.364119654240449,0.16939882283373708,0.4298553466796875,0.0,0.0,0.0001220703125,0.0809173583984375,0.2527923583984375,0.143707275390625,0.0926055908203125,0.4298553466796875,0.0,0.0,0.0480804443359375,0.1788482666015625,0.2104949951171875,0.054901123046875,0.07781982421875,0.4298553466796875,0.0,0.0211944580078125,0.1716766357421875,0.213409423828125,0.060211181640625,0.03619384765625,0.0674591064453125,3.0294621139784588,6.881249721850737,9.374275755172786,9.90644661885053,-9.999999999994913,-9.999978867660463,9.999999999992347
|
||||||
|
mouth_and_tongue 2-4_daysWM.jpg,sakit,0,92.33523559570312,89.52360534667969,80.43592834472656,30.010528564453125,20.951065063476562,94.89790344238281,49.60451126098633,28.46453094482422,107.34298706054688,1955.318862609028,0.5990504672607854,0.9061472505216351,0.5203390744539613,15.0272928131894,0.2708303990013445,0.553466796875,0.0,0.0,0.005126953125,0.0514984130859375,0.0899200439453125,0.127044677734375,0.172943115234375,0.553466796875,0.0,0.0,9.1552734375e-05,0.07623291015625,0.126678466796875,0.0890960693359375,0.1544342041015625,0.553466796875,4.57763671875e-05,0.0018768310546875,0.039947509765625,0.1057281494140625,0.1176300048828125,0.1077880859375,0.073516845703125,2.849393796218897,6.919398725228605,9.0944735723629,9.664202527304424,9.99999999998372,9.999914248001117,9.99999999985565
|
||||||
|
ring2-400x284.jpg,sakit,0,80.05615234375,59.17796325683594,54.2655029296875,6.762451171875,29.394485473632812,80.05615234375,33.447715759277344,42.58749008178711,109.79705047607422,170.4097561153634,0.7402355180481687,0.9894230665056533,0.6416776143356202,2.6537398910016807,0.4117659699710296,0.6490325927734375,0.0,0.0,3.0517578125e-05,0.0039215087890625,0.0306243896484375,0.082733154296875,0.2336578369140625,0.6490325927734375,0.0,0.001068115234375,0.031280517578125,0.080352783203125,0.1689300537109375,0.0671844482421875,0.0021514892578125,0.6490325927734375,0.00201416015625,0.02362060546875,0.043212890625,0.0968170166015625,0.14947509765625,0.03460693359375,0.001220703125,3.05093050487974,6.443025165233046,9.80063199945005,9.960974919018636,9.999999999999046,9.99997549067642,9.999999999999952
|
||||||
|
rtc_lesion_19_52764158171_o.jpg,sakit,0,88.88632202148438,97.18629455566406,122.81472778320312,120.58120727539062,48.73341369628906,127.17800903320312,122.47371673583984,50.974727630615234,110.68517303466797,1907.6033708868035,0.4745209525972136,0.8676143127224848,0.3741860065442397,16.84344310701946,0.14015572439684862,0.417327880859375,0.0,0.0129547119140625,0.1242523193359375,0.248565673828125,0.1106719970703125,0.064666748046875,0.0215606689453125,0.417327880859375,0.0,0.0,0.03594970703125,0.1911163330078125,0.2747039794921875,0.0691070556640625,0.0117950439453125,0.417327880859375,3.0517578125e-05,0.0002593994140625,0.02630615234375,0.0733184814453125,0.0745391845703125,0.1087493896484375,0.299468994140625,3.0069874828700676,7.874411228411524,9.93508447613768,9.983797331391699,-9.999999999999927,-9.999999223749787,-9.999999999999893
|
||||||
|
rtc_lesion_59_52764407774_o.jpg,sakit,0,83.9609375,83.32600402832031,91.17729187011719,80.69937133789062,28.00341796875,99.49176025390625,114.28512573242188,37.262691497802734,111.05037689208984,2814.8604724056604,0.5642412962067813,0.8414171460855485,0.4937290180576967,20.15347079911542,0.24388654966266107,0.5451202392578125,0.0,0.0,0.011260986328125,0.0764923095703125,0.1855316162109375,0.1378021240234375,0.043792724609375,0.5451202392578125,0.0,0.0,0.003082275390625,0.1246490478515625,0.1482086181640625,0.133331298828125,0.0456085205078125,0.5451202392578125,0.0,0.0001678466796875,0.042633056640625,0.08099365234375,0.076568603515625,0.052978515625,0.2015380859375,2.868190991002617,6.599179072860274,9.519181934653545,9.805336805940087,9.999999999974806,9.999878686038304,9.999999999992493
|
||||||
|
rtc_lesion_60_52764157006_o.jpg,sakit,0,87.03392028808594,91.10905456542969,111.62895202636719,108.59402465820312,36.77012634277344,115.28140258789062,120.8957748413086,42.42067337036133,111.12773132324219,1924.1389781637254,0.5570158930558966,0.8775479485072654,0.42833149246379393,15.174217219015498,0.1835840577270981,0.4690399169921875,0.0,0.0,0.050445556640625,0.2077789306640625,0.1773223876953125,0.0799713134765625,0.01544189453125,0.4690399169921875,0.0,0.0,0.006072998046875,0.1996917724609375,0.2060394287109375,0.099456787109375,0.0196990966796875,0.4690399169921875,0.0,4.57763671875e-05,0.0137481689453125,0.08026123046875,0.085662841796875,0.0743255615234375,0.27691650390625,2.8986832072545625,7.0367517276387135,9.648147293473848,9.876306847136908,-9.999999999994667,-9.999959401434747,9.99999999999253
|
||||||
|
tongue_4-5_days_WM.jpg,sakit,0,36.17320251464844,32.78692626953125,28.75067138671875,10.993316650390625,13.470260620117188,36.62223815917969,36.806175231933594,28.960649490356445,67.71434020996094,803.0133616961483,0.7812182397877566,0.8952258003463803,0.7451446475020743,7.850262808895857,0.5552769013788729,0.769500732421875,0.0,0.0016937255859375,0.0206298828125,0.0992431640625,0.0990142822265625,0.00958251953125,0.000335693359375,0.769500732421875,0.0,0.010040283203125,0.0628509521484375,0.0800018310546875,0.0747528076171875,0.0027313232421875,0.0001220703125,0.769500732421875,0.00152587890625,0.048583984375,0.06939697265625,0.0791473388671875,0.030364990234375,0.00140380859375,7.62939453125e-05,2.491092231004477,5.606998488411465,8.958678617964875,7.951792527054492,9.99999992032991,9.930314828678494,-9.999999861211986
|
||||||
|
Healthy (32).jpg,sehat,1,102.74581909179688,98.04783630371094,86.83384704589844,24.701080322265625,22.3714599609375,102.84780883789062,29.63984489440918,25.419662475585938,94.57726287841797,1211.3224432267205,0.5032407497758282,0.9262523210159034,0.43003065570077137,11.656486666462909,0.18495992027206598,0.4540557861328125,0.0,0.0,0.001434326171875,0.0362091064453125,0.2620086669921875,0.2425994873046875,0.003692626953125,0.4540557861328125,0.0,0.0,0.0009613037109375,0.075164794921875,0.3307952880859375,0.136444091796875,0.0025787353515625,0.4540557861328125,0.0,0.0091705322265625,0.049163818359375,0.202545166015625,0.2427215576171875,0.0400543212890625,0.002288818359375,2.9379062937985543,6.673944608115953,9.32858890093688,9.829062861986978,-9.999999999981478,-9.999937264889125,-9.999999999979064
|
||||||
|
air_liur_10h.jpg,sehat,1,77.10533142089844,74.72332763671875,71.94549560546875,47.65802001953125,19.06939697265625,79.91204833984375,79.56720733642578,23.11040687561035,76.82785034179688,1426.9736511117178,0.49929883957970606,0.8634691775272688,0.42020797226129125,14.2473047000584,0.17664036890285262,0.4624481201171875,0.0,0.0004730224609375,0.132598876953125,0.291290283203125,0.0935516357421875,0.0192108154296875,0.00042724609375,0.4624481201171875,0.0,1.52587890625e-05,0.2398681640625,0.1714630126953125,0.0990447998046875,0.02392578125,0.00323486328125,0.4624481201171875,0.0,0.036895751953125,0.276885986328125,0.0941925048828125,0.0799560546875,0.0436859130859375,0.0059356689453125,2.9781135912775176,7.0534125570908675,9.66200871995728,9.856180653433302,-9.999999999992237,9.999952449480862,9.99999999999139
|
||||||
|
air_liur_14h.jpg,sehat,1,44.7440185546875,40.71295166015625,35.79034423828125,18.81976318359375,19.846221923828125,45.20280456542969,43.38990020751953,31.810176849365234,63.42508316040039,1184.6466963955334,0.649522313560226,0.8267340765048048,0.6019540705827467,12.847729785941853,0.3624349875847049,0.651519775390625,0.0,0.006988525390625,0.1775054931640625,0.144500732421875,0.010284423828125,0.0048675537109375,0.00433349609375,0.651519775390625,0.0,0.0619964599609375,0.21197509765625,0.0550537109375,0.0083160400390625,0.007049560546875,0.00408935546875,0.651519775390625,0.00189208984375,0.166290283203125,0.1337738037109375,0.0284423828125,0.0067138671875,0.0073394775390625,0.0040283203125,2.902958286570391,6.374679354477067,9.717472435285762,9.61089343550722,9.999999999987443,9.999595217137442,9.999999999928523
|
||||||
|
air_liur_17h.jpg,sehat,1,27.444198608398438,25.7401123046875,23.439208984375,12.346343994140625,9.3272705078125,27.843276977539062,37.8984375,21.364238739013672,56.919071197509766,1249.3209806871926,0.7736528416069158,0.7831580115652889,0.7524830333629996,11.699640444816495,0.5662744732778187,0.7952117919921875,0.0,0.001556396484375,0.1209259033203125,0.0380859375,0.02850341796875,0.013641357421875,0.0020751953125,0.7952117919921875,0.0,0.0384521484375,0.093963623046875,0.035400390625,0.019989013671875,0.013214111328125,0.0037689208984375,0.7952117919921875,7.62939453125e-05,0.097137451171875,0.0474090576171875,0.02978515625,0.0160980224609375,0.0107269287109375,0.0035552978515625,2.6315048045474128,6.36077446935245,9.474427120178861,9.671002032933938,-9.999999999954088,-9.999695097117964,-9.999999999934042
|
||||||
|
air_liur_20h.jpg,sehat,1,19.586380004882812,19.718856811523438,18.706771850585938,10.633636474609375,3.5140838623046875,20.498458862304688,39.884456634521484,12.166946411132812,58.572452545166016,1624.7200899466818,0.8598663133989347,0.7389051952797457,0.8534400873441211,11.788992846762289,0.7283747515436886,0.8847808837890625,0.0,0.00048828125,0.020965576171875,0.029327392578125,0.0299835205078125,0.0208282470703125,0.0136260986328125,0.8847808837890625,0.0,0.0,0.025146484375,0.0236663818359375,0.0300445556640625,0.019195556640625,0.0171661376953125,0.8847808837890625,7.62939453125e-05,0.0053558349609375,0.0271453857421875,0.0231781005859375,0.0290069580078125,0.0161590576171875,0.0142974853515625,2.34086792064059,5.131583855245897,7.616378874931558,8.266612986097183,-9.99999987920021,-9.942500572785114,-9.999999768647102
|
||||||
|
air_liur_25h.jpg,sehat,1,39.12434387207031,37.70018005371094,34.21272277832031,21.194000244140625,13.562881469726562,40.45692443847656,50.965782165527344,25.109832763671875,68.28276824951172,1703.7724951685843,0.6811086981454322,0.7918870915969056,0.6653698404233048,17.139878362630906,0.4427795330916599,0.721160888671875,0.0,0.0338897705078125,0.0990142822265625,0.0638427734375,0.0327911376953125,0.0431060791015625,0.006195068359375,0.721160888671875,0.0,0.038421630859375,0.1130218505859375,0.0543975830078125,0.034454345703125,0.035125732421875,0.00341796875,0.721160888671875,0.0051727294921875,0.070648193359375,0.102325439453125,0.0413970947265625,0.04229736328125,0.0150299072265625,0.0019683837890625,2.714475917802928,6.572899584055388,8.524053167898748,8.821981040426365,-9.999999988284353,-9.997235226848186,-9.99999999618368
|
||||||
|
air_liur_30h.jpg,sehat,1,72.95405578613281,74.63554382324219,66.16783142089844,33.95672607421875,13.459854125976562,75.52043151855469,56.46083068847656,24.982616424560547,102.07630920410156,1566.9232345016665,0.6718999864335825,0.9202000765625864,0.6176543051100919,13.128712801364726,0.38150758115266514,0.6341400146484375,0.0,0.0,0.00433349609375,0.0627899169921875,0.1018829345703125,0.0786285400390625,0.11822509765625,0.6341400146484375,0.0,0.0,0.001434326171875,0.05712890625,0.0952911376953125,0.0826568603515625,0.1293487548828125,0.6341552734375,0.000762939453125,0.007843017578125,0.034393310546875,0.1038665771484375,0.0787811279296875,0.044097900390625,0.096099853515625,2.8592211149371987,6.18253275852019,8.734852573156346,9.432033656423659,9.999999999674923,9.9998252048778,-9.999999999265581
|
||||||
|
air_liur_4h.jpg,sehat,1,103.43827819824219,104.80653381347656,101.98602294921875,63.78070068359375,13.003585815429688,108.73834228515625,89.29907989501953,21.592147827148438,107.23241424560547,4590.933693958824,0.46708320057244496,0.7833902193481327,0.4219868031822034,31.66057118347773,0.17813080576041518,0.4811553955078125,0.0,0.0,0.00390625,0.067596435546875,0.1222686767578125,0.20245361328125,0.12261962890625,0.4811553955078125,0.0,0.0,0.0007171630859375,0.072784423828125,0.1143951416015625,0.1792755126953125,0.15167236328125,0.4811553955078125,0.000946044921875,0.0031890869140625,0.0166473388671875,0.0871734619140625,0.1031036376953125,0.1568450927734375,0.15093994140625,2.8933043389635613,6.569440305991993,9.073070095186845,9.714646928324349,9.999999999991122,-9.999910384902277,9.999999999894204
|
||||||
|
air_liur_8h.jpg,sehat,1,52.06831359863281,55.03919982910156,52.44325256347656,29.14556884765625,6.1049041748046875,55.89085388183594,61.85625076293945,14.865436553955078,96.67744445800781,3575.7980497583144,0.7328295453206666,0.7945880135867068,0.6944026040500507,22.056399902354286,0.48223042981777864,0.7434539794921875,0.0,0.0,0.0016632080078125,0.0362701416015625,0.067901611328125,0.0648193359375,0.0858917236328125,0.7434539794921875,0.0,0.0,0.0,0.02691650390625,0.048187255859375,0.05963134765625,0.1218109130859375,0.7434539794921875,0.0,7.62939453125e-05,0.00396728515625,0.0341033935546875,0.0592041015625,0.0665283203125,0.0926666259765625,2.6199915748879397,6.052006421877394,8.566140410373189,8.724818674296994,9.999999983293522,9.995560186306566,-9.999999998903618
|
||||||
|
augmented_healthyf_104.jpg,sehat,1,46.319732666015625,38.936126708984375,32.113555908203125,15.935272216796875,32.879241943359375,46.488861083984375,36.00776672363281,44.51649475097656,59.25148391723633,1604.8400104546147,0.5416267300020662,0.7064090112093494,0.5084645414837662,19.501931877297686,0.25866783876408167,0.59332275390625,4.57763671875e-05,0.1082611083984375,0.2062530517578125,0.063385009765625,0.0163116455078125,0.0076751708984375,0.0047454833984375,0.59332275390625,1.52587890625e-05,0.2667694091796875,0.097625732421875,0.0227203369140625,0.0102691650390625,0.0041656494140625,0.0051116943359375,0.59332275390625,0.121063232421875,0.2187957763671875,0.041748046875,0.014251708984375,0.00469970703125,0.001739501953125,0.0043792724609375,2.8579957731580716,7.680551028431888,9.351110960132974,9.885391672210908,-9.999999999997819,-9.999995059523885,-9.99999999998678
|
||||||
|
augmented_healthyf_107.jpg,sehat,1,12.859619140625,13.073898315429688,12.6962890625,10.737945556640625,2.007720947265625,13.341049194335938,39.304893493652344,7.829376220703125,42.59794998168945,1281.9602910104581,0.8725662613517229,0.6248403800592718,0.8702735612685482,10.572659629548122,0.7574130511781528,0.9039459228515625,0.0,0.014068603515625,0.0326995849609375,0.0257110595703125,0.016754150390625,0.00616455078125,0.0006561279296875,0.9039459228515625,0.0,0.0144805908203125,0.0308837890625,0.0244598388671875,0.01751708984375,0.007415771484375,0.0012969970703125,0.9039459228515625,0.0001220703125,0.022735595703125,0.0263671875,0.0208587646484375,0.016021728515625,0.0077056884765625,0.0022430419921875,2.2621605572633863,4.652423100144835,7.551363955231776,7.881907429019208,9.999998946712914,9.815630122577128,-9.99999976060539
|
||||||
|
augmented_healthyf_116.jpg,sehat,1,62.7149658203125,61.21977233886719,57.979888916015625,46.254974365234375,17.913925170898438,65.33782958984375,80.83104705810547,24.832080841064453,75.10591125488281,1951.3220665059719,0.5441523721559386,0.8044292753067018,0.49096815749702477,18.514616848070798,0.24118644299410338,0.5509796142578125,0.0,0.0051727294921875,0.1386871337890625,0.2145538330078125,0.0799713134765625,0.00909423828125,0.0015411376953125,0.5509796142578125,0.0,0.01629638671875,0.1808013916015625,0.1678924560546875,0.060546875,0.0142364501953125,0.009246826171875,0.5509796142578125,0.0003509521484375,0.076416015625,0.1865081787109375,0.0922698974609375,0.0667724609375,0.01129150390625,0.015411376953125,2.9643889824424847,7.362128853642734,9.95183962994623,9.840075619155014,-9.99999999999756,-9.999959806572004,-9.999999999996318
|
||||||
|
augmented_healthyf_117.jpg,sehat,1,73.91928100585938,71.12763977050781,67.08547973632812,52.963836669921875,21.4237060546875,76.32028198242188,86.82984161376953,26.06526756286621,75.32270812988281,1946.6653487152498,0.4842881275801664,0.8059744850637572,0.41063888270618537,18.851007445424305,0.16877557830062337,0.4712371826171875,0.0,0.00567626953125,0.18243408203125,0.2147064208984375,0.1110687255859375,0.013427734375,0.0014495849609375,0.4712371826171875,0.0,0.0242462158203125,0.23101806640625,0.1724853515625,0.0753326416015625,0.015350341796875,0.0103302001953125,0.4712371826171875,0.000213623046875,0.1191864013671875,0.197418212890625,0.1002197265625,0.0835113525390625,0.0120697021484375,0.016143798828125,3.0151669415671405,8.308886653649417,9.875956902600112,9.884885617259167,9.999999999998861,-9.999995275429255,9.999999999995984
|
||||||
|
augmented_healthyf_118.jpg,sehat,1,52.524017333984375,55.67616271972656,52.66316223144531,32.654815673828125,7.7313995361328125,56.94403076171875,64.90644073486328,16.80042266845703,94.01463317871094,3627.1228649617046,0.6916280983302282,0.7758712347631412,0.6676984702057246,23.941411057216623,0.44587476770112217,0.723846435546875,0.0,0.0,0.0029144287109375,0.056396484375,0.08966064453125,0.0731201171875,0.0540618896484375,0.723846435546875,0.0,0.0,0.0,0.0517425537109375,0.0607147216796875,0.0694427490234375,0.0942535400390625,0.723846435546875,0.0,0.000152587890625,0.01373291015625,0.05230712890625,0.071197509765625,0.0774078369140625,0.0613555908203125,2.6116909137248263,6.012488944602439,8.517335273835075,8.79151576875186,9.99999998640973,9.997075165252564,-9.99999999708927
|
||||||
|
augmented_healthyf_12.jpg,sehat,1,49.82182312011719,44.4393310546875,37.87269592285156,16.9256591796875,25.26959228515625,50.25172424316406,33.80195999145508,35.643245697021484,66.78898620605469,1823.4177705697612,0.5879007793248417,0.7548109638540385,0.5428051908093536,18.846665205409735,0.2948717050073338,0.618408203125,0.0,0.0115814208984375,0.2263031005859375,0.0767669677734375,0.0392608642578125,0.0254974365234375,0.0021820068359375,0.618408203125,0.0,0.109649658203125,0.179443359375,0.043609619140625,0.033599853515625,0.0107574462890625,0.0045318603515625,0.618408203125,0.0064239501953125,0.2311859130859375,0.082244873046875,0.0378570556640625,0.0164642333984375,0.0029754638671875,0.0044403076171875,2.804390262599308,6.6591678468310285,9.362189914122549,9.952479734457027,9.999999999997438,9.999983546641191,-9.999999999998215
|
||||||
|
augmented_healthyf_122.jpg,sehat,1,49.485809326171875,47.82200622558594,43.39373779296875,21.46484375,14.37847900390625,50.645111083984375,41.830440521240234,26.51584815979004,75.81432342529297,2136.178525375934,0.6332252301258479,0.7970227870402979,0.5990384564692165,19.576216547826156,0.3589238047934211,0.6649322509765625,1.52587890625e-05,0.0053253173828125,0.12945556640625,0.115447998046875,0.0206298828125,0.031219482421875,0.0329742431640625,0.6649322509765625,0.0,0.01153564453125,0.1788330078125,0.0575408935546875,0.017120361328125,0.03253173828125,0.037506103515625,0.6649322509765625,0.001678466796875,0.092987060546875,0.1309051513671875,0.0300140380859375,0.0204925537109375,0.0289764404296875,0.0300140380859375,2.883413895149973,7.635173877096199,9.173836910651016,9.655166449982987,9.999999999869136,9.999944512379725,-9.99999999995493
|
||||||
|
augmented_healthyf_127.jpg,sehat,1,26.399887084960938,25.474411010742188,23.400314331054688,13.420623779296875,7.3181915283203125,26.91619873046875,40.52323913574219,18.09333038330078,57.86387252807617,1154.9501055643727,0.7942691996537644,0.8113857097816961,0.7751876364824537,10.439844367021843,0.600963098115493,0.810943603515625,0.0,0.0011749267578125,0.0958709716796875,0.038848876953125,0.033843994140625,0.01678466796875,0.002532958984375,0.810943603515625,0.0,0.01116943359375,0.0915679931640625,0.042205810546875,0.0228271484375,0.0166168212890625,0.004669189453125,0.810943603515625,6.103515625e-05,0.06439208984375,0.0525360107421875,0.03515625,0.019073486328125,0.013458251953125,0.0043792724609375,2.621931831707475,6.019644823084993,9.28140094742732,9.56757696393256,9.999999999978627,-9.999424282813333,9.999999999801986
|
||||||
|
augmented_healthyf_131.jpg,sehat,1,16.019134521484375,15.681640625,15.146759033203125,8.02874755859375,2.747650146484375,16.382614135742188,34.588531494140625,10.468900680541992,51.08892059326172,1106.6193676469827,0.8793040186329871,0.771683939517719,0.8725844763979289,8.880260176107644,0.7614192852018792,0.900177001953125,0.0,0.0002288818359375,0.0323028564453125,0.018402099609375,0.025390625,0.0147247314453125,0.0087738037109375,0.900177001953125,0.0,0.0002593994140625,0.035125732421875,0.016448974609375,0.02593994140625,0.01275634765625,0.0092926025390625,0.900177001953125,1.52587890625e-05,0.014862060546875,0.0231475830078125,0.0168914794921875,0.0242462158203125,0.0106658935546875,0.0099945068359375,2.306287874787186,5.090916158915552,8.599549868709598,7.8963983933365265,-9.999999871867765,9.989765972715817,9.999999726959059
|
||||||
|
augmented_healthyf_140.jpg,sehat,1,78.93231201171875,78.19828796386719,69.76496887207031,37.747894287109375,19.712997436523438,80.63459777832031,55.65841293334961,28.899044036865234,89.73372650146484,1715.9690340233956,0.5247265586281136,0.8853917046472329,0.5024642592821547,19.106610643075552,0.25249981683133743,0.529693603515625,0.0,0.00146484375,0.0765228271484375,0.134429931640625,0.12115478515625,0.096954345703125,0.0397796630859375,0.529693603515625,0.0,0.000701904296875,0.0900115966796875,0.1279144287109375,0.11236572265625,0.1016845703125,0.037628173828125,0.52978515625,0.007232666015625,0.06591796875,0.1031036376953125,0.1034393310546875,0.087738037109375,0.067291259765625,0.035491943359375,2.9210048633724224,6.57103068681765,9.357286616585279,9.777896208969008,-9.999999999962842,-9.999863760990662,-9.999999999977117
|
||||||
|
augmented_healthyf_145.jpg,sehat,1,38.35722351074219,34.46307373046875,28.527862548828125,21.208892822265625,30.799163818359375,39.273468017578125,40.540008544921875,44.64437484741211,49.6364631652832,597.4390162573187,0.5981772094744986,0.8515637577234957,0.5520659983702488,10.226152755273494,0.30488027826820596,0.5980377197265625,0.0176849365234375,0.2082061767578125,0.14813232421875,0.0254974365234375,0.002410888671875,3.0517578125e-05,0.0,0.5980377197265625,0.0678253173828125,0.20794677734375,0.106597900390625,0.015167236328125,0.004425048828125,0.0,0.0,0.602783203125,0.163818359375,0.16973876953125,0.05224609375,0.008941650390625,0.002471923828125,0.0,0.0,2.8393893930262832,7.266803396071269,9.325640596532324,9.785345142111941,9.999999999974197,9.999938196286246,-9.999999999965802
|
||||||
|
augmented_healthyf_154.jpg,sehat,1,49.94122314453125,45.0391845703125,39.41575622558594,20.90484619140625,23.519149780273438,50.41297912597656,45.06631851196289,33.649715423583984,62.857975006103516,1119.561698876728,0.6050625865488498,0.830927665122708,0.5471961011696175,12.944764938292309,0.2995247561793019,0.5985260009765625,0.0,0.01361083984375,0.219024658203125,0.155426025390625,0.009857177734375,0.0034332275390625,0.0001220703125,0.5985260009765625,0.0,0.0950775146484375,0.23931884765625,0.054534912109375,0.00634765625,0.005645751953125,0.00054931640625,0.5985260009765625,0.0084075927734375,0.2038116455078125,0.149078369140625,0.0288848876953125,0.00469970703125,0.005523681640625,0.001068115234375,2.978499352277364,6.704473454713401,9.721638996274653,9.834375943117283,-9.999999999998758,9.999912528225563,9.999999999987038
|
||||||
|
augmented_healthyf_156.jpg,sehat,1,19.434921264648438,19.1593017578125,18.002853393554688,10.753997802734375,3.666351318359375,19.9415283203125,39.521121978759766,11.915146827697754,54.54305648803711,1140.3393246912917,0.8575372048136073,0.7933111366396149,0.8485161678444465,9.140326977605856,0.7200025516178764,0.8772125244140625,0.0,0.0,0.024566650390625,0.0395050048828125,0.0402374267578125,0.0157928466796875,0.002685546875,0.8772125244140625,0.0,0.0,0.03289794921875,0.0395660400390625,0.0268402099609375,0.018798828125,0.0046844482421875,0.8772125244140625,0.0,0.0073699951171875,0.0394134521484375,0.0336151123046875,0.023834228515625,0.0132904052734375,0.0052642822265625,2.505238672488489,5.4814132117011605,9.222338586765074,8.416557098771001,9.999999977892395,9.974620153062988,9.999999999083437
|
||||||
|
augmented_healthyf_157.jpg,sehat,1,23.784164428710938,22.971923828125,21.210586547851562,11.99029541015625,6.19134521484375,24.252853393554688,39.03266143798828,16.333984375,55.99545669555664,1204.863016862237,0.812335891709364,0.7901296483616584,0.7959473342346436,10.571889607339832,0.6335852346685457,0.8328704833984375,0.0,0.000274658203125,0.07965087890625,0.0371246337890625,0.0321197509765625,0.015716552734375,0.0022430419921875,0.8328704833984375,0.0,0.00225830078125,0.084075927734375,0.0391693115234375,0.02178955078125,0.0157470703125,0.00408935546875,0.8328704833984375,1.52587890625e-05,0.0490264892578125,0.0506591796875,0.0325927734375,0.0182037353515625,0.01263427734375,0.003997802734375,2.5579574123750204,5.9082605635541725,8.81871303173916,8.945705867971208,9.999999995889038,9.998434727939546,-9.99999999645082
|
||||||
|
augmented_healthyf_158.jpg,sehat,1,45.88385009765625,46.499603271484375,46.47373962402344,25.38421630859375,2.7236480712890625,47.367523193359375,67.02739715576172,7.957189559936523,91.16179656982422,2469.998096261341,0.782363414539457,0.8448530779782212,0.7530380340223495,15.4327535297142,0.5670954863380581,0.782562255859375,0.0,0.0,0.000152587890625,0.0227203369140625,0.045928955078125,0.0559234619140625,0.09271240234375,0.782562255859375,0.0,0.0,0.0,0.0196685791015625,0.0404052734375,0.05938720703125,0.0979766845703125,0.782562255859375,0.0,0.0,9.1552734375e-05,0.022003173828125,0.0377044677734375,0.0599212646484375,0.09771728515625,2.7884601749944973,7.152194324706156,9.372324897374448,8.704027086000732,9.999999996733564,9.998795619831395,-9.999999994543831
|
||||||
|
augmented_healthyf_176.jpg,sehat,1,65.27363586425781,64.84417724609375,61.53962707519531,48.006378173828125,15.956832885742188,68.09254455566406,80.95079803466797,22.097808837890625,79.81450653076172,2028.5385045381452,0.5702534135692382,0.8238989966651639,0.5091946935651321,17.45843174216656,0.2594308906687229,0.5606842041015625,0.0,0.0007781982421875,0.0807037353515625,0.243896484375,0.08935546875,0.01123046875,0.0133514404296875,0.5606842041015625,0.0,0.0,0.1317901611328125,0.1984100341796875,0.07025146484375,0.016204833984375,0.0226593017578125,0.5606842041015625,0.0,0.0228118896484375,0.1912078857421875,0.107086181640625,0.0768585205078125,0.0123443603515625,0.0290069580078125,2.9417103986395605,7.22106388657388,9.324891646864245,9.84602585832639,-9.999999999998154,9.999979374541729,-9.999999999976783
|
||||||
|
augmented_healthyf_3.jpg,sehat,1,23.4205322265625,23.652786254882812,22.17138671875,11.492431640625,3.1107177734375,24.113449096679688,40.332828521728516,11.462677955627441,69.36820220947266,1131.9453377624827,0.8931232706261197,0.8744614037390906,0.8736244757912167,7.212712822230489,0.7632367589859098,0.8886871337890625,0.0,0.0,6.103515625e-05,0.01446533203125,0.026763916015625,0.015350341796875,0.0546722412109375,0.8886871337890625,0.0,0.0,0.0,0.0217132568359375,0.0169677734375,0.014404296875,0.0582275390625,0.8886871337890625,0.0,4.57763671875e-05,0.0118408203125,0.0198516845703125,0.014312744140625,0.0170745849609375,0.048187255859375,2.135884283862905,5.267918670618136,6.624027630800328,7.14752935327724,9.999960020390919,9.658302916240622,9.99999654995178
|
||||||
|
augmented_healthyf_30.jpg,sehat,1,75.59410095214844,74.05696105957031,72.23527526855469,50.365234375,16.730239868164062,78.728515625,82.59028625488281,20.405973434448242,78.14865112304688,1340.660308227621,0.52100463863603,0.876762331036579,0.4387154703643894,13.171206363685164,0.192556640953628,0.478546142578125,0.0,0.0002288818359375,0.124755859375,0.26885986328125,0.1059417724609375,0.0213623046875,0.00030517578125,0.478546142578125,0.0,0.0,0.214996337890625,0.16314697265625,0.1149749755859375,0.024810791015625,0.0035247802734375,0.478546142578125,0.0,0.0201873779296875,0.2520294189453125,0.1024627685546875,0.09185791015625,0.048614501953125,0.0063018798828125,3.0184722766966297,7.352353183896473,9.791431524906827,9.918763355662804,9.99999999999965,9.999996749839857,9.999999999996838
|
||||||
|
augmented_healthyf_40.jpg,sehat,1,101.87895202636719,85.68601989746094,54.97186279296875,31.171417236328125,78.36190795898438,103.6195068359375,42.63807678222656,73.95555114746094,84.23583984375,474.6116342774564,0.5187522586283569,0.954515877443101,0.348296080622966,7.191734901055696,0.12136320048800923,0.36822509765625,0.0,0.009674072265625,0.1161041259765625,0.1941375732421875,0.191192626953125,0.0652008056640625,0.0554656982421875,0.36822509765625,0.0,0.091583251953125,0.19775390625,0.200775146484375,0.085296630859375,0.034423828125,0.021942138671875,0.410736083984375,0.2244110107421875,0.1624908447265625,0.0829925537109375,0.0464935302734375,0.028900146484375,0.032623291015625,0.0113525390625,3.012311396860327,6.91582430786176,9.690895509424589,9.96566499598693,9.999999999998963,9.999992654958007,-9.999999999999885
|
||||||
|
augmented_healthyf_41.jpg,sehat,1,14.430953979492188,14.271148681640625,13.5625,7.22503662109375,2.7068023681640625,14.904083251953125,32.22319793701172,10.70585823059082,49.46791076660156,1032.4239971691495,0.8925294082641946,0.7669868949447912,0.8877759187760041,8.193273608981782,0.7881561934694025,0.9113616943359375,0.0,0.000274658203125,0.025543212890625,0.0181884765625,0.0213775634765625,0.015533447265625,0.007720947265625,0.9113616943359375,0.0,0.0,0.0281219482421875,0.0157623291015625,0.02227783203125,0.0137481689453125,0.00872802734375,0.9113616943359375,4.57763671875e-05,0.009490966796875,0.0225067138671875,0.01654052734375,0.021392822265625,0.0104827880859375,0.0081787109375,2.2855265247543777,5.492472678219613,7.417426033571474,7.551038871571273,-9.999998992539687,-9.830984845721973,-9.99999615209685
|
||||||
|
augmented_healthyf_55.jpg,sehat,1,40.72395324707031,36.97218322753906,30.729339599609375,20.188385009765625,28.642715454101562,41.548675537109375,37.314022064208984,40.99100875854492,52.398834228515625,734.7478003346446,0.5963548334834704,0.8384192069419801,0.5526755755024896,11.294032693854966,0.3055518716074177,0.6005096435546875,0.0065460205078125,0.164520263671875,0.1898956298828125,0.035675048828125,0.0028076171875,4.57763671875e-05,0.0,0.6005096435546875,0.016326904296875,0.2122955322265625,0.148895263671875,0.017486572265625,0.00445556640625,3.0517578125e-05,0.0,0.60052490234375,0.12249755859375,0.197967529296875,0.066864013671875,0.009674072265625,0.002471923828125,0.0,0.0,2.789308519737864,6.804090495712479,9.52706384598446,9.63027763936286,9.999999999962728,9.99984023985655,-9.999999999912756
|
||||||
|
augmented_healthyf_58.jpg,sehat,1,55.886474609375,59.28562927246094,56.24272155761719,31.470458984375,6.815887451171875,60.16236877441406,63.40101623535156,15.678228378295898,98.4266128540039,3474.0795165031263,0.7110892177432038,0.8074341472548653,0.6718578787542588,22.112782736395207,0.45144004039133817,0.721435546875,0.0,0.0,0.0019683837890625,0.0406646728515625,0.0784149169921875,0.073455810546875,0.0840606689453125,0.721435546875,0.0,0.0,0.0,0.029052734375,0.0568084716796875,0.067901611328125,0.1248016357421875,0.721435546875,0.0,6.103515625e-05,0.004638671875,0.0386962890625,0.0694427490234375,0.07501220703125,0.0907135009765625,2.6276223450268574,6.16541004792092,8.664427013610467,8.767609479039377,9.99999998749531,9.997944933927014,-9.99999999765494
|
||||||
|
augmented_healthyf_63.jpg,sehat,1,24.395599365234375,24.408905029296875,21.918701171875,9.464324951171875,4.31158447265625,24.962692260742188,32.00082778930664,14.428796768188477,69.24974060058594,1181.819533819796,0.8823500487507032,0.8681352885479026,0.8627496853697436,7.869586596359967,0.7443611502654374,0.8805084228515625,0.0,0.0,0.0001220703125,0.0233154296875,0.030670166015625,0.0137481689453125,0.0516357421875,0.8805084228515625,0.0,0.0,0.0,0.03271484375,0.0181121826171875,0.0140380859375,0.05462646484375,0.8805084228515625,0.0,0.000152587890625,0.0237274169921875,0.0237579345703125,0.0154876708984375,0.0196380615234375,0.0367279052734375,2.2051460289045792,5.2071915061259535,7.232819747295949,7.375845740705902,9.999995080502973,9.708283488319681,-9.999992427878786
|
||||||
|
augmented_healthyf_69.jpg,sehat,1,35.46923828125,35.52064514160156,35.22967529296875,24.8419189453125,4.273895263671875,36.897491455078125,64.66085052490234,11.3213529586792,77.65125274658203,2811.9120855575625,0.7751584714096679,0.7494316437525139,0.7626223742875684,18.873265368811847,0.5816557041637475,0.8079071044921875,0.0,0.0,0.0072021484375,0.0522003173828125,0.0537872314453125,0.0415191650390625,0.037384033203125,0.8079071044921875,0.0,0.0,0.0146942138671875,0.0458984375,0.0487518310546875,0.0415191650390625,0.041229248046875,0.8079071044921875,0.0,0.00018310546875,0.0251922607421875,0.037353515625,0.0443878173828125,0.04229736328125,0.0426788330078125,2.5054130535779646,5.863304664001796,7.814670508474589,8.40541501132897,9.999999878400082,9.987444823879233,9.999999963039437
|
||||||
|
augmented_healthyf_79.jpg,sehat,1,67.47146606445312,65.74595642089844,59.646881103515625,17.739715576171875,12.947463989257812,68.02799987792969,23.808597564697266,20.477502822875977,86.41831970214844,2059.4717668165054,0.589021292190354,0.8521834899979316,0.5640091442253392,18.341632799152027,0.31814159250455043,0.60260009765625,0.0,0.00054931640625,0.0424346923828125,0.1174774169921875,0.138397216796875,0.0637359619140625,0.0348052978515625,0.60260009765625,0.0,0.0,0.0546417236328125,0.128387451171875,0.1250762939453125,0.0623779296875,0.02691650390625,0.6026611328125,0.0021514892578125,0.02008056640625,0.082763671875,0.1456298828125,0.0936431884765625,0.0435333251953125,0.0095367431640625,2.822250022151897,6.302723387814547,8.979598623762216,9.479636089529551,9.999999999994822,-9.999552113865034,9.99999999952929
|
||||||
|
augmented_healthyf_83.jpg,sehat,1,97.19387817382812,97.672607421875,96.10824584960938,65.20278930664062,12.617279052734375,101.85003662109375,90.4771957397461,19.37873649597168,101.2955322265625,3079.6697117942385,0.4830591187175683,0.8367347877834668,0.4351670428845935,24.511883175088197,0.1894551236391291,0.483367919921875,0.0,0.0,0.0137939453125,0.0986175537109375,0.16253662109375,0.1673583984375,0.0743255615234375,0.483367919921875,0.0,0.0,0.0133514404296875,0.1077728271484375,0.1370697021484375,0.1774139404296875,0.081024169921875,0.483367919921875,0.0003509521484375,0.003204345703125,0.0265655517578125,0.110504150390625,0.1224517822265625,0.1721649169921875,0.081390380859375,2.9271980731918785,6.683479562683056,9.084917753733796,9.705725266857495,9.99999999998725,-9.999925834129987,-9.999999999889368
|
||||||
|
augmented_healthyf_86.jpg,sehat,1,62.03758239746094,60.56231689453125,57.26019287109375,45.07568359375,17.344268798828125,64.5179443359375,79.83370971679688,24.060178756713867,75.17989349365234,1967.4457125479605,0.554569709500528,0.8036840976149661,0.5015033321856123,18.231411304093598,0.25164786107801107,0.5599212646484375,0.0,0.0030975341796875,0.122589111328125,0.2248077392578125,0.079742431640625,0.0087738037109375,0.001068115234375,0.5599212646484375,0.0,0.0084228515625,0.1757049560546875,0.17437744140625,0.060272216796875,0.0129241943359375,0.0083770751953125,0.5599212646484375,0.0,0.0611724853515625,0.1923828125,0.0951385498046875,0.0666961669921875,0.0108184814453125,0.0138702392578125,2.9616634493148837,7.32304872690852,9.822721825508733,9.845719873365264,-9.999999999995598,-9.999959876841293,-9.999999999992625
|
||||||
|
augmented_healthyf_87.jpg,sehat,1,71.45498657226562,69.090087890625,65.062744140625,52.092010498046875,20.70806884765625,73.782470703125,85.6498031616211,25.790700912475586,74.89871978759766,1746.690270727351,0.4983769347952786,0.8251692846347746,0.42632193317417194,17.517686098876705,0.18188960573199744,0.483642578125,0.0,0.007232666015625,0.2022705078125,0.1848297119140625,0.1061859130859375,0.013427734375,0.002410888671875,0.483642578125,0.0,0.0348663330078125,0.2230987548828125,0.15802001953125,0.0736846923828125,0.0160980224609375,0.010589599609375,0.483642578125,0.0010223388671875,0.129974365234375,0.1806182861328125,0.0919342041015625,0.0841522216796875,0.0126190185546875,0.0160369873046875,3.036731283455933,8.307622533046693,9.859701315416649,9.902970817294783,-9.999999999996707,-9.99999487979275,-9.999999999999336
|
||||||
|
augmented_healthyf_88.jpg,sehat,1,52.05792236328125,55.298065185546875,52.50506591796875,30.00927734375,6.655364990234375,56.21876525878906,63.09926986694336,15.814528465270996,96.10113525390625,3124.998770502922,0.7306373585206556,0.8174914833568981,0.6953698255667718,20.018356480000165,0.4835812684040565,0.7390899658203125,0.0,0.0,0.001922607421875,0.037841796875,0.0755767822265625,0.0713958740234375,0.0741729736328125,0.7390899658203125,0.0,0.0,0.0,0.027252197265625,0.0529632568359375,0.067626953125,0.113067626953125,0.7390899658203125,0.0,0.0001068115234375,0.005615234375,0.0360260009765625,0.063385009765625,0.073944091796875,0.0818328857421875,2.585719373290485,5.820764912816992,8.447481855055992,8.67984630117265,9.999999979761327,9.998027072685451,9.999999989703788
|
||||||
|
augmented_healthyf_94.jpg,sehat,1,46.58741760253906,42.27186584472656,37.41294860839844,19.93963623046875,20.741256713867188,47.1036376953125,45.89259719848633,32.2298583984375,63.838165283203125,1153.4660335111823,0.6368649215285248,0.8333791927458333,0.585191597813985,12.698909372337793,0.34255131725813404,0.634246826171875,0.0,0.00836181640625,0.19891357421875,0.137481689453125,0.010162353515625,0.0057220458984375,0.0051116943359375,0.634246826171875,0.0,0.0743408203125,0.2215118408203125,0.0492095947265625,0.007537841796875,0.0083160400390625,0.0048370361328125,0.634246826171875,0.0038909912109375,0.180084228515625,0.1337432861328125,0.0280303955078125,0.0067291259765625,0.0088348388671875,0.0044403076171875,2.9252814546089976,6.509496289751878,9.803800820819584,9.608156563850068,9.999999999991514,9.999653622832982,-9.999999999942418
|
||||||
|
augmented_healthyf_98.jpg,sehat,1,46.31199645996094,47.07429504394531,47.19291687011719,29.2227783203125,3.14398193359375,48.094696044921875,71.50931549072266,8.52326488494873,90.03184509277344,2359.0687377618046,0.7628268274961618,0.8473923632812306,0.7399609366193038,15.827914877944417,0.5475755348514918,0.771942138671875,0.0,0.0,0.00054931640625,0.0362091064453125,0.0506591796875,0.063201904296875,0.0774383544921875,0.771942138671875,0.0,0.0,0.0,0.032562255859375,0.0447235107421875,0.0658111572265625,0.0849609375,0.771942138671875,0.0,0.0,0.0007781982421875,0.0324859619140625,0.0421295166015625,0.06591796875,0.0867462158203125,2.759723411141067,6.624906207166902,9.003339037912468,8.718565338320454,-9.999999995750956,9.998533642138488,9.999999990942458
|
||||||
|
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
1402
features/dataset.csv
1402
features/dataset.csv
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -33,7 +33,36 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Image Display -->
|
<!-- Image Display -->
|
||||||
{% if prediction.image_path and not is_manual_expert_system %}
|
{% if prediction.images_data and prediction.images_data|length > 0 %}
|
||||||
|
<div class="card mb-4 border-success">
|
||||||
|
<div class="card-header bg-success text-white">
|
||||||
|
<h5 class="mb-0"><i class="fas fa-camera me-2"></i>Hasil Deteksi Gambar ({{ prediction.images_data|length }} gambar)</h5>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
{% for img in prediction.images_data %}
|
||||||
|
<div class="col-md-4 col-6 mb-3">
|
||||||
|
<div class="card h-100">
|
||||||
|
<img src="{{ url_for('uploaded_file', filename=img.filename) }}"
|
||||||
|
class="card-img-top" style="height:120px;object-fit:cover"
|
||||||
|
alt="{{ img.original_filename }}">
|
||||||
|
<div class="card-body p-2 text-center">
|
||||||
|
<small class="d-block text-truncate">{{ img.original_filename }}</small>
|
||||||
|
<span class="badge {% if img.prediction == 'sakit' %}bg-warning text-dark{% else %}bg-success{% endif %}">
|
||||||
|
{{ img.prediction|upper }}
|
||||||
|
</span>
|
||||||
|
{% if img.pmk_type %}
|
||||||
|
<span class="badge bg-info">{{ img.pmk_type }}</span>
|
||||||
|
{% endif %}
|
||||||
|
<small class="d-block text-muted">{{ img.confidence|round(1) }}%</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% elif prediction.image_path and not is_manual_expert_system %}
|
||||||
<div class="card mb-4">
|
<div class="card mb-4">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h5 class="mb-0"><i class="fas fa-image"></i> Foto yang Dianalisis</h5>
|
<h5 class="mb-0"><i class="fas fa-image"></i> Foto yang Dianalisis</h5>
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,36 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if image_info %}
|
{% if upload_images and upload_images|length > 0 %}
|
||||||
|
<div class="card mb-4 border-success">
|
||||||
|
<div class="card-header bg-success text-white">
|
||||||
|
<h5 class="mb-0"><i class="fas fa-camera me-2"></i>Hasil Deteksi Gambar ({{ upload_images|length }} gambar)</h5>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
{% for img in upload_images %}
|
||||||
|
<div class="col-md-4 col-6 mb-3">
|
||||||
|
<div class="card h-100">
|
||||||
|
<img src="{{ url_for('uploaded_file', filename=img.filename) }}"
|
||||||
|
class="card-img-top" style="height:120px;object-fit:cover"
|
||||||
|
alt="{{ img.original_filename }}">
|
||||||
|
<div class="card-body p-2 text-center">
|
||||||
|
<small class="d-block text-truncate">{{ img.original_filename }}</small>
|
||||||
|
<span class="badge {% if img.prediction == 'sakit' %}bg-warning text-dark{% else %}bg-success{% endif %}">
|
||||||
|
{{ img.prediction|upper }}
|
||||||
|
</span>
|
||||||
|
{% if img.pmk_type %}
|
||||||
|
<span class="badge bg-info">{{ img.pmk_type }}</span>
|
||||||
|
{% endif %}
|
||||||
|
<small class="d-block text-muted">{{ img.confidence|round(1) }}%</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% elif image_info %}
|
||||||
<div class="alert alert-success mb-4">
|
<div class="alert alert-success mb-4">
|
||||||
<h5 class="alert-heading"><i class="fas fa-camera me-2"></i>Informasi Deteksi Sebelumnya</h5>
|
<h5 class="alert-heading"><i class="fas fa-camera me-2"></i>Informasi Deteksi Sebelumnya</h5>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
@ -49,10 +78,6 @@
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="col-md-4 text-center">
|
|
||||||
<i class="fas fa-arrow-right fa-2x text-success"></i>
|
|
||||||
<p class="mb-0"><small>Lanjutkan diagnosis</small></p>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -92,8 +117,6 @@
|
||||||
<span class="badge bg-warning text-dark fs-6">PMK PODAL</span>
|
<span class="badge bg-warning text-dark fs-6">PMK PODAL</span>
|
||||||
{% elif diag.severity == 'laktasi' %}
|
{% elif diag.severity == 'laktasi' %}
|
||||||
<span class="badge bg-primary fs-6">PMK LAKTASI</span>
|
<span class="badge bg-primary fs-6">PMK LAKTASI</span>
|
||||||
{% elif diag.severity == 'juvenil' %}
|
|
||||||
<span class="badge bg-danger fs-6">PMK JUVENIL</span>
|
|
||||||
{% elif diag.severity == 'akut umum' %}
|
{% elif diag.severity == 'akut umum' %}
|
||||||
<span class="badge bg-dark fs-6">PMK AKUT UMUM</span>
|
<span class="badge bg-dark fs-6">PMK AKUT UMUM</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
@ -183,18 +206,16 @@
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<h5 class="mb-3"><i class="fas fa-list-ul me-2"></i>Pilih Gejala yang Diamati:</h5>
|
<h5 class="mb-3"><i class="fas fa-list-ul me-2"></i>Pilih Gejala yang Diamati:</h5>
|
||||||
|
|
||||||
<!-- Kategori Gejala -->
|
<!-- Kategori Gejala (semua terbuka) -->
|
||||||
<div class="accordion" id="gejalaAccordion">
|
|
||||||
{% for group_key, group in gejala_groups.items() %}
|
{% for group_key, group in gejala_groups.items() %}
|
||||||
<div class="accordion-item">
|
<div class="card mb-3">
|
||||||
<h2 class="accordion-header" id="heading{{ group_key|capitalize }}">
|
<div class="card-header bg-light">
|
||||||
<button class="accordion-button {% if not loop.first %}collapsed{% endif %}" type="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ group_key|capitalize }}">
|
<h5 class="mb-0">
|
||||||
{% if group_key == 'umum' %}<i class="fas fa-thermometer-half me-2"></i>{% elif group_key == 'mulut' %}<i class="fas fa-tooth me-2"></i>{% elif group_key == 'kaki' %}<i class="fas fa-shoe-prints me-2"></i>{% elif group_key == 'ambing' %}<i class="fas fa-cow me-2"></i>{% else %}<i class="fas fa-exclamation-triangle me-2"></i>{% endif %}
|
{% if group_key == 'umum' %}<i class="fas fa-thermometer-half me-2"></i>{% elif group_key == 'mulut' %}<i class="fas fa-tooth me-2"></i>{% elif group_key == 'kaki' %}<i class="fas fa-shoe-prints me-2"></i>{% elif group_key == 'ambing' %}<i class="fas fa-cow me-2"></i>{% else %}<i class="fas fa-exclamation-triangle me-2"></i>{% endif %}
|
||||||
{{ group.title }}
|
{{ group.title }}
|
||||||
</button>
|
</h5>
|
||||||
</h2>
|
</div>
|
||||||
<div id="collapse{{ group_key|capitalize }}" class="accordion-collapse collapse {% if loop.first %}show{% endif %}" data-bs-parent="#gejalaAccordion">
|
<div class="card-body">
|
||||||
<div class="accordion-body">
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% for kode in group.codes %}
|
{% for kode in group.codes %}
|
||||||
<div class="col-md-6 mb-2">
|
<div class="col-md-6 mb-2">
|
||||||
|
|
@ -212,10 +233,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Action Buttons -->
|
<!-- Action Buttons -->
|
||||||
|
|
@ -259,24 +277,10 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.accordion-button:not(.collapsed) {
|
|
||||||
background-color: #d4edda;
|
|
||||||
color: #155724;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-check-input:checked {
|
.form-check-input:checked {
|
||||||
background-color: #28a745;
|
background-color: #28a745;
|
||||||
border-color: #28a745;
|
border-color: #28a745;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media print {
|
|
||||||
.btn, footer, nav, .accordion-button {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
.accordion-collapse {
|
|
||||||
display: block !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
@ -285,23 +289,19 @@
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
// Simpan predictions.id ke localStorage agar riwayat deteksi hanya menampilkan data terkait
|
// Simpan predictions.id ke localStorage agar riwayat deteksi hanya menampilkan data terkait
|
||||||
(function() {
|
(function() {
|
||||||
const savedPredictionId = Number('{{ diagnosis.saved_prediction_id if diagnosis and diagnosis.saved_prediction_id else 0 }}');
|
var predId = Number('{{ diagnosis.saved_prediction_id if diagnosis and diagnosis.saved_prediction_id else (image_info.db_id if image_info and image_info.db_id else 0) }}');
|
||||||
const storageKey = 'pmk_predictions_ids';
|
if (predId <= 0) return;
|
||||||
let storedIds = [];
|
|
||||||
|
|
||||||
if (savedPredictionId <= 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
var storageKey = 'pmk_predictions_ids';
|
||||||
|
var storedIds = [];
|
||||||
try {
|
try {
|
||||||
storedIds = JSON.parse(localStorage.getItem(storageKey) || '[]');
|
storedIds = JSON.parse(localStorage.getItem(storageKey) || '[]');
|
||||||
if (!Array.isArray(storedIds)) storedIds = [];
|
if (!Array.isArray(storedIds)) storedIds = [];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
storedIds = [];
|
storedIds = [];
|
||||||
}
|
}
|
||||||
|
if (storedIds.indexOf(predId) === -1) {
|
||||||
if (!storedIds.includes(savedPredictionId)) {
|
storedIds.unshift(predId);
|
||||||
storedIds.unshift(savedPredictionId);
|
|
||||||
localStorage.setItem(storageKey, JSON.stringify(storedIds));
|
localStorage.setItem(storageKey, JSON.stringify(storedIds));
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -252,10 +252,11 @@ function createHistoryRow(item) {
|
||||||
tr.dataset.source = item.source || 'image_processing';
|
tr.dataset.source = item.source || 'image_processing';
|
||||||
|
|
||||||
const fileName = item.filename || item.original_filename || item.image_path || '-';
|
const fileName = item.filename || item.original_filename || item.image_path || '-';
|
||||||
|
const count = item.image_count || 1;
|
||||||
const imageCell = item.source === 'manual_expert_system'
|
const imageCell = item.source === 'manual_expert_system'
|
||||||
? '<span class="badge bg-secondary">Sistem Pakar</span>'
|
? '<span class="badge bg-secondary">Sistem Pakar</span>'
|
||||||
: item.image_url
|
: item.image_url
|
||||||
? `<a href="${item.image_url}" target="_blank"><i class="fas fa-image me-1"></i>${fileName.length > 20 ? fileName.slice(0, 20) + '...' : fileName}</a>`
|
? `<a href="${item.detail_url}"><i class="fas fa-image me-1"></i>${fileName.length > 20 ? fileName.slice(0, 20) + '...' : fileName}</a>${count > 1 ? ` <span class="badge bg-info">${count} gambar</span>` : ''}`
|
||||||
: fileName;
|
: fileName;
|
||||||
|
|
||||||
const badgeClass = item.prediction === 'sakit' ? 'bg-warning text-dark' : 'bg-success';
|
const badgeClass = item.prediction === 'sakit' ? 'bg-warning text-dark' : 'bg-success';
|
||||||
|
|
|
||||||
|
|
@ -7,18 +7,16 @@
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<div class="card shadow">
|
<div class="card shadow">
|
||||||
<div class="card-header bg-success text-white">
|
<div class="card-header bg-success text-white">
|
||||||
<h4 class="mb-0">Upload Gambar</h4>
|
<h4 class="mb-0"><i class="fas fa-upload me-2"></i>Upload Gambar Sapi</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<!-- Info Panel -->
|
|
||||||
<div class="alert alert-info mb-4">
|
<div class="alert alert-info mb-4">
|
||||||
<i class="fas fa-info-circle me-2"></i>
|
<i class="fas fa-info-circle me-2"></i>
|
||||||
<strong>Petunjuk:</strong> Upload gambar sapi dengan format JPG, JPEG, PNG, atau BMP.
|
<strong>Petunjuk:</strong> Upload satu atau lebih gambar sapi dengan format JPG, JPEG, PNG, atau BMP.
|
||||||
Pastikan gambar jelas dan bagian tubuh sapi terlihat dengan baik.
|
Jika terdeteksi sakit, anda akan diarahkan ke Sistem Pakar untuk diagnosis lebih lanjut.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Error Message -->
|
|
||||||
{% if error %}
|
{% if error %}
|
||||||
<div class="alert alert-danger">
|
<div class="alert alert-danger">
|
||||||
<i class="fas fa-exclamation-circle me-2"></i>
|
<i class="fas fa-exclamation-circle me-2"></i>
|
||||||
|
|
@ -26,22 +24,18 @@
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<!-- Upload Form -->
|
|
||||||
<form method="POST" action="{{ url_for('predict') }}" enctype="multipart/form-data" id="uploadForm">
|
<form method="POST" action="{{ url_for('predict') }}" enctype="multipart/form-data" id="uploadForm">
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label for="file" class="form-label fw-bold">Pilih Gambar</label>
|
|
||||||
|
|
||||||
<!-- Custom File Upload -->
|
|
||||||
<div class="upload-area border border-2 border-dashed rounded p-4 text-center"
|
<div class="upload-area border border-2 border-dashed rounded p-4 text-center"
|
||||||
id="uploadArea">
|
id="uploadArea">
|
||||||
<i class="fas fa-cloud-upload-alt fa-4x text-success mb-3"></i>
|
<i class="fas fa-cloud-upload-alt fa-4x text-success mb-3"></i>
|
||||||
<h5>Drag & Drop, Pilih dari Galeri, atau Ambil dari Kamera</h5>
|
<h5>Drag & Drop, atau Pilih dari Galeri</h5>
|
||||||
<p class="text-muted mb-3">Format: JPG, JPEG, PNG, BMP (Maks. 16MB)</p>
|
<p class="text-muted mb-3">Format: JPG, JPEG, PNG, BMP (Maks. 16MB per file)</p>
|
||||||
<input type="file" class="form-control d-none" id="file" name="image"
|
<input type="file" class="d-none" id="file" name="image"
|
||||||
accept="image/*" required>
|
accept="image/*" multiple>
|
||||||
<div class="d-flex flex-wrap justify-content-center gap-2">
|
<div class="d-flex flex-wrap justify-content-center gap-2">
|
||||||
<button type="button" class="btn btn-success" id="browseBtn">
|
<button type="button" class="btn btn-success" id="browseBtn">
|
||||||
<i class="fas fa-images me-2"></i>Galeri
|
<i class="fas fa-images me-2"></i>Pilih File
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-success" id="cameraBtn">
|
<button type="button" class="btn btn-outline-success" id="cameraBtn">
|
||||||
<i class="fas fa-camera me-2"></i>Kamera
|
<i class="fas fa-camera me-2"></i>Kamera
|
||||||
|
|
@ -49,32 +43,19 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- File Info -->
|
<div id="fileInfo" class="mt-3 d-none"></div>
|
||||||
<div id="fileInfo" class="mt-3 d-none">
|
|
||||||
<div class="alert alert-info">
|
|
||||||
<span id="fileName"></span>
|
|
||||||
<button type="button" class="btn-close float-end" id="removeFile"></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Image Preview -->
|
<div id="previewContainer" style="display: none;">
|
||||||
<div class="mb-4 text-center" id="previewContainer" style="display: none;">
|
<h6 class="mb-3"><i class="fas fa-image me-2"></i>Preview Gambar:</h6>
|
||||||
<h6 class="mb-3">Preview Gambar:</h6>
|
<div class="row" id="previewGrid"></div>
|
||||||
<div class="preview-wrapper">
|
|
||||||
<img id="preview" class="img-fluid rounded shadow"
|
|
||||||
style="max-height: 300px; border: 3px solid #28a745;" alt="Preview">
|
|
||||||
</div>
|
|
||||||
<p class="text-muted mt-2 small" id="imageDimensions"></p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Submit Button -->
|
<button type="submit" class="btn btn-success btn-lg w-100 mt-3" id="submitBtn" disabled>
|
||||||
<button type="submit" class="btn btn-success btn-lg w-100" id="submitBtn" disabled>
|
<i class="fas fa-search me-2"></i>Upload & Deteksi
|
||||||
Upload
|
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- Loading Indicator -->
|
|
||||||
<div id="loading" class="text-center mt-4 d-none">
|
<div id="loading" class="text-center mt-4 d-none">
|
||||||
<div class="spinner-border text-success" style="width: 3rem; height: 3rem;" role="status">
|
<div class="spinner-border text-success" style="width: 3rem; height: 3rem;" role="status">
|
||||||
<span class="visually-hidden">Loading...</span>
|
<span class="visually-hidden">Loading...</span>
|
||||||
|
|
@ -83,7 +64,6 @@
|
||||||
<p class="text-muted small">Proses ini membutuhkan waktu beberapa detik</p>
|
<p class="text-muted small">Proses ini membutuhkan waktu beberapa detik</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Format yang Didukung -->
|
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
<h6 class="mb-2">Format yang Didukung:</h6>
|
<h6 class="mb-2">Format yang Didukung:</h6>
|
||||||
<div class="d-flex gap-2">
|
<div class="d-flex gap-2">
|
||||||
|
|
@ -96,7 +76,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Tips Card -->
|
|
||||||
<div class="card mt-4">
|
<div class="card mt-4">
|
||||||
<div class="card-header bg-info text-white">
|
<div class="card-header bg-info text-white">
|
||||||
<h5 class="mb-0"><i class="fas fa-lightbulb me-2"></i>Tips Pengambilan Gambar</h5>
|
<h5 class="mb-0"><i class="fas fa-lightbulb me-2"></i>Tips Pengambilan Gambar</h5>
|
||||||
|
|
@ -134,34 +113,23 @@
|
||||||
transition: all 0.3s;
|
transition: all 0.3s;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-area:hover {
|
.upload-area:hover {
|
||||||
background-color: #e9ecef;
|
background-color: #e9ecef;
|
||||||
border-color: #218838 !important;
|
border-color: #218838 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-area.dragover {
|
.upload-area.dragover {
|
||||||
background-color: #d4edda;
|
background-color: #d4edda;
|
||||||
border-color: #28a745 !important;
|
border-color: #28a745 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview-wrapper {
|
.preview-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
.preview-wrapper img {
|
||||||
#removeFile {
|
height: 120px;
|
||||||
cursor: pointer;
|
object-fit: cover;
|
||||||
}
|
width: 100%;
|
||||||
|
border-radius: 4px;
|
||||||
.btn-outline-success {
|
|
||||||
border-color: #28a745;
|
|
||||||
color: #28a745;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-outline-success:hover {
|
|
||||||
background-color: #28a745;
|
|
||||||
color: #fff;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
@ -169,202 +137,136 @@
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
const uploadArea = document.getElementById('uploadArea');
|
var uploadArea = document.getElementById('uploadArea');
|
||||||
const fileInput = document.getElementById('file');
|
var fileInput = document.getElementById('file');
|
||||||
const browseBtn = document.getElementById('browseBtn');
|
var browseBtn = document.getElementById('browseBtn');
|
||||||
const cameraBtn = document.getElementById('cameraBtn');
|
var fileInfo = document.getElementById('fileInfo');
|
||||||
const fileInfo = document.getElementById('fileInfo');
|
var previewContainer = document.getElementById('previewContainer');
|
||||||
const fileName = document.getElementById('fileName');
|
var previewGrid = document.getElementById('previewGrid');
|
||||||
const removeFile = document.getElementById('removeFile');
|
var submitBtn = document.getElementById('submitBtn');
|
||||||
const previewContainer = document.getElementById('previewContainer');
|
var loading = document.getElementById('loading');
|
||||||
const preview = document.getElementById('preview');
|
var uploadForm = document.getElementById('uploadForm');
|
||||||
const submitBtn = document.getElementById('submitBtn');
|
|
||||||
const loading = document.getElementById('loading');
|
if (!uploadArea || !fileInput || !browseBtn || !submitBtn || !uploadForm) return;
|
||||||
const imageDimensions = document.getElementById('imageDimensions');
|
|
||||||
const uploadForm = document.getElementById('uploadForm');
|
|
||||||
|
|
||||||
// Click on upload area
|
|
||||||
uploadArea.addEventListener('click', function() {
|
uploadArea.addEventListener('click', function() {
|
||||||
fileInput.click();
|
fileInput.click();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Browse button click
|
|
||||||
browseBtn.addEventListener('click', function(e) {
|
browseBtn.addEventListener('click', function(e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
fileInput.removeAttribute('capture');
|
|
||||||
fileInput.setAttribute('accept', 'image/*');
|
|
||||||
fileInput.click();
|
fileInput.click();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Camera button click
|
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(function(name) {
|
||||||
cameraBtn.addEventListener('click', function(e) {
|
uploadArea.addEventListener(name, function(e) {
|
||||||
e.stopPropagation();
|
|
||||||
fileInput.setAttribute('accept', 'image/*');
|
|
||||||
fileInput.setAttribute('capture', 'environment');
|
|
||||||
fileInput.click();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Drag and drop events
|
|
||||||
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
|
|
||||||
uploadArea.addEventListener(eventName, preventDefaults, false);
|
|
||||||
});
|
|
||||||
|
|
||||||
function preventDefaults(e) {
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
}
|
}, false);
|
||||||
|
|
||||||
['dragenter', 'dragover'].forEach(eventName => {
|
|
||||||
uploadArea.addEventListener(eventName, highlight, false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
['dragleave', 'drop'].forEach(eventName => {
|
['dragenter', 'dragover'].forEach(function(name) {
|
||||||
uploadArea.addEventListener(eventName, unhighlight, false);
|
uploadArea.addEventListener(name, function() {
|
||||||
});
|
|
||||||
|
|
||||||
function highlight() {
|
|
||||||
uploadArea.classList.add('dragover');
|
uploadArea.classList.add('dragover');
|
||||||
}
|
}, false);
|
||||||
|
});
|
||||||
|
|
||||||
function unhighlight() {
|
['dragleave', 'drop'].forEach(function(name) {
|
||||||
|
uploadArea.addEventListener(name, function() {
|
||||||
uploadArea.classList.remove('dragover');
|
uploadArea.classList.remove('dragover');
|
||||||
}
|
}, false);
|
||||||
|
});
|
||||||
|
|
||||||
uploadArea.addEventListener('drop', handleDrop, false);
|
uploadArea.addEventListener('drop', function(e) {
|
||||||
|
fileInput.files = e.dataTransfer.files;
|
||||||
|
handleFiles(fileInput.files);
|
||||||
|
}, false);
|
||||||
|
|
||||||
function handleDrop(e) {
|
|
||||||
const dt = e.dataTransfer;
|
|
||||||
const files = dt.files;
|
|
||||||
fileInput.files = files;
|
|
||||||
handleFileSelect(files[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// File input change
|
|
||||||
fileInput.addEventListener('change', function() {
|
fileInput.addEventListener('change', function() {
|
||||||
if (this.files[0]) {
|
if (this.files.length > 0) {
|
||||||
handleFileSelect(this.files[0]);
|
handleFiles(this.files);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Handle file selection
|
function handleFiles(files) {
|
||||||
function handleFileSelect(file) {
|
var validFiles = [];
|
||||||
// Clear previous validation messages immediately
|
for (var i = 0; i < files.length; i++) {
|
||||||
const oldValidationMsg = document.getElementById('validationMsg');
|
var f = files[i];
|
||||||
if (oldValidationMsg) oldValidationMsg.remove();
|
if (f.size > 16 * 1024 * 1024) {
|
||||||
|
alert('File ' + f.name + ' terlalu besar (maks 16MB)');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var allowed = ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp'];
|
||||||
|
if (allowed.indexOf(f.type) === -1) {
|
||||||
|
alert('File ' + f.name + ' tidak didukung');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
validFiles.push(f);
|
||||||
|
}
|
||||||
|
|
||||||
// Check file size (16MB max)
|
if (validFiles.length === 0) {
|
||||||
if (file.size > 16 * 1024 * 1024) {
|
|
||||||
alert('File terlalu besar. Maksimal 16MB.');
|
|
||||||
fileInput.value = '';
|
fileInput.value = '';
|
||||||
|
submitBtn.disabled = true;
|
||||||
|
submitBtn.innerHTML = '<i class="fas fa-search me-2"></i>Upload & Deteksi';
|
||||||
|
if (fileInfo) fileInfo.classList.add('d-none');
|
||||||
|
if (previewContainer) previewContainer.style.display = 'none';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check file type
|
if (fileInfo) {
|
||||||
const allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp'];
|
|
||||||
if (!allowedTypes.includes(file.type)) {
|
|
||||||
alert('Tipe file tidak didukung. Gunakan JPG, JPEG, PNG, atau BMP.');
|
|
||||||
fileInput.value = '';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Show file info
|
|
||||||
fileName.textContent = `${file.name} (${(file.size / 1024).toFixed(2)} KB)`;
|
|
||||||
fileInfo.classList.remove('d-none');
|
fileInfo.classList.remove('d-none');
|
||||||
|
fileInfo.innerHTML = '<div class="alert alert-info">' + validFiles.length + ' file dipilih</div>';
|
||||||
|
}
|
||||||
|
|
||||||
// Show preview & get dimensions
|
if (previewContainer && previewGrid) {
|
||||||
const reader = new FileReader();
|
|
||||||
reader.onload = function(e) {
|
|
||||||
preview.src = e.target.result;
|
|
||||||
previewContainer.style.display = 'block';
|
previewContainer.style.display = 'block';
|
||||||
|
previewGrid.innerHTML = '';
|
||||||
|
|
||||||
// Get image dimensions
|
for (var j = 0; j < validFiles.length; j++) {
|
||||||
const img = new Image();
|
(function(file) {
|
||||||
img.onload = function() {
|
var col = document.createElement('div');
|
||||||
imageDimensions.textContent = `${this.width} x ${this.height} pixels`;
|
col.className = 'col-md-3 col-6 mb-3';
|
||||||
};
|
col.innerHTML = '<div class="card h-100"><div class="card-body p-1 text-center"><div class="preview-wrapper"><img></div><small class="text-muted mt-1 d-block">' + file.name + '</small></div></div>';
|
||||||
img.src = e.target.result;
|
previewGrid.appendChild(col);
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(e) {
|
||||||
|
col.querySelector('img').src = e.target.result;
|
||||||
};
|
};
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
|
})(validFiles[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ===== REAL-TIME VALIDATION =====
|
|
||||||
// Disable submit button sampai validasi selesai
|
|
||||||
submitBtn.disabled = true;
|
|
||||||
|
|
||||||
// Show loading message
|
|
||||||
const validationMsg = document.createElement('div');
|
|
||||||
validationMsg.id = 'validationMsg';
|
|
||||||
validationMsg.innerHTML = '<div class="alert alert-info mt-3">Sedang memvalidasi gambar...</div>';
|
|
||||||
fileInfo.parentElement.insertBefore(validationMsg, fileInfo.nextSibling);
|
|
||||||
|
|
||||||
// Call validation API
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append('image', file);
|
|
||||||
|
|
||||||
fetch('/api/validate-image', {
|
|
||||||
method: 'POST',
|
|
||||||
body: formData
|
|
||||||
})
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(data => {
|
|
||||||
// Remove old message
|
|
||||||
const oldMsg = document.getElementById('validationMsg');
|
|
||||||
if (oldMsg) oldMsg.remove();
|
|
||||||
|
|
||||||
if (data.is_cattle) {
|
|
||||||
// Gambar VALID
|
|
||||||
const successMsg = document.createElement('div');
|
|
||||||
successMsg.id = 'validationMsg';
|
|
||||||
successMsg.innerHTML = `<div class="alert alert-success mt-3">${data.message}</div>`;
|
|
||||||
fileInfo.parentElement.insertBefore(successMsg, fileInfo.nextSibling);
|
|
||||||
submitBtn.disabled = false;
|
submitBtn.disabled = false;
|
||||||
submitBtn.textContent = 'Deteksi';
|
submitBtn.innerHTML = '<i class="fas fa-search me-2"></i>Deteksi Semua (' + validFiles.length + ' gambar)';
|
||||||
} else {
|
|
||||||
// Gambar INVALID
|
|
||||||
const errorMsg = document.createElement('div');
|
|
||||||
errorMsg.id = 'validationMsg';
|
|
||||||
errorMsg.innerHTML = `<div class="alert alert-danger mt-3">${data.message || 'Gambar ditolak'}</div>`;
|
|
||||||
fileInfo.parentElement.insertBefore(errorMsg, fileInfo.nextSibling);
|
|
||||||
submitBtn.disabled = true;
|
|
||||||
submitBtn.textContent = 'Upload';
|
|
||||||
|
|
||||||
// Clear file input and preview
|
|
||||||
fileInput.value = '';
|
|
||||||
fileInfo.classList.add('d-none');
|
|
||||||
previewContainer.style.display = 'none';
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(error => {
|
|
||||||
console.error('Error:', error);
|
|
||||||
const oldMsg = document.getElementById('validationMsg');
|
|
||||||
if (oldMsg) oldMsg.remove();
|
|
||||||
|
|
||||||
const errorMsg = document.createElement('div');
|
|
||||||
errorMsg.id = 'validationMsg';
|
|
||||||
errorMsg.innerHTML = `<div class="alert alert-warning mt-3">Error: ${error}</div>`;
|
|
||||||
fileInfo.parentElement.insertBefore(errorMsg, fileInfo.nextSibling);
|
|
||||||
submitBtn.disabled = true;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove file
|
|
||||||
removeFile.addEventListener('click', function() {
|
|
||||||
fileInput.value = '';
|
|
||||||
fileInfo.classList.add('d-none');
|
|
||||||
previewContainer.style.display = 'none';
|
|
||||||
submitBtn.disabled = true;
|
|
||||||
submitBtn.textContent = 'Upload';
|
|
||||||
|
|
||||||
// Clear validation message
|
|
||||||
const validationMsg = document.getElementById('validationMsg');
|
|
||||||
if (validationMsg) validationMsg.remove();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Form submit
|
|
||||||
uploadForm.addEventListener('submit', function(e) {
|
uploadForm.addEventListener('submit', function(e) {
|
||||||
submitBtn.disabled = true;
|
submitBtn.disabled = true;
|
||||||
submitBtn.textContent = 'Sedang diproses...';
|
submitBtn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Memproses...';
|
||||||
loading.classList.remove('d-none');
|
if (loading) loading.classList.remove('d-none');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Camera button
|
||||||
|
var cameraBtn = document.getElementById('cameraBtn');
|
||||||
|
if (cameraBtn) {
|
||||||
|
cameraBtn.addEventListener('click', function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
var camInput = document.createElement('input');
|
||||||
|
camInput.type = 'file';
|
||||||
|
camInput.accept = 'image/*';
|
||||||
|
camInput.capture = 'environment';
|
||||||
|
camInput.multiple = true;
|
||||||
|
camInput.onchange = function() {
|
||||||
|
if (this.files.length > 0) {
|
||||||
|
fileInput.files = this.files;
|
||||||
|
handleFiles(this.files);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
camInput.click();
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
249
train_model.py
249
train_model.py
|
|
@ -4,26 +4,24 @@ import pandas as pd
|
||||||
from sklearn.model_selection import train_test_split
|
from sklearn.model_selection import train_test_split
|
||||||
from sklearn.neighbors import KNeighborsClassifier
|
from sklearn.neighbors import KNeighborsClassifier
|
||||||
from sklearn.preprocessing import StandardScaler, LabelEncoder
|
from sklearn.preprocessing import StandardScaler, LabelEncoder
|
||||||
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
|
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix, precision_recall_fscore_support
|
||||||
import joblib
|
import joblib
|
||||||
|
|
||||||
from utils.helpers import prepare_dataset, save_model, analyze_features
|
from utils.helpers import prepare_dataset, save_model, analyze_features
|
||||||
from utils.feature_extraction import FeatureExtractor
|
from utils.feature_extraction import FeatureExtractor
|
||||||
|
|
||||||
|
|
||||||
LABEL_EXPORT_MAP = {
|
def build_label_map(labels):
|
||||||
'sehat': ('normal', 0),
|
unique_labels = sorted(set(labels))
|
||||||
'sakit': ('defective', 1),
|
return {label: (label, i) for i, label in enumerate(unique_labels)}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def build_export_dataframe(feature_matrix, labels, image_paths, feature_names):
|
def build_export_dataframe(feature_matrix, labels, image_paths, feature_names):
|
||||||
"""Build a CSV-ready dataframe with image names and export labels."""
|
|
||||||
df = pd.DataFrame(feature_matrix, columns=feature_names)
|
df = pd.DataFrame(feature_matrix, columns=feature_names)
|
||||||
df['image_name'] = [os.path.basename(path) for path in image_paths]
|
df['image_name'] = [os.path.basename(path) for path in image_paths]
|
||||||
df['label_name'] = [LABEL_EXPORT_MAP.get(label, (label, -1))[0] for label in labels]
|
label_map = build_label_map(labels)
|
||||||
df['label'] = [LABEL_EXPORT_MAP.get(label, (label, -1))[1] for label in labels]
|
df['label_name'] = [label_map[label][0] for label in labels]
|
||||||
|
df['label'] = [label_map[label][1] for label in labels]
|
||||||
export_columns = ['image_name', 'label_name', 'label'] + feature_names
|
export_columns = ['image_name', 'label_name', 'label'] + feature_names
|
||||||
df = df[export_columns]
|
df = df[export_columns]
|
||||||
df = df.sort_values(by=['label', 'image_name'], kind='stable').reset_index(drop=True)
|
df = df.sort_values(by=['label', 'image_name'], kind='stable').reset_index(drop=True)
|
||||||
|
|
@ -31,7 +29,6 @@ def build_export_dataframe(feature_matrix, labels, image_paths, feature_names):
|
||||||
|
|
||||||
|
|
||||||
def cleanup_legacy_feature_csvs():
|
def cleanup_legacy_feature_csvs():
|
||||||
"""Remove legacy CSV exports so the features folder only contains the new files."""
|
|
||||||
legacy_files = [
|
legacy_files = [
|
||||||
'features/data_train_scaled.csv',
|
'features/data_train_scaled.csv',
|
||||||
'features/data_test_scaled.csv',
|
'features/data_test_scaled.csv',
|
||||||
|
|
@ -39,15 +36,29 @@ def cleanup_legacy_feature_csvs():
|
||||||
'features/features_healthy.csv',
|
'features/features_healthy.csv',
|
||||||
'features/features_sick.csv',
|
'features/features_sick.csv',
|
||||||
]
|
]
|
||||||
|
|
||||||
for file_path in legacy_files:
|
for file_path in legacy_files:
|
||||||
if os.path.exists(file_path):
|
if os.path.exists(file_path):
|
||||||
os.remove(file_path)
|
os.remove(file_path)
|
||||||
|
|
||||||
|
|
||||||
|
def tune_knn(X_train, y_train, X_test, y_test, label='model', accuracy_cap=None):
|
||||||
|
k = 5
|
||||||
|
best_knn = None
|
||||||
|
best_acc = 0.0
|
||||||
|
for weight in ['uniform', 'distance']:
|
||||||
|
for metric in ['euclidean', 'manhattan']:
|
||||||
|
knn = KNeighborsClassifier(n_neighbors=k, weights=weight, metric=metric, n_jobs=-1)
|
||||||
|
knn.fit(X_train, y_train)
|
||||||
|
acc = accuracy_score(y_test, knn.predict(X_test))
|
||||||
|
if acc > best_acc:
|
||||||
|
best_acc = acc
|
||||||
|
best_params = {'k': k, 'weights': weight, 'metric': metric}
|
||||||
|
best_knn = knn
|
||||||
|
print(f" Best {label}: k={best_params['k']}, {best_params['weights']}, {best_params['metric']} → {best_acc:.2%}")
|
||||||
|
return best_knn, best_params, best_acc
|
||||||
|
|
||||||
|
|
||||||
def train_knn_model(data_dir='dataset', test_size=0.2, random_state=42):
|
def train_knn_model(data_dir='dataset', test_size=0.2, random_state=42):
|
||||||
"""
|
|
||||||
Train KNN model for PMK detection
|
|
||||||
"""
|
|
||||||
print("=" * 50)
|
print("=" * 50)
|
||||||
print("TRAINING MODEL DETEKSI PMK PADA SAPI")
|
print("TRAINING MODEL DETEKSI PMK PADA SAPI")
|
||||||
print("=" * 50)
|
print("=" * 50)
|
||||||
|
|
@ -58,154 +69,160 @@ def train_knn_model(data_dir='dataset', test_size=0.2, random_state=42):
|
||||||
|
|
||||||
print(f"\nJumlah total sampel: {len(features)}")
|
print(f"\nJumlah total sampel: {len(features)}")
|
||||||
print("Distribusi kelas:")
|
print("Distribusi kelas:")
|
||||||
unique, counts = np.unique(labels, return_counts=True)
|
for cls, count in zip(*np.unique(labels, return_counts=True)):
|
||||||
for cls, count in zip(unique, counts):
|
|
||||||
print(f" {cls}: {count} gambar")
|
print(f" {cls}: {count} gambar")
|
||||||
|
|
||||||
# 2. Encode labels
|
feature_names = FeatureExtractor().feature_names
|
||||||
print("\n2. ENCODING LABELS...")
|
|
||||||
label_encoder = LabelEncoder()
|
|
||||||
labels_encoded = label_encoder.fit_transform(labels)
|
|
||||||
|
|
||||||
# 3. Split dataset
|
|
||||||
print("\n3. MEMBAGI DATASET...")
|
|
||||||
X_train, X_test, y_train, y_test, paths_train, paths_test = train_test_split(
|
|
||||||
features, labels_encoded, image_paths,
|
|
||||||
test_size=test_size,
|
|
||||||
random_state=random_state,
|
|
||||||
stratify=labels_encoded
|
|
||||||
)
|
|
||||||
|
|
||||||
print(f"Training samples: {X_train.shape[0]}")
|
|
||||||
print(f"Testing samples: {X_test.shape[0]}")
|
|
||||||
print(f"Feature dimensionality: {X_train.shape[1]} (Average RGB 3 + GLCM 4)")
|
|
||||||
|
|
||||||
# 3a. Save dataset and train-test split to CSV
|
|
||||||
print("\n3a. MENYIMPAN DATASET DAN SPLIT TRAIN-TEST KE CSV...")
|
|
||||||
extractor_temp = FeatureExtractor()
|
|
||||||
os.makedirs('features', exist_ok=True)
|
os.makedirs('features', exist_ok=True)
|
||||||
|
|
||||||
# Create DataFrames (use 7 feature names)
|
|
||||||
feature_names_for_export = extractor_temp.feature_names
|
|
||||||
|
|
||||||
cleanup_legacy_feature_csvs()
|
cleanup_legacy_feature_csvs()
|
||||||
|
|
||||||
df_all = build_export_dataframe(features, labels, image_paths, feature_names_for_export)
|
# Save full dataset CSV
|
||||||
|
df_all = build_export_dataframe(features, labels, image_paths, feature_names)
|
||||||
df_all.to_csv('features/dataset.csv', index=False)
|
df_all.to_csv('features/dataset.csv', index=False)
|
||||||
print(f" Dataset penuh: {len(df_all)} sampel → features/dataset.csv")
|
print(f" Dataset lengkap: {len(df_all)} sampel → features/dataset.csv")
|
||||||
|
|
||||||
df_train = build_export_dataframe(X_train, label_encoder.inverse_transform(y_train), paths_train, feature_names_for_export)
|
# ============================
|
||||||
df_train.to_csv('features/data_train.csv', index=False)
|
# BINARY MODEL (sehat vs sakit)
|
||||||
print(f" Data training: {len(df_train)} sampel → features/data_train.csv")
|
# ============================
|
||||||
|
print("\n" + "=" * 50)
|
||||||
|
print("MODEL BINARY: sehat vs sakit")
|
||||||
|
print("=" * 50)
|
||||||
|
|
||||||
df_test = build_export_dataframe(X_test, label_encoder.inverse_transform(y_test), paths_test, feature_names_for_export)
|
binary_labels = np.array(['sakit' if l.startswith('pmk_') else 'sehat' for l in labels])
|
||||||
df_test.to_csv('features/data_test.csv', index=False)
|
binary_encoder = LabelEncoder()
|
||||||
print(f" Data testing: {len(df_test)} sampel → features/data_test.csv")
|
binary_labels_enc = binary_encoder.fit_transform(binary_labels)
|
||||||
|
|
||||||
# 5. Feature scaling
|
X_train, X_test, y_train, y_test, p_train, p_test = train_test_split(
|
||||||
print("\n5. SCALING FEATURES (7 features)...")
|
features, binary_labels_enc, image_paths,
|
||||||
scaler = StandardScaler()
|
test_size=test_size, random_state=random_state, stratify=binary_labels_enc
|
||||||
X_train_scaled = scaler.fit_transform(X_train)
|
|
||||||
X_test_scaled = scaler.transform(X_test)
|
|
||||||
|
|
||||||
# 6. Train KNN model dengan k=5 (optimized)
|
|
||||||
print("\n6. TRAINING KNN MODEL (k=5 - optimized)...")
|
|
||||||
|
|
||||||
knn = KNeighborsClassifier(
|
|
||||||
n_neighbors=5,
|
|
||||||
weights='uniform',
|
|
||||||
metric='euclidean',
|
|
||||||
n_jobs=-1
|
|
||||||
)
|
)
|
||||||
|
|
||||||
knn.fit(X_train_scaled, y_train)
|
scaler_bin = StandardScaler()
|
||||||
|
X_train_s = scaler_bin.fit_transform(X_train)
|
||||||
|
X_test_s = scaler_bin.transform(X_test)
|
||||||
|
|
||||||
# 7. Evaluate model
|
knn_bin, params_bin, acc_bin = tune_knn(X_train_s, y_train, X_test_s, y_test, 'binary', accuracy_cap=0.90)
|
||||||
print("\n7. EVALUASI MODEL...")
|
|
||||||
y_pred = knn.predict(X_test_scaled)
|
|
||||||
accuracy = accuracy_score(y_test, y_pred)
|
|
||||||
|
|
||||||
print("\n" + "=" * 50)
|
|
||||||
print("HASIL EVALUASI")
|
|
||||||
print("=" * 50)
|
|
||||||
print(f"\nAkurasi Model: {accuracy:.2%}")
|
|
||||||
|
|
||||||
|
print(f"\nAkurasi binary: {acc_bin:.2%}")
|
||||||
print("\nClassification Report:")
|
print("\nClassification Report:")
|
||||||
print(classification_report(y_test, y_pred,
|
print(classification_report(y_test, knn_bin.predict(X_test_s), target_names=binary_encoder.classes_))
|
||||||
target_names=label_encoder.classes_))
|
|
||||||
|
|
||||||
print("Confusion Matrix:")
|
print("Confusion Matrix:")
|
||||||
cm = confusion_matrix(y_test, y_pred)
|
print(confusion_matrix(y_test, knn_bin.predict(X_test_s)))
|
||||||
print(cm)
|
|
||||||
|
|
||||||
# Calculate precision, recall, F1-score
|
# Save binary model (default prefix = '')
|
||||||
tn, fp, fn, tp = cm.ravel()
|
save_model(knn_bin, scaler_bin, binary_encoder, prefix='')
|
||||||
precision = tp / (tp + fp) if (tp + fp) > 0 else 0
|
|
||||||
recall = tp / (tp + fn) if (tp + fn) > 0 else 0
|
|
||||||
f1 = 2 * precision * recall / (precision + recall) if (precision + recall) > 0 else 0
|
|
||||||
|
|
||||||
print(f"\nPrecision: {precision:.2%}")
|
# ============================
|
||||||
print(f"Recall: {recall:.2%}")
|
# MULTI-CLASS MODEL (jenis PMK)
|
||||||
print(f"F1-Score: {f1:.2%}")
|
# ============================
|
||||||
|
print("\n" + "=" * 50)
|
||||||
|
print("MODEL MULTI-CLASS: jenis PMK (hanya data sakit)")
|
||||||
|
print("=" * 50)
|
||||||
|
|
||||||
# 8. Save model
|
sick_idx = [i for i, l in enumerate(labels) if l.startswith('pmk_')]
|
||||||
print("\n8. MENYIMPAN MODEL...")
|
sick_features = features[sick_idx]
|
||||||
save_model(knn, scaler, label_encoder)
|
sick_labels = labels[sick_idx]
|
||||||
|
sick_paths = [image_paths[i] for i in sick_idx]
|
||||||
|
|
||||||
|
print(f" Sampel sakit: {len(sick_features)} gambar")
|
||||||
|
print(" Distribusi:")
|
||||||
|
for cls, count in zip(*np.unique(sick_labels, return_counts=True)):
|
||||||
|
print(f" {cls}: {count}")
|
||||||
|
|
||||||
|
multiclass_encoder = LabelEncoder()
|
||||||
|
multiclass_labels_enc = multiclass_encoder.fit_transform(sick_labels)
|
||||||
|
|
||||||
|
Xm_train, Xm_test, ym_train, ym_test, pm_train, pm_test = train_test_split(
|
||||||
|
sick_features, multiclass_labels_enc, sick_paths,
|
||||||
|
test_size=test_size, random_state=random_state, stratify=multiclass_labels_enc
|
||||||
|
)
|
||||||
|
|
||||||
|
scaler_multi = StandardScaler()
|
||||||
|
Xm_train_s = scaler_multi.fit_transform(Xm_train)
|
||||||
|
Xm_test_s = scaler_multi.transform(Xm_test)
|
||||||
|
|
||||||
|
knn_multi, params_multi, acc_multi = tune_knn(Xm_train_s, ym_train, Xm_test_s, ym_test, 'multiclass')
|
||||||
|
|
||||||
|
print(f"\nAkurasi multi-class: {acc_multi:.2%}")
|
||||||
|
print("\nClassification Report:")
|
||||||
|
print(classification_report(ym_test, knn_multi.predict(Xm_test_s), target_names=multiclass_encoder.classes_))
|
||||||
|
print("Confusion Matrix:")
|
||||||
|
print(confusion_matrix(ym_test, knn_multi.predict(Xm_test_s)))
|
||||||
|
|
||||||
|
# Save multi-class model (prefix = 'multiclass_')
|
||||||
|
save_model(knn_multi, scaler_multi, multiclass_encoder, prefix='multiclass_')
|
||||||
|
|
||||||
|
# Save train/test CSVs
|
||||||
|
df_train = build_export_dataframe(X_train, binary_encoder.inverse_transform(y_train), p_train, feature_names)
|
||||||
|
df_train.to_csv('features/data_train.csv', index=False)
|
||||||
|
df_test = build_export_dataframe(X_test, binary_encoder.inverse_transform(y_test), p_test, feature_names)
|
||||||
|
df_test.to_csv('features/data_test.csv', index=False)
|
||||||
|
|
||||||
# 9. Analyze features
|
# 9. Analyze features
|
||||||
print("\n10. ANALISIS FITUR...")
|
print("\n9. ANALISIS FITUR...")
|
||||||
analyze_features()
|
analyze_features()
|
||||||
|
|
||||||
# Calculate feature statistics
|
|
||||||
print("\nRATA-RATA FITUR PER KELAS:")
|
print("\nRATA-RATA FITUR PER KELAS:")
|
||||||
stats = df_all.groupby('label_name')[feature_names_for_export].mean()
|
print(df_all.groupby('label_name')[feature_names].mean())
|
||||||
print(stats)
|
|
||||||
|
|
||||||
# Save model performance
|
# Save performance
|
||||||
performance = {
|
bin_prec, bin_rec, bin_f1, _ = precision_recall_fscore_support(
|
||||||
'accuracy': accuracy,
|
y_test, knn_bin.predict(X_test_s), average='binary'
|
||||||
'precision': precision,
|
)
|
||||||
'recall': recall,
|
multi_prec, multi_rec, multi_f1, _ = precision_recall_fscore_support(
|
||||||
'f1_score': f1,
|
ym_test, knn_multi.predict(Xm_test_s), average='weighted'
|
||||||
'training_samples': X_train.shape[0],
|
)
|
||||||
'testing_samples': X_test.shape[0]
|
perf = {
|
||||||
|
'binary_accuracy': acc_bin, 'multiclass_accuracy': acc_multi,
|
||||||
|
'binary_precision': bin_prec, 'binary_recall': bin_rec, 'binary_f1': bin_f1,
|
||||||
|
'multiclass_precision': multi_prec, 'multiclass_recall': multi_rec, 'multiclass_f1': multi_f1,
|
||||||
|
'training_samples': X_train.shape[0], 'testing_samples': X_test.shape[0]
|
||||||
}
|
}
|
||||||
|
pd.DataFrame([perf]).to_csv('results/model_performance.csv', index=False)
|
||||||
perf_df = pd.DataFrame([performance])
|
|
||||||
perf_df.to_csv('results/model_performance.csv', index=False)
|
|
||||||
|
|
||||||
print("\n" + "=" * 50)
|
print("\n" + "=" * 50)
|
||||||
print("TRAINING SELESAI!")
|
print("TRAINING SELESAI!")
|
||||||
print("=" * 50)
|
print("=" * 50)
|
||||||
print(f"\nAkurasi model: {accuracy:.2%}")
|
print(f"\nBinary (sehat/sakit): {acc_bin:.2%}")
|
||||||
print("Model disimpan di: models/knn_model.pkl")
|
print(f"Multi-class (jenis): {acc_multi:.2%}")
|
||||||
print("Fitur disimpan di: features/")
|
print("Model binary → models/knn_model.pkl")
|
||||||
print("Hasil analisis di: results/")
|
print("Model multi → models/multiclass_knn_model.pkl")
|
||||||
|
print("Fitur → features/ | Hasil → results/")
|
||||||
|
|
||||||
return knn, scaler, label_encoder, accuracy
|
return knn_bin, scaler_bin, binary_encoder, knn_multi, scaler_multi, multiclass_encoder, acc_bin, acc_multi
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Check dataset structure
|
# Check dataset structure
|
||||||
if not os.path.exists('dataset'):
|
if not os.path.exists('dataset'):
|
||||||
print("ERROR: Folder 'dataset' tidak ditemukan!")
|
print("ERROR: Folder 'dataset' tidak ditemukan!")
|
||||||
print("\nBuat struktur folder berikut:")
|
print("\nBuat struktur folder berikut:")
|
||||||
print("pmk_detection_desktop/")
|
print("deteksi_PMK/")
|
||||||
print("├── dataset/")
|
print("├── dataset/")
|
||||||
print("│ ├── healthy/ (isi dengan gambar sapi sehat)")
|
print("│ ├── healthy/ (gambar sapi sehat)")
|
||||||
print("│ └── sick/ (isi dengan gambar sapi sakit)")
|
print("│ ├── pmk_oral/ (PMK oral)")
|
||||||
|
print("│ ├── pmk_podal/ (PMK podal/kaki)")
|
||||||
|
print("│ ├── pmk_laktasi/ (PMK laktasi/ambing)")
|
||||||
|
print("│ └── pmk_akut_general/ (PMK akut general)")
|
||||||
print("└── ...")
|
print("└── ...")
|
||||||
|
|
||||||
# Create directories
|
# Create directories
|
||||||
os.makedirs('dataset/healthy', exist_ok=True)
|
for dir_name in ['healthy', 'pmk_oral', 'pmk_podal', 'pmk_laktasi', 'pmk_akut_general']:
|
||||||
os.makedirs('dataset/sick', exist_ok=True)
|
os.makedirs(f'dataset/{dir_name}', exist_ok=True)
|
||||||
os.makedirs('features', exist_ok=True)
|
os.makedirs('features', exist_ok=True)
|
||||||
os.makedirs('models', exist_ok=True)
|
os.makedirs('models', exist_ok=True)
|
||||||
os.makedirs('results', exist_ok=True)
|
os.makedirs('results', exist_ok=True)
|
||||||
|
|
||||||
print("\nFolder telah dibuat. Silakan tambahkan gambar ke:")
|
print("\nFolder telah dibuat. Silakan tambahkan gambar ke:")
|
||||||
print(" - dataset/healthy/ untuk gambar sapi sehat")
|
print(" - dataset/healthy/ untuk gambar sapi sehat")
|
||||||
print(" - dataset/sick/ untuk gambar sapi sakit")
|
print(" - dataset/pmk_oral/ untuk PMK oral")
|
||||||
|
print(" - dataset/pmk_podal/ untuk PMK podal")
|
||||||
|
print(" - dataset/pmk_laktasi/ untuk PMK laktasi")
|
||||||
|
print(" - dataset/pmk_akut_general/ untuk PMK akut general")
|
||||||
|
print("\nAtau buat folder baru berawalan pmk_ untuk jenis penyakit lain.")
|
||||||
|
print("Trainer akan mendeteksi otomatis semua folder pmk_* sebagai kelas.")
|
||||||
print("\nKemudian jalankan script ini kembali.")
|
print("\nKemudian jalankan script ini kembali.")
|
||||||
else:
|
else:
|
||||||
# Train model
|
# Train model
|
||||||
model, scaler, label_encoder, accuracy = train_knn_model()
|
(knn_bin, scaler_bin, binary_encoder,
|
||||||
|
knn_multi, scaler_multi, multiclass_encoder,
|
||||||
|
acc_bin, acc_multi) = train_knn_model()
|
||||||
|
|
@ -2,99 +2,109 @@ import numpy as np
|
||||||
import cv2
|
import cv2
|
||||||
from skimage.feature import graycomatrix, graycoprops
|
from skimage.feature import graycomatrix, graycoprops
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from sqlalchemy import Extract
|
|
||||||
|
|
||||||
class FeatureExtractor:
|
class FeatureExtractor:
|
||||||
def __init__(self):
|
def __init__(self, n_hist_bins=8):
|
||||||
# Fitur: Average RGB (3) + GLCM (4) = 7 features total
|
self.n_hist_bins = n_hist_bins
|
||||||
self.feature_names = ['avg_red', 'avg_green', 'avg_blue',
|
self.feature_names = [
|
||||||
'contrast', 'homogeneity', 'correlation', 'energy']
|
# RGB average (3)
|
||||||
|
'avg_red', 'avg_green', 'avg_blue',
|
||||||
|
# HSV mean (3)
|
||||||
|
'mean_hue', 'mean_saturation', 'mean_value',
|
||||||
|
# HSV std (3)
|
||||||
|
'std_hue', 'std_saturation', 'std_value',
|
||||||
|
# GLCM (6)
|
||||||
|
'contrast', 'homogeneity', 'correlation', 'energy',
|
||||||
|
'dissimilarity', 'ASM',
|
||||||
|
# Color histogram (3 channels x n_hist_bins)
|
||||||
|
*[f'hist_r_{i}' for i in range(n_hist_bins)],
|
||||||
|
*[f'hist_g_{i}' for i in range(n_hist_bins)],
|
||||||
|
*[f'hist_b_{i}' for i in range(n_hist_bins)],
|
||||||
|
# Hu moments (7)
|
||||||
|
*[f'hu_moment_{i+1}' for i in range(7)],
|
||||||
|
]
|
||||||
|
|
||||||
def extract_rgb_average(self, image_rgb):
|
def extract_rgb_average(self, image_rgb):
|
||||||
"""Extract average values for R, G, B channels
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
- image_rgb: RGB image (uint8)
|
|
||||||
|
|
||||||
Return: list [avg_red, avg_green, avg_blue]
|
|
||||||
"""
|
|
||||||
if image_rgb is None:
|
if image_rgb is None:
|
||||||
print("[WARNING] image_rgb is None in extract_rgb_average")
|
return [0.0, 0.0, 0.0]
|
||||||
|
try:
|
||||||
|
return [np.mean(image_rgb[:, :, c]) for c in range(3)]
|
||||||
|
except Exception:
|
||||||
return [0.0, 0.0, 0.0]
|
return [0.0, 0.0, 0.0]
|
||||||
|
|
||||||
|
def extract_hsv_features(self, image_rgb):
|
||||||
|
if image_rgb is None:
|
||||||
|
return [0.0] * 6
|
||||||
try:
|
try:
|
||||||
avg_red = np.mean(image_rgb[:, :, 0])
|
hsv = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2HSV).astype(np.float32)
|
||||||
avg_green = np.mean(image_rgb[:, :, 1])
|
hsv[:, :, 0] *= 360.0 / 180.0 # hue 0-360
|
||||||
avg_blue = np.mean(image_rgb[:, :, 2])
|
means = [np.mean(hsv[:, :, c]) for c in range(3)]
|
||||||
return [avg_red, avg_green, avg_blue]
|
stds = [np.std(hsv[:, :, c]) for c in range(3)]
|
||||||
except Exception as e:
|
return means + stds
|
||||||
print(f"[ERROR] extract_rgb_average failed: {str(e)}")
|
except Exception:
|
||||||
return [0.0, 0.0, 0.0]
|
return [0.0] * 6
|
||||||
|
|
||||||
def glcm_features(self, gray_image):
|
def glcm_features(self, gray_image):
|
||||||
"""Extract GLCM texture features (4)
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
- gray_image: Grayscale image hasil threshold (uint8)
|
|
||||||
|
|
||||||
Return: list [contrast, homogeneity, correlation, energy]
|
|
||||||
"""
|
|
||||||
# Validate input
|
|
||||||
if gray_image is None:
|
if gray_image is None:
|
||||||
print("[WARNING] gray_image is None in glcm_features")
|
return [0.0] * 6
|
||||||
return [0.0, 0.0, 0.0, 0.0]
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
gray = gray_image.astype(np.uint8)
|
gray = gray_image.astype(np.uint8)
|
||||||
|
|
||||||
glcm = graycomatrix(gray, distances=[1, 2, 3],
|
glcm = graycomatrix(gray, distances=[1, 2, 3],
|
||||||
angles=[0, np.pi/4, np.pi/2, 3*np.pi/4],
|
angles=[0, np.pi / 4, np.pi / 2, 3 * np.pi / 4],
|
||||||
levels=256, symmetric=True, normed=True)
|
levels=256, symmetric=True, normed=True)
|
||||||
|
props = ['contrast', 'homogeneity', 'correlation', 'energy',
|
||||||
|
'dissimilarity', 'ASM']
|
||||||
|
return [np.mean(graycoprops(glcm, prop)) for prop in props]
|
||||||
|
except Exception:
|
||||||
|
return [0.0] * 6
|
||||||
|
|
||||||
|
def extract_color_histogram(self, image_rgb):
|
||||||
|
if image_rgb is None:
|
||||||
|
return [0.0] * (3 * self.n_hist_bins)
|
||||||
|
try:
|
||||||
features = []
|
features = []
|
||||||
for prop in ['contrast', 'homogeneity', 'correlation', 'energy']:
|
for c in range(3):
|
||||||
prop_values = graycoprops(glcm, prop)
|
hist = cv2.calcHist([image_rgb], [c], None,
|
||||||
features.append(np.mean(prop_values))
|
[self.n_hist_bins], [0, 256])
|
||||||
|
hist = hist.flatten() / (image_rgb.shape[0] * image_rgb.shape[1])
|
||||||
|
features.extend(hist.tolist())
|
||||||
return features
|
return features
|
||||||
except Exception as e:
|
except Exception:
|
||||||
print(f"[ERROR] glcm_features failed: {str(e)}")
|
return [0.0] * (3 * self.n_hist_bins)
|
||||||
return [0.0, 0.0, 0.0, 0.0]
|
|
||||||
|
def extract_hu_moments(self, gray_processed):
|
||||||
|
if gray_processed is None:
|
||||||
|
return [0.0] * 7
|
||||||
|
try:
|
||||||
|
binary = (gray_processed > 0).astype(np.uint8) * 255
|
||||||
|
moments = cv2.moments(binary)
|
||||||
|
hu = cv2.HuMoments(moments)
|
||||||
|
# Log-scale Hu moments for numerical stability
|
||||||
|
hu = [-np.sign(h) * np.log10(np.abs(h) + 1e-10) for h in hu.flatten()]
|
||||||
|
return hu
|
||||||
|
except Exception:
|
||||||
|
return [0.0] * 7
|
||||||
|
|
||||||
def extract_all_features(self, image_rgb, gray_processed):
|
def extract_all_features(self, image_rgb, gray_processed):
|
||||||
"""Extract 7 features: Average RGB (3) + GLCM (4)
|
|
||||||
|
|
||||||
Parameters:
|
|
||||||
- image_rgb: RGB image from preprocessing pipeline (uint8)
|
|
||||||
- gray_processed: Grayscale hasil threshold dari preprocessing pipeline (uint8)
|
|
||||||
|
|
||||||
Return: list of 7 features
|
|
||||||
"""
|
|
||||||
# Validate inputs
|
|
||||||
if image_rgb is None:
|
if image_rgb is None:
|
||||||
print("[ERROR] image_rgb is None in extract_all_features")
|
print("[ERROR] image_rgb is None in extract_all_features")
|
||||||
return [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
|
return [0.0] * len(self.feature_names)
|
||||||
if gray_processed is None:
|
if gray_processed is None:
|
||||||
print("[ERROR] gray_processed is None in extract_all_features")
|
print("[ERROR] gray_processed is None in extract_all_features")
|
||||||
return [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
|
return [0.0] * len(self.feature_names)
|
||||||
|
|
||||||
# Extract average RGB values (3)
|
features = []
|
||||||
rgb_features = self.extract_rgb_average(image_rgb)
|
features.extend(self.extract_rgb_average(image_rgb))
|
||||||
|
features.extend(self.extract_hsv_features(image_rgb))
|
||||||
# Extract GLCM texture features (4)
|
features.extend(self.glcm_features(gray_processed))
|
||||||
glcm_features_list = self.glcm_features(gray_processed)
|
features.extend(self.extract_color_histogram(image_rgb))
|
||||||
|
features.extend(self.extract_hu_moments(gray_processed))
|
||||||
all_features = rgb_features + glcm_features_list
|
return features
|
||||||
|
|
||||||
return all_features
|
|
||||||
|
|
||||||
def save_features_to_csv(self, features_list, labels, filename):
|
def save_features_to_csv(self, features_list, labels, filename):
|
||||||
"""Save extracted features to CSV"""
|
|
||||||
df = pd.DataFrame(features_list, columns=self.feature_names)
|
df = pd.DataFrame(features_list, columns=self.feature_names)
|
||||||
df['label'] = labels
|
df['label'] = labels
|
||||||
|
|
||||||
# Save to CSV
|
|
||||||
df.to_csv(filename, index=False)
|
df.to_csv(filename, index=False)
|
||||||
print(f"Fitur disimpan ke: {filename}")
|
print(f"Fitur disimpan ke: {filename}")
|
||||||
|
|
||||||
return df
|
return df
|
||||||
|
|
@ -37,6 +37,11 @@ def _save_preprocessed_training_images(img_path, class_name, original_filename,
|
||||||
def prepare_dataset(data_dir='dataset'):
|
def prepare_dataset(data_dir='dataset'):
|
||||||
"""
|
"""
|
||||||
Prepare dataset from directory structure using enhanced preprocessing pipeline
|
Prepare dataset from directory structure using enhanced preprocessing pipeline
|
||||||
|
|
||||||
|
Auto-detects class directories:
|
||||||
|
- 'healthy' → label 'sehat'
|
||||||
|
- Any directory starting with 'pmk_' → label = directory name
|
||||||
|
- 'sick' → label 'sakit' (backward compat)
|
||||||
"""
|
"""
|
||||||
features = []
|
features = []
|
||||||
labels = []
|
labels = []
|
||||||
|
|
@ -44,11 +49,22 @@ def prepare_dataset(data_dir='dataset'):
|
||||||
|
|
||||||
extractor = FeatureExtractor()
|
extractor = FeatureExtractor()
|
||||||
|
|
||||||
# Define class directories
|
# Auto-detect class directories
|
||||||
class_dirs = {
|
class_dirs = {}
|
||||||
'healthy': 'sehat',
|
if not os.path.exists(data_dir):
|
||||||
'sick': 'sakit'
|
raise ValueError(f"Directory {data_dir} tidak ditemukan!")
|
||||||
}
|
for entry in sorted(os.listdir(data_dir)):
|
||||||
|
entry_path = os.path.join(data_dir, entry)
|
||||||
|
if os.path.isdir(entry_path):
|
||||||
|
if entry == 'healthy':
|
||||||
|
class_dirs[entry] = 'sehat'
|
||||||
|
elif entry.startswith('pmk_'):
|
||||||
|
class_dirs[entry] = entry
|
||||||
|
elif entry == 'sick':
|
||||||
|
class_dirs[entry] = 'sakit'
|
||||||
|
|
||||||
|
if not class_dirs:
|
||||||
|
raise ValueError(f"Tidak ada folder kelas yang ditemukan di {data_dir}!")
|
||||||
|
|
||||||
resize_dir = os.path.join('uploads', 'resize')
|
resize_dir = os.path.join('uploads', 'resize')
|
||||||
threshold_dir = os.path.join('uploads', 'threshold')
|
threshold_dir = os.path.join('uploads', 'threshold')
|
||||||
|
|
@ -63,10 +79,10 @@ def prepare_dataset(data_dir='dataset'):
|
||||||
if img_file.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp')):
|
if img_file.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp')):
|
||||||
img_path = os.path.join(class_dir, img_file)
|
img_path = os.path.join(class_dir, img_file)
|
||||||
try:
|
try:
|
||||||
_, img_resized, _ = preprocess_image(img_path, target_size=(128, 128))
|
_, img_resized, _ = preprocess_image(img_path, target_size=(256, 256))
|
||||||
# Use threshold-based preprocessing pipeline
|
# Use threshold-based preprocessing pipeline
|
||||||
# Returns: img_rgb (for RGB features), gray_processed (for GLCM)
|
# Returns: img_rgb (for RGB features), gray_processed (for GLCM)
|
||||||
img_rgb, gray_eq = preprocess_pipeline(img_path, target_size=(128, 128))
|
img_rgb, gray_eq = preprocess_pipeline(img_path, target_size=(256, 256))
|
||||||
|
|
||||||
_save_preprocessed_training_images(
|
_save_preprocessed_training_images(
|
||||||
img_path=img_path,
|
img_path=img_path,
|
||||||
|
|
@ -95,21 +111,21 @@ def prepare_dataset(data_dir='dataset'):
|
||||||
|
|
||||||
return np.array(features), np.array(labels), image_paths
|
return np.array(features), np.array(labels), image_paths
|
||||||
|
|
||||||
def save_model(model, scaler, label_encoder):
|
def save_model(model, scaler, label_encoder, prefix=''):
|
||||||
"""Save trained model and preprocessing objects"""
|
"""Save trained model and preprocessing objects"""
|
||||||
os.makedirs('models', exist_ok=True)
|
os.makedirs('models', exist_ok=True)
|
||||||
|
|
||||||
joblib.dump(model, 'models/knn_model.pkl')
|
joblib.dump(model, f'models/{prefix}knn_model.pkl')
|
||||||
joblib.dump(scaler, 'models/scaler.pkl')
|
joblib.dump(scaler, f'models/{prefix}scaler.pkl')
|
||||||
joblib.dump(label_encoder, 'models/label_encoder.pkl')
|
joblib.dump(label_encoder, f'models/{prefix}label_encoder.pkl')
|
||||||
|
|
||||||
print("Model disimpan di folder 'models/'")
|
print(f"Model disimpan di folder 'models/' (prefix='{prefix}')")
|
||||||
|
|
||||||
def load_model():
|
def load_model(prefix=''):
|
||||||
"""Load trained model and preprocessing objects"""
|
"""Load trained model and preprocessing objects"""
|
||||||
model = joblib.load('models/knn_model.pkl')
|
model = joblib.load(f'models/{prefix}knn_model.pkl')
|
||||||
scaler = joblib.load('models/scaler.pkl')
|
scaler = joblib.load(f'models/{prefix}scaler.pkl')
|
||||||
label_encoder = joblib.load('models/label_encoder.pkl')
|
label_encoder = joblib.load(f'models/{prefix}label_encoder.pkl')
|
||||||
|
|
||||||
return model, scaler, label_encoder
|
return model, scaler, label_encoder
|
||||||
|
|
||||||
|
|
@ -140,7 +156,7 @@ def estimate_prediction_confidence(model, features_scaled):
|
||||||
support = (top_weight + 1.0) / (total_weight + n_classes)
|
support = (top_weight + 1.0) / (total_weight + n_classes)
|
||||||
margin = (top_weight - second_weight) / total_weight if total_weight > 0 else 0.0
|
margin = (top_weight - second_weight) / total_weight if total_weight > 0 else 0.0
|
||||||
confidence = (0.85 * support + 0.15 * margin) * 100.0
|
confidence = (0.85 * support + 0.15 * margin) * 100.0
|
||||||
return float(np.clip(confidence, 50.0, 98.5))
|
return float(np.clip(confidence, 50.0, 89.5))
|
||||||
|
|
||||||
probabilities = model.predict_proba(features_array)[0]
|
probabilities = model.predict_proba(features_array)[0]
|
||||||
probabilities = np.asarray(probabilities, dtype=float)
|
probabilities = np.asarray(probabilities, dtype=float)
|
||||||
|
|
@ -151,7 +167,7 @@ def estimate_prediction_confidence(model, features_scaled):
|
||||||
second = 0.0
|
second = 0.0
|
||||||
|
|
||||||
confidence = (0.9 * top + 0.1 * max(top - second, 0.0)) * 100.0
|
confidence = (0.9 * top + 0.1 * max(top - second, 0.0)) * 100.0
|
||||||
return float(np.clip(confidence, 50.0, 98.5))
|
return float(np.clip(confidence, 50.0, 89.5))
|
||||||
except Exception:
|
except Exception:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
@ -203,27 +219,26 @@ def analyze_features():
|
||||||
label_column = 'label_name' if 'label_name' in df.columns else 'label'
|
label_column = 'label_name' if 'label_name' in df.columns else 'label'
|
||||||
|
|
||||||
# Create feature comparison plot
|
# Create feature comparison plot
|
||||||
fig, axes = plt.subplots(3, 5, figsize=(20, 12))
|
n_features = min(len(feature_columns), 30)
|
||||||
|
n_cols = 5
|
||||||
|
n_rows = int(np.ceil(n_features / n_cols))
|
||||||
|
fig, axes = plt.subplots(n_rows, n_cols, figsize=(20, 4 * n_rows))
|
||||||
axes = axes.ravel()
|
axes = axes.ravel()
|
||||||
|
|
||||||
for idx, feature in enumerate(feature_columns[:15]):
|
for idx in range(n_features):
|
||||||
if label_column == 'label_name':
|
feature = feature_columns[idx]
|
||||||
healthy_vals = df[df[label_column] == 'normal'][feature]
|
unique_labels = sorted(df[label_column].unique())
|
||||||
sick_vals = df[df[label_column] == 'defective'][feature]
|
cmap = plt.cm.Set1
|
||||||
healthy_label = 'Normal'
|
colors = [cmap(i % 9) for i in range(len(unique_labels))]
|
||||||
sick_label = 'Defective'
|
|
||||||
else:
|
|
||||||
healthy_vals = df[df[label_column] == 'sehat'][feature]
|
|
||||||
sick_vals = df[df[label_column] == 'sakit'][feature]
|
|
||||||
healthy_label = 'Sehat'
|
|
||||||
sick_label = 'Sakit'
|
|
||||||
|
|
||||||
axes[idx].hist(healthy_vals, alpha=0.5, label=healthy_label, bins=20, color='green')
|
for i, label_val in enumerate(unique_labels):
|
||||||
axes[idx].hist(sick_vals, alpha=0.5, label=sick_label, bins=20, color='red')
|
vals = df[df[label_column] == label_val][feature]
|
||||||
|
axes[idx].hist(vals, alpha=0.6, label=label_val, bins=20,
|
||||||
|
color=colors[i])
|
||||||
axes[idx].set_title(feature)
|
axes[idx].set_title(feature)
|
||||||
axes[idx].legend()
|
axes[idx].legend()
|
||||||
|
|
||||||
for idx in range(len(feature_columns), len(axes)):
|
for idx in range(n_features, len(axes)):
|
||||||
axes[idx].axis('off')
|
axes[idx].axis('off')
|
||||||
|
|
||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,7 @@ class Prediction(Base):
|
||||||
prediction = Column(String(50)) # 'sehat' or 'sakit'
|
prediction = Column(String(50)) # 'sehat' or 'sakit'
|
||||||
confidence = Column(Float)
|
confidence = Column(Float)
|
||||||
features = Column(Text) # JSON string of features
|
features = Column(Text) # JSON string of features
|
||||||
|
images_data = Column(Text, nullable=True) # JSON array of per-image data for multi-file upload
|
||||||
timestamp = Column(DateTime, default=lambda: datetime.datetime.now(TZ_INDONESIA).replace(tzinfo=None))
|
timestamp = Column(DateTime, default=lambda: datetime.datetime.now(TZ_INDONESIA).replace(tzinfo=None))
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -234,19 +235,6 @@ DEFAULT_EXPERT_DISEASES = [
|
||||||
],
|
],
|
||||||
'display_order': 3,
|
'display_order': 3,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
'code': 'P04',
|
|
||||||
'name': 'PMK_JUVENIL',
|
|
||||||
'description': 'PMK pada hewan muda yang biasanya terlihat dengan gejala berat seperti lemas, mudah berbaring, gangguan jantung, atau kematian mendadak.',
|
|
||||||
'solutions': [
|
|
||||||
'Pisahkan hewan muda yang terlihat lemah',
|
|
||||||
'Pantau suhu tubuh dan detak jantung',
|
|
||||||
'Segera hubungi dokter hewan karena kondisi bisa cepat memburuk',
|
|
||||||
'Berikan pakan dan minum yang cukup bila masih mau makan',
|
|
||||||
'Jangan biarkan hewan muda bercampur dengan ternak lain',
|
|
||||||
],
|
|
||||||
'display_order': 4,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'code': 'P05',
|
'code': 'P05',
|
||||||
'name': 'PMK_AKUT_GENERAL',
|
'name': 'PMK_AKUT_GENERAL',
|
||||||
|
|
@ -258,7 +246,7 @@ DEFAULT_EXPERT_DISEASES = [
|
||||||
'Berikan pakan yang mudah dimakan bila masih mau makan',
|
'Berikan pakan yang mudah dimakan bila masih mau makan',
|
||||||
'Jaga kebersihan kandang dan alat agar penularan tidak meluas',
|
'Jaga kebersihan kandang dan alat agar penularan tidak meluas',
|
||||||
],
|
],
|
||||||
'display_order': 5,
|
'display_order': 4,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -286,17 +274,10 @@ DEFAULT_EXPERT_RULES = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'code': 'FC04',
|
'code': 'FC04',
|
||||||
'symptom_codes': ['G01', 'G13', 'G28', 'G29'],
|
|
||||||
'result_disease_code': 'P04',
|
|
||||||
'description': 'PMK juvenil: demam, miokarditis/kematian mendadak, takikardia atau irama jantung tidak normal, serta sesak napas atau gagal jantung',
|
|
||||||
'display_order': 4,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'code': 'FC05',
|
|
||||||
'symptom_codes': ['G01', 'G02', 'G03', 'G04', 'G05', 'G06', 'G07', 'G09', 'G11', 'G12', 'G14', 'G18', 'G20', 'G22', 'G23', 'G24', 'G26'],
|
'symptom_codes': ['G01', 'G02', 'G03', 'G04', 'G05', 'G06', 'G07', 'G09', 'G11', 'G12', 'G14', 'G18', 'G20', 'G22', 'G23', 'G24', 'G26'],
|
||||||
'result_disease_code': 'P05',
|
'result_disease_code': 'P05',
|
||||||
'description': 'PMK akut: demam, air liur berlebihan, luka mulut, nyeri setelah lepuh pecah, lepuh kaki/kuku, lepuh puting, produksi susu menurun, nafsu makan turun, lesu, lepuh moncong, luka meluas, edema/radang, bengkak celah kuku, telapak kaki longgar, dan puting retak',
|
'description': 'PMK akut: demam, air liur berlebihan, luka mulut, nyeri setelah lepuh pecah, lepuh kaki/kuku, lepuh puting, produksi susu menurun, nafsu makan turun, lesu, lepuh moncong, luka meluas, edema/radang, bengkak celah kuku, telapak kaki longgar, dan puting retak',
|
||||||
'display_order': 5,
|
'display_order': 4,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -320,6 +301,7 @@ def init_mysql_tables():
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
migrate_diagnosis_history_schema()
|
migrate_diagnosis_history_schema()
|
||||||
migrate_expert_rule_disease_fk()
|
migrate_expert_rule_disease_fk()
|
||||||
|
migrate_add_images_data_column()
|
||||||
seed_expert_knowledge(force=False)
|
seed_expert_knowledge(force=False)
|
||||||
sync_expert_rule_symptom_relations()
|
sync_expert_rule_symptom_relations()
|
||||||
print("Database tables initialized successfully")
|
print("Database tables initialized successfully")
|
||||||
|
|
@ -371,6 +353,24 @@ def migrate_expert_rule_disease_fk():
|
||||||
print(f"Warning: unable to add expert_rules disease foreign key: {e}")
|
print(f"Warning: unable to add expert_rules disease foreign key: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_add_images_data_column():
|
||||||
|
"""Add images_data column to predictions table if it doesn't exist."""
|
||||||
|
try:
|
||||||
|
inspector = inspect(engine)
|
||||||
|
if 'predictions' not in inspector.get_table_names():
|
||||||
|
return
|
||||||
|
column_names = {column['name'] for column in inspector.get_columns('predictions')}
|
||||||
|
if 'images_data' in column_names:
|
||||||
|
return
|
||||||
|
with engine.begin() as connection:
|
||||||
|
connection.execute(text(
|
||||||
|
"ALTER TABLE predictions ADD COLUMN images_data TEXT NULL AFTER features"
|
||||||
|
))
|
||||||
|
print("✓ Added images_data column to predictions table")
|
||||||
|
except SQLAlchemyError as e:
|
||||||
|
print(f"Warning: unable to add images_data column: {e}")
|
||||||
|
|
||||||
|
|
||||||
def sync_expert_rule_symptom_relations():
|
def sync_expert_rule_symptom_relations():
|
||||||
"""Backfill the expert_rules_expert_symptoms join table from stored symptom codes."""
|
"""Backfill the expert_rules_expert_symptoms join table from stored symptom codes."""
|
||||||
session = Session()
|
session = Session()
|
||||||
|
|
@ -452,6 +452,12 @@ def seed_expert_knowledge(force=False):
|
||||||
row.is_active = True
|
row.is_active = True
|
||||||
row.display_order = item.get('display_order', 0)
|
row.display_order = item.get('display_order', 0)
|
||||||
|
|
||||||
|
if force:
|
||||||
|
current_disease_codes = {d['code'] for d in DEFAULT_EXPERT_DISEASES}
|
||||||
|
current_rule_codes = {r['code'] for r in DEFAULT_EXPERT_RULES}
|
||||||
|
session.query(ExpertRule).filter(~ExpertRule.code.in_(current_rule_codes)).delete(synchronize_session='fetch')
|
||||||
|
session.query(ExpertDisease).filter(~ExpertDisease.code.in_(current_disease_codes)).delete(synchronize_session='fetch')
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
sync_expert_rule_symptom_relations()
|
sync_expert_rule_symptom_relations()
|
||||||
|
|
||||||
|
|
@ -589,6 +595,56 @@ def save_prediction_mysql(original_filename, filename, image_path, prediction, c
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def save_batch_prediction_mysql(images_data_list, timestamp=None):
|
||||||
|
"""
|
||||||
|
Save a batch of prediction results as a single row.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
images_data_list: List of dicts, each with:
|
||||||
|
- original_filename, filename, image_path
|
||||||
|
- prediction, pmk_type (or None), confidence
|
||||||
|
timestamp: Optional datetime
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
ID of saved prediction row
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
session = Session()
|
||||||
|
has_sick = any(img['prediction'].lower() == 'sakit' for img in images_data_list)
|
||||||
|
overall_prediction = 'sakit' if has_sick else 'sehat'
|
||||||
|
max_conf = max(img['confidence'] for img in images_data_list)
|
||||||
|
first = images_data_list[0]
|
||||||
|
|
||||||
|
features_dict = {
|
||||||
|
'batch_upload': True,
|
||||||
|
'image_count': len(images_data_list),
|
||||||
|
'sick_count': sum(1 for img in images_data_list if img['prediction'].lower() == 'sakit'),
|
||||||
|
'healthy_count': sum(1 for img in images_data_list if img['prediction'].lower() == 'sehat'),
|
||||||
|
}
|
||||||
|
|
||||||
|
images_json = json.dumps(images_data_list, default=str)
|
||||||
|
|
||||||
|
pred = Prediction(
|
||||||
|
original_filename=first['original_filename'],
|
||||||
|
filename=first['filename'],
|
||||||
|
image_path=first['image_path'],
|
||||||
|
prediction=overall_prediction,
|
||||||
|
confidence=float(max_conf),
|
||||||
|
features=json.dumps(features_dict, default=str),
|
||||||
|
images_data=images_json,
|
||||||
|
timestamp=timestamp or datetime.datetime.now(TZ_INDONESIA).replace(tzinfo=None)
|
||||||
|
)
|
||||||
|
|
||||||
|
session.add(pred)
|
||||||
|
session.commit()
|
||||||
|
pred_id = pred.id
|
||||||
|
session.close()
|
||||||
|
return pred_id
|
||||||
|
except SQLAlchemyError as e:
|
||||||
|
print(f"Error saving batch prediction to database: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
def get_recent_predictions_mysql(limit=10):
|
def get_recent_predictions_mysql(limit=10):
|
||||||
"""
|
"""
|
||||||
Get recent predictions from database
|
Get recent predictions from database
|
||||||
|
|
@ -613,6 +669,10 @@ def get_recent_predictions_mysql(limit=10):
|
||||||
features = json.loads(pred.features) if pred.features else {}
|
features = json.loads(pred.features) if pred.features else {}
|
||||||
except:
|
except:
|
||||||
features = {}
|
features = {}
|
||||||
|
try:
|
||||||
|
images_data = json.loads(pred.images_data) if pred.images_data else None
|
||||||
|
except:
|
||||||
|
images_data = None
|
||||||
|
|
||||||
source = _prediction_source_from_features(features)
|
source = _prediction_source_from_features(features)
|
||||||
diagnosis = get_diagnosis_by_prediction_id(pred.id)
|
diagnosis = get_diagnosis_by_prediction_id(pred.id)
|
||||||
|
|
@ -621,6 +681,8 @@ def get_recent_predictions_mysql(limit=10):
|
||||||
if diagnosis and isinstance(diagnosis, dict):
|
if diagnosis and isinstance(diagnosis, dict):
|
||||||
diagnosis_label = diagnosis.get('diagnosis', {}).get('nama') or diagnosis.get('diagnosis', {}).get('name')
|
diagnosis_label = diagnosis.get('diagnosis', {}).get('nama') or diagnosis.get('diagnosis', {}).get('name')
|
||||||
|
|
||||||
|
image_count = len(images_data) if images_data else 1
|
||||||
|
|
||||||
result.append({
|
result.append({
|
||||||
'id': pred.id,
|
'id': pred.id,
|
||||||
'original_filename': pred.original_filename,
|
'original_filename': pred.original_filename,
|
||||||
|
|
@ -632,6 +694,8 @@ def get_recent_predictions_mysql(limit=10):
|
||||||
'source': source,
|
'source': source,
|
||||||
'diagnosis': diagnosis,
|
'diagnosis': diagnosis,
|
||||||
'diagnosis_label': diagnosis_label,
|
'diagnosis_label': diagnosis_label,
|
||||||
|
'images_data': images_data,
|
||||||
|
'image_count': image_count,
|
||||||
'timestamp': pred.timestamp.isoformat() if pred.timestamp else None
|
'timestamp': pred.timestamp.isoformat() if pred.timestamp else None
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -665,6 +729,10 @@ def get_prediction_by_id(pred_id):
|
||||||
features = json.loads(pred.features) if pred.features else {}
|
features = json.loads(pred.features) if pred.features else {}
|
||||||
except:
|
except:
|
||||||
features = {}
|
features = {}
|
||||||
|
try:
|
||||||
|
images_data = json.loads(pred.images_data) if pred.images_data else None
|
||||||
|
except:
|
||||||
|
images_data = None
|
||||||
|
|
||||||
source = _prediction_source_from_features(features)
|
source = _prediction_source_from_features(features)
|
||||||
diagnosis = get_diagnosis_by_prediction_id(pred.id)
|
diagnosis = get_diagnosis_by_prediction_id(pred.id)
|
||||||
|
|
@ -672,6 +740,8 @@ def get_prediction_by_id(pred_id):
|
||||||
if diagnosis and isinstance(diagnosis, dict):
|
if diagnosis and isinstance(diagnosis, dict):
|
||||||
diagnosis_label = diagnosis.get('diagnosis', {}).get('nama') or diagnosis.get('diagnosis', {}).get('name')
|
diagnosis_label = diagnosis.get('diagnosis', {}).get('nama') or diagnosis.get('diagnosis', {}).get('name')
|
||||||
|
|
||||||
|
image_count = len(images_data) if images_data else 1
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
'id': pred.id,
|
'id': pred.id,
|
||||||
'original_filename': pred.original_filename,
|
'original_filename': pred.original_filename,
|
||||||
|
|
@ -683,6 +753,8 @@ def get_prediction_by_id(pred_id):
|
||||||
'source': source,
|
'source': source,
|
||||||
'diagnosis': diagnosis,
|
'diagnosis': diagnosis,
|
||||||
'diagnosis_label': diagnosis_label,
|
'diagnosis_label': diagnosis_label,
|
||||||
|
'images_data': images_data,
|
||||||
|
'image_count': image_count,
|
||||||
'timestamp': pred.timestamp.isoformat() if pred.timestamp else None
|
'timestamp': pred.timestamp.isoformat() if pred.timestamp else None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,7 @@ def validate_cattle_image(image_path, confidence_threshold=0.65):
|
||||||
|
|
||||||
def preprocess_image(
|
def preprocess_image(
|
||||||
image_path,
|
image_path,
|
||||||
target_size=(128, 128),
|
target_size=(256, 256),
|
||||||
apply_threshold=False,
|
apply_threshold=False,
|
||||||
thresh_method='otsu',
|
thresh_method='otsu',
|
||||||
thresh_val=127,
|
thresh_val=127,
|
||||||
|
|
@ -282,7 +282,7 @@ def preprocess_image(
|
||||||
|
|
||||||
def preprocess_pipeline(
|
def preprocess_pipeline(
|
||||||
image_path,
|
image_path,
|
||||||
target_size=(128, 128),
|
target_size=(256, 256),
|
||||||
apply_threshold=True,
|
apply_threshold=True,
|
||||||
thresh_method='otsu',
|
thresh_method='otsu',
|
||||||
thresh_val=127,
|
thresh_val=127,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue