IAMARS: drone detection, tracking and trajectory prediction
YOLOv8n finds small drones in video, ByteTrack keeps a stable ID for each one, a Kalman filter estimates position and velocity, and a constant-velocity model predicts the next half second. Every number on this page was produced by a script in the repository.
Four drones against open sky
Pipeline output: each drone keeps its ID (1 to 4) for the whole clip. Boxes show track ID and confidence, lines show the recent path, orange marks the predicted path. Input clip supplied by the project author.
Pipeline
Detection
| Test set | Images | mAP@0.5 | mAP@0.5:0.95 | Precision | Recall | Source |
|---|---|---|---|---|---|---|
| VisioDECT held-out test (block split) | 1,800 | 0.965 | 0.596 | 0.960 | 0.957 | json |
| Anti-UAV-RGBT frames, never seen in training | 3,424 | 0.291 | 0.143 | 0.571 | 0.274 | json |
The second row measures the domain gap: the model was trained only on VisioDECT.
Speed
| Device | Mean latency / frame | 95th percentile | Pipeline FPS | Source |
|---|---|---|---|---|
| NVIDIA GeForce RTX 2050 | 11.3 ms | 15.16 ms | 88.5 | json |
| 13th Gen Intel(R) Core(TM) i5-13420H (CPU only) | 49.51 ms | 56.85 ms | 20.2 | json |
Detect + track + Kalman + predict per frame, batch 1, 1280 × 720 video, laptop on AC power.
Tracking
| Evaluation | Videos | MOTA | IDF1 | ID switches | Source |
|---|---|---|---|---|---|
| Anti-UAV-RGBT test, IAMARS detector + ByteTrack | 91 | 0.067 | 0.178 | 452 | json |
| Same videos, ground-truth boxes (tracker upper bound) | 91 | 0.928 | 0.485 | 1,384 | json |
| MultiUAV swarm videos, ground-truth boxes | 20 | 0.985 | 0.924 | 297 | json |
MOTA and IDF1 from py-motmetrics (match at IoU ≥ 0.5). With perfect boxes the tracker keeps identities well on static-camera swarm videos but not on Anti-UAV, whose pan-tilt camera makes boxes jump.
Second example: 24 drones in formation
Pipeline output on a swarm. Source clip: "MagicLab – 24 Drone Flight" by Marco Tempest, CC BY 3.0, via Wikimedia Commons, trimmed and annotated.
Intercept-point prediction (simulation)
Simulation only. 1,000 trials per pattern; 3D position measured at 30 Hz with 1.0 m noise; after 2.0 s a Kalman filter estimate is used to aim a 80 m/s interceptor. Hit = within 1.0 m of the true position.
| Flight pattern | Hit rate (≤ 1 m) | Median miss | Hit rate with true state |
|---|---|---|---|
| Straight | 28.3 % | 1.36 m | 100.0 % |
| Turning | 1.4 % | 13.52 m | 8.2 % |
| Jinking (random manoeuvres) | 0.0 % | 16.65 m | 0.3 % |
Run it yourself
git clone https://github.com/aviraj1805/intelligent-aerial-monitoring.git cd intelligent-aerial-monitoring pip install -r requirements.txt python scripts/download_assets.py python app.py # interactive web demo at http://127.0.0.1:7860
This page is static because hosted Python apps on Hugging Face require a paid plan. The interactive Gradio app runs locally with the commands above.