Lightweight Sovereign AI for On-Device Victim Localization
in Post-Disaster Aerial Assessment
Universitas Darussalam Gontor (UNIDA)
What if a 7.8 magnitude earthquake levels a city — towers down, internet dead, no cloud, no API, no maps.
Search teams arrive with nothing but drones and a laptop.
They fly. The drone streams footage. A laptop runs our model.
Within seconds, every victim is located — offline, on-device, no connection needed.
That's what RescueVision Edge was built for.
RescueVision Edge adalah sistem deteksi korban bencana dari citra udara drone yang berjalan sepenuhnya luring tanpa cloud/API eksternal. YOLOv8n → ONNX (11.70 MB), CPU-only, latensi <40 ms.
| Aspek | Detail |
|---|---|
| Model | YOLOv8n → ONNX (11.70 MB) |
| Inference | CPU-only via CPUExecutionProvider |
| Latensi | ~30 ms rata-rata (max 38.1 ms) |
| Akurasi | [email protected] 0.5280 (pedestrian) |
| Frontend | React + Vite + Leaflet |
| Backend | FastAPI + ONNX Runtime |
| Offline | ✅ Zero external API |
| # | Constraint | Requirement | Status |
|---|---|---|---|
| C-A1 | Ukuran Model | ≤ 50 MB | ✅ 11.70 MB |
| C-A2 | Platform | CPU-only | ✅ CPUExecutionProvider |
| C-A3 | Kecepatan | ≤ 3.000 ms | ✅ 38.1 ms max |
| C-A4 | Framework | PyTorch / ONNX | ✅ Ultralytics + ONNX Runtime |
| C-A5 | Offline | Zero API calls | ✅ Fully offline |
![]() 🐳 Docker compose up → deteksi |
![]() 🔌 API OpenAPI → inject → GPS |
![]() ⚡ Benchmark 8 frame → avg 157 ms |
![]() 🎛️ Setup RPi scripts/setup_pi.sh |
📍 Frontend • API • Swagger UI
# Docker (recommended)
cp model/best.onnx model.onnx
docker compose up --build # → localhost:3000
# Development (2 terminal)
cd backend && pip install -r requirements.txt && uvicorn app.main:app --reload --port 8000
cd frontend && npm install && npm run dev -- --port 5173
# Raspberry Pi 4
sudo ./scripts/setup_pi.sh # auto-install semua dependensi| Method | Endpoint | Fungsi |
|---|---|---|
GET |
/health |
Status sistem + model |
POST |
/detect |
Deteksi 1 gambar |
POST |
/detect/batch |
Batch (max 100) |
POST |
/inject |
Inject config dinamis |
GET |
/export/csv |
Export CSV |
GET |
/export/json |
Export JSON |
curl -X POST "http://localhost:8000/detect?manual_lat=-7.34&manual_lon=110.45" \
-F "file=@drone_test_frames/frame_0008.jpg"| Metrik | YOLOv5n | YOLOv8n |
|---|---|---|
| [email protected] | 0.4684 | 0.5280 |
| ONNX size | 7.49 MB | 11.70 MB |
| CPU latency (max) | 19.8 ms | 38.1 ms |
Detail:
docs/architecture_comparison.txt·docs/demo-benchmark.gif
RescueVision/
├── scripts/ # Utilitas: dataset, benchmark, setup RPi
├── backend/app/ # FastAPI: routes, inference, GPS
├── frontend/src/ # React: components, hooks, API client
├── docs/ # Demo GIF/Cast, proposal, laporan
├── notebooks/ # Training + inference notebook
└── docker-compose.yml
| Nama | Role |
|---|---|
| Farrel Ghozy Affifudin | DevOps & Frontend |
| Fatih Jawwad Al Mumtaz | AI/ML & Backend |
Dataset VisDrone-DET 2019 — riset non-komersial. Model YOLOv8n — AGPL-3.0.



