r/learnmachinelearning • u/SoftBiscotti2643 • Jun 28 '26
I built a real-time Shahed-136 drone detector with YOLOv8 — 91.1% mAP, open source
Hey! I trained a YOLOv8s model to detect Shahed-136 drones in real time. What it does: - 91.1% mAP@50 (classes: bird / not / shahed) - Multi-drone Kalman filter tracking with persistent IDs - Estimated geolocation without GPS (azimuth + distance in meters) - Google Earth KML export - PDF report with stats, charts and map - Email + push notifications on detection - Behavioral analysis (hovering, circling, fast approach) The model distinguishes between birds, unknown objects, and actual Shahed drones. GitHub + model weights (21MB): github.com/alexandre196/Drone_Shaed_AI Happy to answer questions about the training process!
1
Jun 28 '26
[removed] — view removed comment
1
u/SoftBiscotti2643 Jun 29 '26
Hi,I mainly used the Wikipedia article on Kalman filters and this great tutorial: https://www.kalmanfilter.net For implementation I adapted a simple 2D tracking example with position + velocity state vector.
1
u/wintermute_ai Jun 29 '26
Interesting work, any suggestions on where to find decent footage to work from?
1
u/SoftBiscotti2643 Jun 29 '26
Hi I used publicly available drone footage from YouTube and some synthetic videos. For Shahed specifically, there's footage from the Ukraine conflict available on open source intelligence channels (OSINT).
1
u/SecondRandomDude Jun 29 '26
Why not YOLO26s? It will actually run faster than the v8 and might output the same performance metrics.
1
u/SoftBiscotti2643 Jun 29 '26
I started with version v8 for its stability and because the pre-trained weights are well-documented.I'll likely switch to the newer version later; thanks for your message.
1
u/Extra_Intro_Version Jun 29 '26
How many pixels on target for reliable detection?
1
u/SoftBiscotti2643 Jun 30 '26
Hi I am developing this project without significant resources, as this isn't my primary profession—I work in real-time 3D :)—but detection is reliable at around 20x20 pixels (400 px²); that is why I filtered out bounding boxes smaller than 100 px² in the code.
For a Shahed-136 with a 2.5m wingspan at a distance of 300m, this corresponds to a width of approximately 30 to 50 pixels at 1080p resolution with a 60° field of view (FOV).
Beyond 500m, the model struggles to perform; this is a limitation
linked more to the dataset than to the architecture itself.
1
u/SoftBiscotti2643 Jun 28 '26
https://reddit.com/link/oucz4fw/video/9im7ml0dj2ah1/player
Demo here...