Spaces:
Sleeping
Sleeping
| 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. |