Skip to content

Overview

Saman Tabatabaeian edited this page Feb 18, 2026 · 2 revisions

Overview

AstroLens uses machine learning to automatically discover unusual astronomical objects in survey images. It operates in three modes:

  • Galaxy Mode: Finds unusual galaxy morphologies (mergers, irregulars, compact objects) using a Vision Transformer + out-of-distribution detection ensemble.
  • Transient Mode: Detects transient events (supernovae, variable stars) using YOLO object detection.
  • Streaming Discovery (v1.1.0): Runs autonomously for days, downloading and analyzing images 24/7 with self-correcting intelligence.

Demo

Anomaly Detection Anomaly detection in action -- ViT classification, OOD scoring, and YOLO transient detection running on real survey images

Architecture

astroLens/
├── api/                     FastAPI backend (REST API)
├── inference/               ML models (ViT, OOD, YOLO, GPU utils)
├── features/                Feature extraction (morphology, PCA, export)
├── catalog/                 Astronomical catalog queries
├── transient_detector/      YOLO transient pipeline
├── scripts/                 Automation (discovery, data sources, batch)
├── ui/                      Desktop app (PyQt5)
├── web/                     Web interface (FastAPI + Jinja2)
├── build/                   PyInstaller build pipeline
├── models/                  Pre-trained models (Git LFS)
└── tests/                   Test suite

Data Sources

Source Coverage Bands Type
DECaLS (DESI Legacy) 14,000 sq deg g, r, z Deep imaging
SDSS (DR18) 14,500 sq deg u, g, r, i, z Classic survey
Pan-STARRS (PS1) 30,000 sq deg g, r, i, z, y Wide-field
Hubble Legacy Pointed fields Multi-band High resolution
Galaxy Zoo SDSS footprint -- Citizen science labels
ZTF Northern sky g, r, i Transient alerts

GPU Support

AstroLens automatically detects the best available compute:

Device Detection Speedup
NVIDIA CUDA torch.cuda.is_available() ~5-10x
Apple MPS Direct probe (macOS 14+) ~3-5x
CPU Fallback Baseline

Check your device:

python -c "from inference.gpu_utils import get_device_summary; print(get_device_summary())"

Clone this wiki locally