JustFadjrin commited on
Commit
00017c2
·
1 Parent(s): fa6f400

Fix Space README metadata

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