1062 words
5 minutes
Orbital Intelligence & Tracking Military Aircraft with YOLO11-OBB

In modern warfare, the sky is no longer just a tactical vantage point, it is an intelligence goldmine.

During the recent conflict between the US and Iran, a striking geopolitical revelation came to light: Iran’s Islamic Revolutionary Guard Corps (IRGC) had secretly acquired a Chinese-built spy satellite named TEE-01B (developed by Earth Eye Co.). Delivering a razor-sharp ~0.5-meter resolution, this orbital asset gave Iranian commanders the capability to track US military movements, capture pre- and post-strike imagery, and map out precision drone and missile operations across West Asia.

alt text

Seeing how commercial-grade space hardware could be pivoted for high-stakes military intelligence

Can we replicate this type of tracking technology on the ground using consumer machine learning?

In this post, I walk through my project, SAT-TRACK, where I built an orbital computer vision pipeline capable of detecting and classifying 20 different types of military aircraft across both US/Allied and Russian air forces.

The Core Challenge: Why Standard Object Detection Fails#

If you’ve ever worked with standard object detection (like traditional YOLO), you are probably used to Horizontal Bounding Boxes (HBB). HBB works fine for everyday objects, but it is deeply flawed for satellite imagery.

When looking straight down at an airfield, aircraft are parked at arbitrary, tightly packed angles. If you draw a standard square box around a diagonally parked fighter jet, the box ends up containing mostly empty runway or overlapping neighboring planes.

To solve this, I used Oriented Bounding Boxes (OBB) via YOLO11n-OBB. OBB captures the exact rotation and orientation angle (θ\theta) of the aircraft. This is crucial for precise counting, fleet tracking, and assessing exactly which direction an aircraft is facing.

x,y,w,h,θx, y, w, h, \theta


Dataset & Technical Setup#

To build this, I relied on the MAR20 dataset, an excellent dataset of satellite imagery for aircraft recognition

https://pure.nwpu.edu.cn/en/publications/mar20遥感图像军用飞机目标识别数据集/

PropertyValue
Total Images3,842 satellite images
Resolution~0.3–0.5 m/px
AnnotationsOriented Bounding Boxes (DOTA format)
Train / Val Split1,331 / 2,511 (Strict split with zero airfield overlap)

The model handles 20 distinct classes, divided heavily across two major global alignments:

  • US / Allied Fleets: Fighter jets (F-15, F-16, F-22, F/A-18), Bombers (B-52, B-1B), Transports/Tankers (C-5, C-17, C-130, KC-135, KC-10), and specialized AWACS (E-3, E-8).
  • Russian Fleets: Fighters/Interceptors (SU-35, SU-34, SU-24) and Strategic Bombers (TU-160, TU-95, TU-22).

Overview#

https://github.com/tcpfin-dev/SAT-TRACK/tree/main

SAT-TRACK detects and classifies military aircraft in satellite images using oriented bounding boxes (OBB). Unlike horizontal bounding boxes, OBB captures the exact orientation of parked aircraft, critical for airbase monitoring, fleet counting, and activity assessment.

20 classes spanning US, Russian, and allied air forces: fighters (F-15, F-16, F-22, F/A-18, SU-34, SU-35), bombers (B-52, B-1B, TU-95, TU-160, TU-22), transports (C-5, C-17, C-130), tankers (KC-135, KC-10), AWACS (E-3, E-8), and maritime patrol (P-3C).

YOLO11-OBB#

For this project, I chose YOLO11n-OBB, the nano variant of Ultralytics’ latest oriented object detection model. The choice of nano was deliberate, I wanted to establish a performance baseline with the smallest, fastest variant before scaling up.

Why Oriented Bounding Boxes Matter#

Standard object detection draws axis-aligned rectangles around objects. On satellite imagery of airfields, this falls apart quickly. Aircraft park at arbitrary angles, sometimes nose-to-tail in revetments, sometimes staggered on aprons, and often in tight clusters. A horizontal box around a diagonally parked F-16 captures as much empty tarmac as it does aircraft. Worse, overlapping boxes between adjacent planes create ambiguity that degrades both classification and counting.

Overall Performance#

MetricValue
mAP@0.50.858
mAP@0.5:0.950.741
Precision0.836
Recall0.801

Examples#

A fleet of F-15s alt text

A fleet of Su-34s alt text

A fleet of C-17 and KC-10 alt text

Per-Class Breakdown#

