markus / README.md
mrbhaqee's picture
Update README.md
2f8cafc verified
|
Raw
History Blame Contribute Delete
3.81 kB

A newer version of the Gradio SDK is available: 6.22.0

Upgrade
metadata
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)

pip install gradio_client
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:

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):

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:

{"event_id": "abc123..."}

Langkah 2 — Ambil hasil pakai event_id:

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:

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.