--- 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.