🟢 Strong (mAP50 ≥ 0.90) – Large, Distinct Airframes#

ClassmAP50PrecisionRecallNotes
E-30.9780.9320.941AWACS – rotodome unmistakable from above
B-1B0.9760.8690.977Lancer – swing-wing, near-perfect recall
TU-950.9640.9310.925Bear – swept wings + 4 turboprops
TU-1600.9580.9530.856Blackjack – largest combat aircraft
P-3C0.9480.9450.899Orion – long fuselage + 4-engine prop
C-50.9360.9180.824Galaxy – massive T-tail airlifter
KC-1350.9330.9130.866Stratotanker – 707-derived, refueling boom
B-520.9280.9330.848Stratofortress – 8 engines, huge wingspan
C-170.9240.8130.952Globemaster III – finds nearly all of them
C-1300.9230.9670.853Hercules – best precision in dataset
TU-220.9060.7520.896Backfire – swing-wing bomber

Bombers, transports, AWACS, and maritime patrol dominate – 11/20 classes above 0.90 mAP50.

🟡 Moderate (0.80–0.90)#

ClassmAP50PrecisionRecallNotes
E-80.8810.7920.855JSTARS – 707 airframe, good despite fewer examples
SU-350.8510.8490.685Flanker-E – large fighter, decent precision, misses some
F/A-180.8050.9840.433Hornet – near-perfect precision, misses >50%
SU-240.8020.9190.764Fencer – variable-sweep wing

🟠 Weak (0.75–0.80)#

ClassmAP50PrecisionRecallNotes
KC-100.7950.8500.682Extender – tri-jet, likely confused with KC-135

🔴 Poor (<0.75) – Fighters#

ClassmAP50PrecisionRecallNotes
SU-340.7420.5960.861Fullback – many false positives, cockpit invisible from above
F-160.7350.6370.834Falcon – low precision, over-predicts
F-150.6760.6570.565Eagle – weak on both precision and recall
F-220.5000.5200.510Raptor – near-random, worst class

Fighter bottleneck: From top-down satellite, F-15/16/22, F/A-18, SU-34/35 all appear as swept-wing deltas occupying ~30×30 pixels. F/A-18 is too conservative (P=0.984, R=0.433), while SU-34 and F-16 are too aggressive (low precision, conflating other fighters).


Why the Fighter Gap Exists#

  1. Planform similarity: all modern fighters are single/double-seat, swept-wing, single/double-tail. The difference between an F-16 and SU-35 from 800 km up is a few pixels of wing sweep.
  2. Scale: fighters are 15–20 m long. At 0.3–0.5 m/px, they occupy ~30×30 pixels. Distinguishing subtle airframe features at that resolution is beyond the nano backbone’s capacity.
  3. Feature asymmetry: The model learns strong features for bombers (wing config, engine count, size) that don’t exist for fighters.

Conclusion#

That said, I recognize I am using the nano variant of YOLO11-OBB, the smallest and fastest version optimized for edge deployment. Upgrading to medium or large variants would significantly improve accuracy, particularly for the fighter classes that currently underperform. The fighter bottleneck is the most glaring limitation: F-16, F-15, F-22, F/A-18, and SU-34/35 all struggle from top-down satellite views where they appear as 30×30 pixel swept-wing deltas with near-identical silhouettes. A larger backbone has the capacity to learn the subtle wing-sweep angles, canopy shapes, and tail configurations that distinguish these aircraft, and upgrading to YOLO11m-OBB or YOLO11l-OBB is a direct, proven path to closing this gap.

I also have plans to expand the class coverage to include modern platforms absent from MAR20, including the F-35 Lightning II, B-2 Spirit, A-10 Warthog, and E-2 Hawkeye. The MTARSI-fixed dataset provides a clear path here with 240 F-35 images, 619 B-2 images, and 340 A-10 images. Beyond that, I am exploring a dual-expert architecture that tracks civilian aircraft aka Boeing and Airbus families from FAIR1M,alongside military platforms, creating a comprehensive air picture that respects the fundamental data reality: civilian aircraft have abundant training data while military data is scarce and precious, making separate specialists the optimal approach.

Stay tuned for future posts where I will integrate F-35 and B-2 detection, build the civilian tracking pipeline, compare YOLO11-OBB variants, and explore real-time airbase monitoring. The code and datasets used in this project are publicly available, try it yourself, extend it, and build the next layer of the intelligence stack yourself.

Thats pretty much it for this blog, Good Bye✈️🔭