Edge-compute AI pipeline that runs in orbit β detects, classifies, and reasons about military targets from satellite imagery, then downlinks a tiny JSON tactical report instead of raw gigabytes.
Military reconnaissance satellites capture massive, gigapixel images β but satellites have extremely limited downlink bandwidth. Beaming raw imagery to Earth takes hours. And after all that waiting, the "tank" you spotted might just be a $500 inflatable decoy.
The cost of this inefficiency?
- β±οΈ Hours of latency for time-critical intelligence
- π‘ Saturated downlink channels blocking other payloads
- π False positives from 2D decoys wasting analyst time
Move the intelligence to the edge β run AI directly in orbit.
ARGUS processes satellite imagery locally on the satellite, filters out 2D decoys, and downlinks an ultra-lightweight JSON tactical report to ground commanders in real-time.
| Metric | Traditional Pipeline | ARGUS |
|---|---|---|
| Downlink size | ~19 GB (raw imagery) | ~0.6 KB (JSON report) |
| Compression ratio | 1:1 | 29,789x |
| Bandwidth saved | 0% | 99.97% |
| Models required | 4β5 (YOLO + SAM + ...) | 2 (VLM + Depth) |
| Latency | Hours | Seconds |
graph TD
A["π°οΈ Satellite Camera<br/>GigaPixel Image"] --> B
B["Phase 1: LFM2.5-VL + LoRA<br/>Detection β’ Classification β’ Reasoning"] --> C
C["Phase 2: Depth Anything 3<br/>3D Reality Verification"] --> D{Is it 3D?}
D -->|"β
REAL"| E["Phase 3: Report Assembly"]
D -->|"β 2D DECOY"| F["π Filtered Out"]
E --> G["π‘ JSON Tactical Downlink<br/>~0.6 KB"]
style A fill:#1a1a2e,stroke:#e94560,color:#fff
style B fill:#16213e,stroke:#0f3460,color:#fff
style C fill:#16213e,stroke:#0f3460,color:#fff
style D fill:#533483,stroke:#e94560,color:#fff
style E fill:#0f3460,stroke:#e94560,color:#fff
style F fill:#e94560,stroke:#fff,color:#fff
style G fill:#2d6a4f,stroke:#40916c,color:#fff
| Phase | Model | What it Does | Output |
|---|---|---|---|
| 1 | LFM2.5-VL-450M + LoRA | Unified detection, localization, classification & tactical reasoning | JSON array of targets |
| 2 | Depth Anything 3 | 3D reality check β is the target physically real or a flat decoy? | REAL / DECOY verdict |
| 3 | β | Report assembly & compression metrics | Tactical JSON |
Traditional satellite intel pipelines chain 4β5 separate models (YOLO β SAM β Classifier β Depth β Reasoner). ARGUS puts Liquid AI's LFM2.5-VL at the center β a single 450M-parameter vision-language model that performs detection, bounding-box localization, AND tactical reasoning in one inference pass.
| β Reduced VRAM | From 4 GPU-loaded models to just 2 |
| β Open Vocabulary | Prompted with "find military vehicles" β not locked to DOTA class IDs |
| β Edge Deployable | Runs on Jetson Orin, mobile, even WebGPU |
| β 10.4 MB Adapter | Fine-tuned LoRA β not a full model copy |
- Python 3.10+
- CUDA-capable GPU (recommended)
- Docker (for SimSat satellite simulator)
- Mapbox Account (free tier β provides satellite imagery)
git clone https://github.com/jatin711-debug/Project-ARGUS.git
cd Project-ARGUS
# Install Python dependencies
pip install -r requirements.txt
# Install Depth Anything 3 (vendored)
pip install -e ./Depth-Anything-3
# Install PEFT for LoRA adapter loading
pip install peft# Download the ARGUS LoRA adapter (10.4 MB)
hf download johnny711/argus-lfm-lora --local-dir weights/argus-lfm-loracp .env.example .env
# Edit .env β add your Mapbox tokenπ Mapbox Token: Get a free token at mapbox.com and add it to
.envasMAPBOX_ACCESS_TOKEN. SimSat uses this to serve real satellite imagery.
# In a separate terminal β provides the satellite imagery API
MAPBOX_ACCESS_TOKEN=pk.your_token_here docker compose uppython -m argusYou should see:
2026-04-26 13:37:42 | INFO | argus.pipeline | Initiating orbital scan β¦
2026-04-26 13:37:42 | INFO | argus.pipeline | Satellite at: [-83.53, 66.50, 800.78]
2026-04-26 13:37:45 | INFO | argus.pipeline | Image acquired (2560x2560) β entering pipeline.
2026-04-26 13:37:45 | INFO | argus.phases.detection | Phase 1: VLM target detection β¦
2026-04-26 13:37:52 | INFO | argus.phases.detection | 3 target(s) of interest
2026-04-26 13:37:53 | INFO | argus.phases.depth | Phase 2: Depth analysis β¦
2026-04-26 13:37:54 | INFO | argus.pipeline | Filtered 1 flat decoy(s)
2026-04-26 13:37:54 | INFO | argus.pipeline | TACTICAL REPORT: 2 confirmed targets
All settings are loaded from environment variables (.env file):
| Variable | Default | Description |
|---|---|---|
MAPBOX_ACCESS_TOKEN |
β | Mapbox API token for satellite imagery |
ARGUS_VLM_MODEL |
LiquidAI/LFM2.5-VL-450M |
Base VLM model ID |
ARGUS_VLM_ADAPTER |
weights/argus-lfm-lora |
Path to LoRA adapter |
ARGUS_VLM_MAX_TOKENS |
512 |
Max tokens for VLM generation |
ARGUS_DA3_MODEL |
depth-anything/DA3-BASE |
Depth model ID |
ARGUS_DEPTH_THRESH |
0.1 |
Depth std threshold (below = flat decoy) |
ARGUS_GHOST_STD |
10.0 |
Pixel std threshold for ghost/blank images |
ARGUS_SCAN_INTERVAL |
1 |
Seconds between scans (0 = single shot) |
The LoRA adapter was trained to teach LFM2.5-VL to output structured military detection JSON from satellite imagery.
| Parameter | Value |
|---|---|
| Base Model | LiquidAI/LFM2.5-VL-450M |
| Method | QLoRA (4-bit) via Unsloth |
| LoRA Config | r=16, alpha=32, all linear layers |
| Trainable Params | 1,376,256 / 450,095,104 (0.31%) |
| Datasets | MVRSD + DOTA |
| Training Samples | 3,512 (military vehicles, aircraft, naval vessels) |
| Epochs | 3 (1,317 steps) |
| Final Loss | 0.4017 |
| Hardware | NVIDIA T4 GPU |
| Training Time | ~60 minutes |
| Adapter Size | 10.4 MB |
| Category | Classes | Threat Level |
|---|---|---|
| π Ground Vehicles | Small/Large Military Vehicle, AFV, Construction Vehicle | LOWβHIGH |
| Military Aircraft, Helicopter | HIGH | |
| π’ Naval | Naval Vessel, Harbor Installation | HIGH |
| ποΈ Infrastructure | Bridge, Storage Tank, Port Crane, Helipad, Airfield | MEDIUM |
The fine-tuning script is included. Run it on Google Colab or Modal:
# Open in Colab and run cell-by-cell
# Or run directly:
python finetune_lfm_argus.pyThis is what gets downlinked β 0.6 KB instead of 19 GB of raw imagery:
{
"mission": "PROJECT ARGUS",
"timestamp": "2026-04-26T13:37:54Z",
"satellite_position": {
"lon": 35.9284,
"lat": 34.8021,
"alt_km": 793.1
},
"image_resolution": "2560x2560",
"targets_detected": 3,
"decoys_filtered": 1,
"confirmed_targets": [
{
"id": 1,
"label": "Large Military Vehicle",
"bbox": [0.3125, 0.4531, 0.3867, 0.5195],
"confidence": 0.91,
"threat_level": "HIGH",
"reasoning": "Large Military Vehicle detected in convoy formation, indicates active movement",
"depth_verdict": "REAL"
},
{
"id": 2,
"label": "Military Aircraft",
"bbox": [0.7031, 0.1289, 0.7812, 0.1953],
"confidence": 0.88,
"threat_level": "HIGH",
"reasoning": "Military Aircraft spotted near airstrip perimeter, possible base security",
"depth_verdict": "REAL"
}
],
"filtered_decoys": [
{
"label": "Armored Fighting Vehicle",
"confidence": 0.72,
"depth_verdict": "2D_DECOY",
"reasoning": "Flat depth profile β likely inflatable or painted decoy"
}
],
"edge_compute_savings": {
"raw_image_kb": 19200,
"report_kb": 0.64,
"compression_ratio": "29,789x",
"bandwidth_saved_pct": 99.97
}
}Project-ARGUS/
βββ argus/ # Core pipeline package
β βββ __init__.py
β βββ __main__.py # Entry point β orbital scan loop
β βββ config.py # Centralized settings + logger
β βββ loader.py # Model registry (VLM + DA3 + LoRA)
β βββ models.py # Target & DepthAnalysis dataclasses
β βββ pipeline.py # 3-phase orchestrator
β βββ satellite.py # SimSat API client
β βββ report.py # JSON tactical report builder
β βββ phases/
β βββ detection.py # Phase 1 β LFM2.5-VL detection
β βββ depth.py # Phase 2 β DA3 depth verification
β
βββ weights/
β βββ argus-lfm-lora/ # Fine-tuned LoRA adapter (10.4 MB)
β βββ adapter_config.json
β βββ adapter_model.safetensors
β βββ ...
β
βββ finetune_lfm_argus.py # Fine-tuning script (Colab/Modal)
βββ steer_simsat.py # SimSat orbit steering utility
βββ requirements.txt
βββ .env.example
βββ README.md
| Resource | Link |
|---|---|
| π€ Fine-Tuned Adapter | johnny711/argus-lfm-lora |
| π§ Base Model | LiquidAI/LFM2.5-VL-450M |
| π‘ SimSat Simulator | DPhi-Space/SimSat |
| π Hackathon | Liquid AI x DPhi Space |
| π¬ Depth Anything 3 | ByteDance-Seed/depth-anything-3 |
| β‘ Unsloth | unslothai/unsloth |
| πΊοΈ Mapbox | mapbox.com |
This project is licensed under the Apache License 2.0.
Built with π₯ for the Liquid AI x DPhi Space "AI in Space" Hackathon
Moving intelligence to the edge β because bandwidth is the bottleneck, not compute.