Spaces:
Sleeping
Sleeping
metadata
title: AI Change Detection
emoji: π°οΈ
colorFrom: gray
colorTo: green
sdk: docker
app_port: 7860
Satellite Change Detection β Standalone Web App
Standalone web application for satellite image change detection with user accounts, database storage, and a clean, modern UI.
Features
- Login / Register β JWT-based auth, passwords hashed with bcrypt
- Database β SQLite (or set
DATABASE_URLfor PostgreSQL); stores users and detection runs - Change detection β Same model as the original app: AI-based, image difference, feature-based, hybrid
- Object classification β Changed regions labeled as Water, Vegetation/Tree, Building, Road, Bare Ground/Soil
- History β List of past runs with overlay images and stats
- UI β Single-page app with a dark, βcontrol roomβ style and teal accents
Setup
Create a virtual environment (recommended)
cd change_detection_webapp python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activateInstall dependencies
pip install -r requirements.txtRun the app
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Open http://localhost:8000 in your browser.
First run
- The SQLite DB and
data/(overlay images) are created automatically on first use. - Register a new account from the welcome screen, then sign in.
- Upload Before and After images, choose a method, and click Run detection.
- Results appear below; runs are saved in History.
Configuration
- Database: set
DATABASE_URL(e.g.postgresql://user:pass@host/db) to use another DB; otherwise SQLite underdata/satellite_app.dbis used. - JWT: set
SECRET_KEYinapp/auth.py(or via env) in production.
Project layout
change_detection_webapp/
βββ app/
β βββ main.py # FastAPI app, routes
β βββ database.py # SQLAlchemy, session
β βββ models.py # User, DetectionRun
β βββ auth.py # JWT, password hashing
β βββ detection_engine.py # Change detection (no Streamlit)
βββ static/
β βββ css/style.css # Styles
β βββ js/app.js # Frontend logic
βββ templates/
β βββ index.html # Single-page UI
βββ data/ # Created at runtime (DB + overlays)
βββ requirements.txt
βββ README.md
API (for integration)
POST /api/auth/registerβ body:{ "email", "password", "full_name" }POST /api/auth/loginβ body:{ "email", "password" }β returnsaccess_tokenGET /api/meβ header:Authorization: Bearer <token>POST /api/detectβ form:before,after(files),method,title, etc. β returns stats, regions, overlay base64GET /api/historyβ list of current userβs runsGET /api/overlay/<path>β serve saved overlay image