Instructions to use betty0/uav-traffic-vision with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use betty0/uav-traffic-vision with ultralytics:
# Couldn't find a valid YOLO version tag. # Replace XX with the correct version. from ultralytics import YOLOvXX model = YOLOvXX.from_pretrained("betty0/uav-traffic-vision") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
uav-traffic-vision: YOLO26 on VisDrone2019-DET
Drone-view object detection trained on VisDrone2019-DET (10 classes: pedestrian, people, bicycle, car, van, truck, tricycle, awning-tricycle, bus, motor). Part of a portfolio project also covering SAHI sliced inference, ByteTrack-based traffic flow counting, and edge deployment benchmarks β full code and writeups: GitHub repo. Live demo: HF Space.
Files
| file | description |
|---|---|
yolo26s_visdrone_640.pt |
yolo26s, imgsz=640, 97 epochs (early-stopped) |
yolo26s_visdrone_1024.pt |
yolo26s, imgsz=1024, 74 epochs (early-stopped, best at epoch 54) β higher accuracy at the same inference latency on a desktop GPU (see benchmarks) |
yolo26s_visdrone_640.onnx |
ONNX export of the 640 model, end-to-end (NMS-free), used by the Gradio demo |
Evaluation (VisDrone2019-DET val, 548 images)
Same evaluation protocol across all rows (pycocotools, conf=0.01, custom tiny/small/medium/large area buckets β see the GitHub repo for the exact methodology).
| setting | AP50 | AP@[.5:.95] | AP tiny (<16px) | AP small | AP medium | AP large |
|---|---|---|---|---|---|---|
| yolo26s @ 640, direct | 0.380 | 0.222 | 0.075 | 0.184 | 0.316 | 0.480 |
| yolo26s @ 1024, direct | 0.480 | 0.291 | 0.119 | 0.261 | 0.403 | 0.463 |
| yolo26s @ 640 + SAHI 512/0.2 | 0.465 | 0.269 | 0.134 | 0.248 | 0.349 | 0.455 |
No single setting dominates every object-size bucket: SAHI wins on the smallest objects (native-resolution tiling), the 1024 checkpoint wins small/medium objects with no slicing overhead, and plain 640 direct is marginally best on large objects. See the GitHub repo's README for the full discussion.
Edge deployment (measured on a desktop RTX 4090 / host CPU β not a Jetson)
| backend | mean latency | FPS |
|---|---|---|
| PyTorch .pt (RTX 4090) | 13.4 ms | 74.6 |
| ONNX (CPU) | 49.0 ms | 20.4 |
| TensorRT FP16 (RTX 4090) | 11.5 ms | 86.8 |
YOLO26 exports end-to-end (NMS-free) by default: the ONNX/TensorRT graph output is a
fixed (1, 300, 6) tensor with no NMS op, which simplifies onboard deployment
(no NMS-plugin version dependency, latency independent of scene density). TensorRT
engines are architecture-specific and are not included here β rebuild on your
target GPU with model.export(format="engine").
Usage
from ultralytics import YOLO
model = YOLO("yolo26s_visdrone_1024.pt") # or _640.pt / .onnx
results = model.predict("your_drone_image.jpg", imgsz=1024)
results[0].show()
Intended use & limitations
- Trained for aerial/drone-viewpoint object detection at the altitudes and camera angles represented in VisDrone (urban streets, intersections, campuses). Not validated for other viewpoints (ground-level, satellite).
- Small-object detection remains the hardest case (see the tiny-object AP figures above) β for safety- or compliance-critical use, pair with SAHI sliced inference or the 1024 checkpoint rather than the 640 direct baseline alone.
- Heavy class imbalance in the source data (144.9k car instances vs 3.2k awning-tricycle in training) β expect weaker recall on the rarer vehicle classes.
Dataset license β please read
VisDrone2019 (AISKYEYE team, Tianjin University) is released for academic / research use only. These weights were trained on VisDrone and inherit that restriction β this is not a general-purpose commercially-licensed model. The dataset itself is not redistributed in this repository.
- Downloads last month
- 89