Spaces:
Sleeping
Sleeping
File size: 3,735 Bytes
ac55f65 fa6f400 00017c2 ac55f65 fa6f400 ac55f65 00017c2 fa6f400 00017c2 fa6f400 00017c2 fa6f400 00017c2 fa6f400 00017c2 fa6f400 00017c2 fa6f400 00017c2 fa6f400 00017c2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | ---
title: Batik ViT API
emoji: "🧵"
colorFrom: yellow
colorTo: red
sdk: docker
app_port: 8000
pinned: false
---
# Batik ViT API
Backend API untuk klasifikasi jenis batik menggunakan **FastAPI** dan model **Vision Transformer (ViT)**.
API ini digunakan oleh frontend website Batik ViT Classifier untuk menerima gambar batik, melakukan prediksi menggunakan model Machine Learning, lalu mengembalikan hasil klasifikasi ke frontend.
---
## Model
Model yang digunakan:
```text
JustFadjrin/batik-vit-model-classification
```
Model ini sudah diupload ke Hugging Face Model Hub dan akan diload otomatis oleh backend saat aplikasi berjalan.
---
## Endpoint
API menyediakan beberapa endpoint berikut:
```text
GET /
GET /health
GET /model-info
POST /predict
```
---
## Health Check
Endpoint:
```http
GET /health
```
Contoh response:
```json
{
"status": "ok",
"device": "cpu",
"model_dir": "JustFadjrin/batik-vit-model-classification",
"num_labels": 20,
"cors_origins": ["*"]
}
```
---
## Prediksi Gambar
Endpoint:
```http
POST /predict
```
Form data:
```text
file: image
```
Query parameter:
```text
top_k=5
use_tta=true
```
Contoh response:
```json
{
"status": "Model yakin",
"reason": "Confidence tinggi dan jarak prediksi pertama dengan kedua cukup jauh.",
"top_prediction": {
"label": "SulawesiSelatan_Lontara",
"confidence": 0.8501
},
"second_prediction": {
"label": "Aceh_Pintu_Aceh",
"confidence": 0.0123
},
"margin": 0.8378,
"predictions": [
{
"label": "SulawesiSelatan_Lontara",
"confidence": 0.8501
},
{
"label": "Aceh_Pintu_Aceh",
"confidence": 0.0123
}
]
}
```
---
## Status Keyakinan Model
API mengembalikan status keyakinan berdasarkan confidence dan margin antara prediksi pertama dan kedua.
Status yang digunakan:
```text
Model yakin
Model cukup yakin
Model belum yakin
```
Penjelasan:
- **Model yakin**: confidence tinggi dan jarak prediksi pertama dengan kedua cukup jauh.
- **Model cukup yakin**: prediksi utama cukup dominan, tetapi confidence belum terlalu tinggi.
- **Model belum yakin**: confidence rendah atau prediksi pertama terlalu dekat dengan prediksi kedua.
---
## Jenis Batik yang Dapat Dideteksi
Model saat ini dapat mengenali 20 jenis batik:
1. Aceh Pintu Aceh
2. Bali Barong
3. Bali Merak
4. DKI Ondel Ondel
5. Jawa Barat Megamendung
6. Jawa Timur Pring
7. Kalimantan Dayak
8. Lampung Gajah
9. Madura Mataketeran
10. Maluku Pala
11. NTB Lumbung
12. Papua Asmat
13. Papua Cendrawasih
14. Papua Tifa
15. Solo Parang
16. Sulawesi Selatan Lontara
17. Sumatera Barat Rumah Minang
18. Sumatera Utara Boraspati
19. Yogyakarta Kawung
20. Yogyakarta Parang
---
## Catatan
Model ini tidak menjamin hasil prediksi 100% akurat karena dataset yang digunakan masih terbatas dan jenis batik di Indonesia sangat banyak.
Hasil prediksi dapat dipengaruhi oleh:
- kualitas gambar,
- pencahayaan,
- sudut pengambilan foto,
- gambar blur,
- background,
- kemiripan motif antar jenis batik,
- gambar batik yang tidak termasuk dalam dataset training.
Jika gambar yang dimasukkan tidak mirip dengan data yang pernah dipelajari model, sistem dapat menampilkan status **Model belum yakin** atau memberikan prediksi yang kurang tepat.
---
## Environment
Environment default yang digunakan di Dockerfile:
```env
MODEL_DIR=JustFadjrin/batik-vit-model-classification
TOP_K=5
CORS_ORIGINS=*
```
Untuk production, `CORS_ORIGINS` dapat diganti menjadi URL frontend Vercel.
Contoh:
```env
CORS_ORIGINS=https://nama-project-kamu.vercel.app
```
---
## Dibuat Untuk
Project ini dibuat untuk kebutuhan pembelajaran, penelitian, dan pengembangan aplikasi klasifikasi gambar batik berbasis Machine Learning. |