batik-vit-api / README.md
JustFadjrin's picture
Fix Space README metadata
00017c2
metadata
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:

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:

GET  /
GET  /health
GET  /model-info
POST /predict

Health Check

Endpoint:

GET /health

Contoh response:

{
  "status": "ok",
  "device": "cpu",
  "model_dir": "JustFadjrin/batik-vit-model-classification",
  "num_labels": 20,
  "cors_origins": ["*"]
}

Prediksi Gambar

Endpoint:

POST /predict

Form data:

file: image

Query parameter:

top_k=5
use_tta=true

Contoh response:

{
  "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:

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:

MODEL_DIR=JustFadjrin/batik-vit-model-classification
TOP_K=5
CORS_ORIGINS=*

Untuk production, CORS_ORIGINS dapat diganti menjadi URL frontend Vercel.

Contoh:

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.