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.