--- title: BrainScan AI emoji: 🧠 colorFrom: red colorTo: blue sdk: gradio app_file: app.py pinned: false license: mit --- # BrainScan AI — Hybrid EfficientNet-ViT Klasifikasi CT-Scan/MRI otak (Alzheimer, Intracranial Hemorrhage, Normal, Ischemic Stroke, Brain Tumor) menggunakan model hybrid EfficientNet-B3 + custom Vision Transformer dengan Cross-Modal Attention Fusion. Model checkpoint diambil otomatis dari: https://huggingface.co/Marksnb/brain-hybrid-efficientnet-vit ## Cara Pakai lewat Endpoint (API) Space ini otomatis punya REST API bawaan Gradio di endpoint `/analyze` (nama ini diatur lewat `api_name="analyze"` di `app.py`). Ganti `SPACE_URL` di bawah dengan URL Space kamu, contoh: `https://username-brainscan-ai.hf.space`. ### Opsi 1 — Pakai `gradio_client` (Python, paling mudah) ```bash pip install gradio_client ``` ```python from gradio_client import Client, handle_file client = Client("SPACE_URL") # atau "username/brainscan-ai" kalau Space public result = client.predict( handle_file("path/ke/gambar_otak.jpg"), api_name="/analyze" ) label_scores, heatmap_path, summary = result print(label_scores) # dict probabilitas tiap kelas print(summary) # ringkasan teks prediksi print(heatmap_path) # path lokal file heatmap hasil download otomatis ``` Kalau Space kamu private, tambahkan token: ```python client = Client("SPACE_URL", hf_token="hf_xxxxxxxxxxxxxxxxxxxx") ``` ### Opsi 2 — REST API langsung (curl / bahasa apa pun) Gradio (versi 5+) memakai pola *submit lalu poll*: POST dulu untuk submit job, lalu GET untuk stream hasilnya pakai `event_id` yang didapat. **Langkah 1 — Submit gambar (base64):** ```bash curl -X POST "SPACE_URL/gradio_api/call/analyze" \ -H "Content-Type: application/json" \ -d '{ "data": [ { "path": null, "url": "data:image/jpeg;base64,'"$(base64 -w0 gambar_otak.jpg)"'", "meta": {"_type": "gradio.FileData"} } ] }' ``` Response berisi `event_id`, contoh: ```json {"event_id": "abc123..."} ``` **Langkah 2 — Ambil hasil pakai event_id:** ```bash curl -N "SPACE_URL/gradio_api/call/analyze/abc123..." ``` Response berupa Server-Sent Events (SSE), baris terakhir bertipe `event: complete` berisi array JSON hasil: `[label_scores, heatmap_fileinfo, summary_markdown]`. ### Opsi 3 — Upload file lewat endpoint upload bawaan Gradio Kalau gambar berupa file (bukan base64), upload dulu ke endpoint `/gradio_api/upload`, lalu pakai path hasil upload itu di payload `data` pada langkah submit di atas: ```bash curl -X POST "SPACE_URL/gradio_api/upload" \ -F "files=@gambar_otak.jpg" # -> mengembalikan array path, misal: ["/tmp/xxx/gambar_otak.jpg"] curl -X POST "SPACE_URL/gradio_api/call/analyze" \ -H "Content-Type: application/json" \ -d '{ "data": [ {"path": "/tmp/xxx/gambar_otak.jpg", "meta": {"_type": "gradio.FileData"}} ] }' ``` ### Format Output Endpoint `/analyze` mengembalikan 3 nilai (urut sesuai `outputs=` di `app.py`): | # | Nilai | Tipe | Keterangan | |---|-------------------|--------------------------------|-----------------------------------------------| | 1 | `label_scores` | `dict[str, float]` | Probabilitas tiap kelas (0–1) | | 2 | `heatmap` | file gambar (FileData) | Overlay peta atensi ViT | | 3 | `summary` | `string` (markdown) | Ringkasan prediksi + confidence + disclaimer | ### Cara paling praktis melihat contoh payload persis Buka `SPACE_URL/?view=api` di browser (halaman "Use via API" bawaan Gradio) — di situ tersedia contoh kode Python, JavaScript, dan cURL yang sudah otomatis disesuaikan dengan skema input/output Space ini.