Instructions to use Siddh10/sih-aerial-person with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use Siddh10/sih-aerial-person with ultralytics:
# Couldn't find a valid YOLO version tag. # Replace XX with the correct version. from ultralytics import YOLOvXX model = YOLOvXX.from_pretrained("Siddh10/sih-aerial-person") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
AeroNova β Aerial Person Detection for Drone Disaster Relief
Single-class (person) YOLO detector for humans seen from 50β100 m flight
altitude at a slant angle. Built for the SIH problem statement "AI based
automatic alarm generation and dropping of payload at a particular object
through a drone."
The problem this solves
A 1.7 m human at 100 m altitude is 9β34 px tall depending on camera angle.
Feeding a 2304Γ1296 frame to YOLO at imgsz=640 downscales that person to
~5 px β below the stride-8 detection head. The target is destroyed before the
first forward pass, and no amount of training recovers it.
This model is trained on 640 px tiles cut from full frames at native resolution, so a 20 px person stays 20 px. You must slice at inference with the same tile size and overlap or recall collapses β measured at 15Γ worse in the 16β32 px bucket when the scales do not match.
Results
| Target size | β altitude / angle | GT | Found | Recall |
|---|---|---|---|---|
| < 16 px | ~100 m nadir | 2,493 | 1,334 | 0.535 |
| 16-32 px | ~100 m slant / 50 m nadir | 6,210 | 4,178 | 0.673 |
| 32-64 px | ~50 m slant | 3,878 | 3,158 | 0.814 |
| >= 64 px | < 30 m | 330 | 300 | 0.909 |
Overall @ IoU 0.25: recall 0.695, AP 0.617, precision 0.636 on 541 held-out frames (12,911 persons).
Precision is deliberately traded for recall (conf=0.15): a false alarm costs
a wasted payload, a miss costs a life. False positives are suppressed
downstream by temporal confirmation in ground coordinates β 3 sightings at
a consistent GPS position β rather than by a threshold that would discard real
20 px victims.
Usage
from huggingface_hub import hf_hub_download
from ultralytics import YOLO
model = YOLO(hf_hub_download("Siddh10/sih-aerial-person", "best.pt"))
# Do NOT run full-frame on large images -- slice at 640/0.2 to match training.
Full pipeline, including sliced inference and pixelβGPS projection: https://github.com/SiddhPatel0424/AeroNova
Training data
VisDrone2019-DET, converted to a single person class (pedestrian + people
merged β a rescue drone does not care whether the victim is upright).
ignored-regions are pixel-masked rather than dropped, and boxes with
occlusion == 2 are removed as label noise. 27,488 tiles / 199,891 boxes.
Limitations β read these before quoting the model
- VisDrone is urban drone footage, not disaster footage. There is a real domain gap to flood and earthquake scenes.
- Below ~16 px, recall is poor. That is optics, not model quality. The fix is a longer lens, lower altitude, or a thermal camera β not more epochs.
- This is yolo11n (nano), chosen so a Raspberry Pi can run it, trained for 35 effective epochs on a laptop GPU. A larger model with a full schedule has headroom above these numbers.
- Altitude claims are inferred from box pixel size, not measured β VisDrone has no altitude labels. The honest claim is performance at the box sizes corresponding to 50β100 m, per the GSD calculation in the repo.
Licence
AGPL-3.0, inherited from Ultralytics YOLO.
- Downloads last month
- 50