Kestrel — autonomous search decision stack

Smart India Hackathon 2026 · PS SIH26177 (Qualcomm Inc) · Hardware · Robotics & Drones

loading model…

YOLO gives us boxes. Everything that turns boxes into a search decision is ours — where to look closer, how to weigh sensors that fail together, which cells are worth the battery, and what fits in the radio. Four algorithms, running live in this tab.

Pick an example or upload an image
confirmed by descent single pass descent window planned tour
—boxes → merged
—descent crops
—confirmed
—in this tab

1 · Two-pass descent SAHI + WBF

—

2 · Correlated fusion solves Σw = 1

—

3 · Route Held-Karp, exact

—

4 · Link budget 0/1 knapsack

How do you know the algorithms are right?

Because they are checked against brute force. The route planner is compared to exhaustive permutation search and the knapsack to exhaustive subset enumeration; the fusion rule is asserted to collapse to classical Chair-Varshney when the correlation matrix is the identity.

What each one does, and why that data structure

AlgorithmStructureComplexityWhat it buys
Two-pass descent
SAHI, arXiv 2202.06934
greedy min-window-cover · spatial hash · union-find · weighted box fusion O(n log n) plan
O(n α(n)) merge
A prone adult is 22 px at 30 m and 45 px at 15 m. Descending is resolution, not opinion. Covering six clustered candidates takes one crop, not six — every crop is a forward pass we pay for in joules.
Correlated fusion
generalises Chair-Varshney 1986
sparse Map on packed int keys · Gauss-Jordan solveO(1) per update
O(k³), k≤8
Thermal and RGB both die behind a slab, so summing them double-counts one physical vote. Inverse-covariance weights discount redundancy. At r=0.9 the pair is worth barely more than one independent stream.
Route planning
prize-collecting Held-Karp
bitmask DP over subsetsO(2k·k²)
k ≤ 15
Greedy next-best-view strands the aircraft far from base. This is the exact optimum with return-to-base as a hard constraint inside the DP, not a check bolted on after.
Link budget
0/1 knapsack
1-D rolling DP + choice tableO(n·B) LoRa carries a few hundred bytes. A bare geo-record is 300 B, a thumbnail 8.3 kB. Sending in arrival order wastes the frame; this packs it optimally.

This ran on your device. That is the point.

The model and all four algorithms executed in your browser through WebAssembly — no server, no upload, no cloud. The problem statement asks for on-device AI inference without dependence on cloud connectivity, and your own hardware just did it.

Measured on real Qualcomm silicon

DevicePrecisionLatencyThroughputOn NPU
Arduino Ventuno Q
Dragonwing IQ-8275 · Hexagon v75
INT81.72 ms580.7 FPS247 / 247
Dragonwing RB3 Gen 2
QCS6490 · Hexagon v68
INT810.77 ms92.8 FPS247 / 247
Arduino Ventuno Qfp166.77 ms147.8 FPS247 / 247
Dragonwing RB3 Gen 2fp16graph will not compose on Hexagon v68

Profiled through Qualcomm AI Hub on physical devices — not a simulator, not an estimate. YOLOv8n at 640×640, QNN DLC, --quantize_io. Every layer executes on the Hexagon NPU, zero CPU fallback.

Your browser is not a Hexagon NPU. The table is from Qualcomm's hardware; this page is the pipeline. We are not going to pretend a web demo is an embedded benchmark.

The arithmetic that matters

A 30 m sweep at 4 m/s with 50% frame overlap needs a new frame every 4.55 s — 0.22 Hz. The board delivers 539 FPS. That headroom is not for one fast detector: it is for running detection, visual-inertial odometry, an open-vocabulary encoder and the radio scanner at once — Qualcomm's own "run more networks simultaneously" claim, with a workload attached.

Detector: our own weights. YOLOv8n fine-tuned on the SARD aerial search-and-rescue dataset (1,980 images, 6,525 person instances), 183 epochs on a Tesla T4. Held-out test split: mAP@50 0.952, mAP@50-95 0.665, precision 0.969, recall 0.900, single class human. Published work reports YOLOv4 at 97.15% mAP@0.4 on SARD; ours is 95.2% at the stricter @0.5. The model is 640×640 and the numbers in the table above are this model, not a stock one. Example images are our own renders; upload a real photograph to test it properly. Thermal and BLE streams are slider-driven — the RGB and descent streams are computed from your image.