Skip to content

Repository files navigation

Horizon yolo v8

Python License FastAPI React

Interactive satellite imagery exploration platform with ML-based ship detection. Browse multi-source satellite imagery served via Google Earth Engine, capture regions of interest, annotate objects, train YOLOv8 models, and run inference — all from a single web interface.

Features

  • Multi-source satellite imagery — Sentinel-1 (SAR), Sentinel-2 (RGB & IR), Landsat 8, Sentinel-3, Sentinel-5P via Google Earth Engine
  • Temporal composites — Max, median, min, and first-image reductions over configurable time windows
  • Interactive map — Leaflet-based with bounding box selection, geographic markers, and preset maritime zones (Suez, Gibraltar, Hormuz, etc.)
  • Capture pipeline — Save high-resolution tile snapshots of areas of interest
  • Annotation editor — Draw bounding boxes on captured images to create YOLO-format training labels
  • Model training — Launch YOLOv8 training jobs with configurable hyperparameters, live loss/mAP charts
  • Inference — Run trained models on satellite tiles with real-time detection overlay on the map

Demo

Imagery browsing Annotation Training Inference

Architecture

├── main.py                 # FastAPI application entry point
├── routers/                # API route handlers (thin layer)
├── services/               # Business logic (GEE, training, inference, captures)
├── models/                 # Pydantic v2 request/response schemas
├── data/                   # Runtime data (captures, training datasets, model weights)
└── satellite-explorer/     # React + TypeScript frontend (Vite)
    └── src/
        ├── features/       # UI feature modules (controls, map, ML panel)
        ├── services/       # API client
        └── types/          # Shared TypeScript types

Prerequisites

  • Python 3.14+
  • Node.js 18+
  • Google Earth Engine — authenticated credentials or a GEE_PROJECT environment variable
  • CUDA-capable GPU (optional) — required for model training and faster inference

Getting Started

Backend

# Install Python dependencies
uv sync

# Start the API server (port 8000)
uv run uvicorn main:app --reload

Frontend

cd satellite-explorer

# Install Node dependencies
npm install

# Start the dev server (proxies /api → localhost:8000)
npm run dev

Open http://localhost:5173 in your browser.

Environment Variables

Variable Description Default
GEE_PROJECT Google Earth Engine project ID Uses default credentials

API Endpoints

Method Path Description
POST /api/scene Load a GEE scene (returns tile URL + metadata)
GET /api/zones List preset maritime zones
GET /api/basemaps List available basemaps
GET/POST/DELETE /api/markers Manage geographic markers
GET/POST/DELETE /api/captures Manage tile captures
PUT /api/captures/{id}/annotations Update capture annotations
GET /api/captures/export Export annotated captures as YOLO dataset
POST /api/training/launch Launch a YOLOv8 training job
GET /api/training/status Get training progress
GET /api/training/jobs List training jobs
POST /api/inference/run Run detection on satellite tiles
GET /api/inference/status Get inference progress and detections
GET /api/inference/models List available trained models
GET /api/gpu/status Check GPU/CUDA availability

Tech Stack

Backend: FastAPI · Pydantic v2 · Google Earth Engine · Ultralytics YOLOv8 · PyTorch · Pillow

Frontend: React 19 · TypeScript · Vite · Leaflet · react-leaflet

License

MIT

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages