Spaces:
Sleeping
Sleeping
File size: 7,645 Bytes
d70361b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | # Copy to .env and uncomment values as needed (optional for local dev).
# python run.py sets APP_MODE=dda automatically.
# APP_MODE=dda
# REQUIRED for stable login sessions (including in production): without this,
# a random secret is generated per process start, invalidating every existing
# session/cookie on each restart. Generate one with:
# python -c "import secrets; print(secrets.token_hex(32))"
# SECRET_KEY=change-me-to-a-long-random-string
# Database (default: SQLite in data/satellite_app.db)
# DATABASE_URL=sqlite:///./data/satellite_app.db
#
# MySQL (production for this project): install the driver first
# (pip install pymysql, already in requirements.txt), then set:
# DATABASE_URL=mysql+pymysql://user:password@host:3306/dbname
# URL-encode special characters in the password (e.g. @ -> %40).
#
# PostgreSQL also supported:
# DATABASE_URL=postgresql://user:pass@host/db
# Local image library folder (default: library_sources/)
# LOCAL_LIBRARY_ROOT=C:/path/to/your/images
# Image upload limit in MB (default 15360 = 15 GB)
# MAX_GEOTIFF_MB=15360
# MAX_IMAGE_MB=15360
# Automatic mode: identified same-area pairs can be queued on a cadence.
# The queue does NOT start when the app launches. On the Automatic tab, set
# interval (days) and run-at time (IST), then click Start. Manual mode is
# still click-to-run only. The local server must stay running while the
# schedule is armed. Set AUTO_DETECT_ENABLED=0 to hide/disable the feature.
# AUTO_DETECT_ENABLED=1
# AUTO_DETECT_INTERVAL_DAYS=10
# AUTO_DETECT_RUN_AT=02:00
# Max pixel dimension for detection (lower = less RAM, default 4096 local)
# DETECTION_MAX_SIDE=4096
# --- Accuracy controls (all optional; defaults preserve current behavior) ---
# Inference mode: downscaled | fullres_tiled | auto
# auto = fullres_tiled when before/after paths are GeoTIFF (RCA Critical #1)
# DETECTION_INFERENCE_MODE=auto
# Full-res cap (px) in fullres_tiled mode; 0 = native resolution
# DETECTION_FULLRES_MAX_SIDE=8192
# Native side (px) above which GeoTIFFs stream from disk windows (avoids OOM)
# Default lowered 8192β4096 (RCA Significant #5)
# DETECTION_WINDOWED_THRESHOLD=4096
# Soft RAM budget (MB) per in-memory array before switching to windowed streaming
# DETECTION_TILE_MEMORY_MB=1536
# Tile size / overlap for full-res scoring (overlap default 0.35 β RCA #6 seams)
# DETECTION_TILE_SIZE=512
# DETECTION_TILE_OVERLAP=0.35
# Skip SIFT registration on GPS-aligned GeoTIFF pairs: true|false|auto (RCA #4)
# DETECTION_SKIP_REGISTRATION_GEOTIFF=auto
# Local Delhi fine-tuned AdaptFormer (v3 frozen = Test F1 0.581 @ thr 0.2).
# Relative paths are resolved against the repo root (not the process CWD).
# ADAPTFORMER_WEIGHTS=models/adaptformer_delhi/v3_frozen
# Val-calibrated DL threshold (alias: DETECTION_DL_THRESHOLD). v3 = 0.2
# ADAPTFORMER_THRESHOLD=0.2
# DETECTION_DL_THRESHOLD=0.2
# Multi-scale DL fusion: off or a comma list, e.g. 0.5,1.0,1.5
# DETECTION_MULTISCALE=off
# Fusion strategy: smart_union | hysteresis | dl_only
# v3 ablation (runs/v3_app_ablation): dl_only @ 0.2 β Test F1 0.58;
# smart_union/hysteresis collapsed F1 to ~0.04 β prefer dl_only with v3.
# DETECTION_FUSION=dl_only
# TTA: off | hflip | full | auto. Ablation: hflip β same F1, ~2x slower on CPU.
# DETECTION_TTA=off
# Preprocessing toggles
# DETECTION_CLAHE=true
# DETECTION_HIST_MATCH=false
# DETECTION_SKIP_PREBLUR= # auto: on in fullres_tiled mode
# Border pixels zeroed in mask cleanup (auto: 4 fullres / 12 downscaled)
# DETECTION_BORDER_MARGIN=
# Tiles per GPU forward pass (1 = no batching)
# DETECTION_TILE_BATCH=1
# Save a downsampled probability-map PNG per run for debugging
# DETECTION_SAVE_PROB_MAP=false
# Skip the deep model entirely on tiles that are fully unchanged between before/
# after (worst-cell LAB distance below this value β biggest single cell diff,
# not an average, so a small real change is never diluted away and missed).
# Big speed win on large images where most of the scene is static background;
# 0/unset = disabled (default). Start conservative (e.g. 3-5).
# DETECTION_SKIP_UNCHANGED_THRESHOLD=0
# --- smart_union fusion calibration (Delhi accuracy sprint, Day 4-6) ---
# Base classical-score percentile floor for smart_union fusion. Tuned from
# 0.92 -> 0.90 against real Delhi Sentinel-2 imagery: +53% mean F1 on the
# 16-pair labeled eval set, verified to pass the full synthetic regression
# suite (incl. the mandatory car-FP gate) unchanged. Lower values (0.75-0.85)
# scored even higher on Delhi but were REJECTED β they cause false positives
# on the parked_cars synthetic case. See runs/calibration/best_params.json
# for the full decision record (winning + rejected configs, with reasons).
# DETECTION_CL_Q_BASE=0.90
# Base DL confidence floor for smart_union fusion (default 0.36). Tested
# down to 0.10 against Delhi imagery β no meaningful effect at full-set scale
# (the pretrained AdaptFormer model's near-zero output on this coarse-GSD,
# out-of-domain imagery isn't a thresholding problem; needs fine-tuning, not
# calibration). Left at default. See runs/calibration/best_params.json.
# DETECTION_DL_FLOOR_BASE=0.15
# --- Research-integration channels (KPCAMNet / IR-MAD / SRCDNet / BIT_CD) ---
# KPCA deep features (KPCAMNet): auto (default; drives Feature-Based method),
# on (also adds a channel to the classical score map), off
# DETECTION_KPCA=auto
# Analysis-resolution cap for KPCA feature extraction (CPU bound)
# DETECTION_KPCA_MAX_SIDE=768
# IR-MAD change statistic: auto (default) | on (adds classical channel) | off
# DETECTION_IRMAD=auto
# Regression radiometric normalization from IR-MAD no-change pixels
# (off by default: reduced F1 on the LEVIR-CD gate; useful for strong
# sensor/illumination mismatch between acquisitions)
# DETECTION_IRMAD_NORM=false
# Resample GeoTIFF pairs to a common (coarser) GSD before detection
# DETECTION_GSD_HARMONIZE=true
# Relative GSD difference that triggers harmonization/preflight warning
# DETECTION_GSD_TOLERANCE=0.15
# Preflight overlap gate: below this fraction of the after-image footprint,
# a pair is rejected as not suitable for change detection (hard fail)
# DETECTION_MIN_OVERLAP_HARD=0.02
# Below this fraction, overlap is weak but detection still runs (soft warning)
# DETECTION_MIN_OVERLAP_WARN=0.20
# Ensemble AdaptFormer with BIT_CD (requires weights, see below; default off)
# DETECTION_ENSEMBLE=off
# BIT_CD LEVIR-CD checkpoint path. Download best_ckpt.pt from the BIT_CD
# repo's release links (https://github.com/justchenhao/BIT_CD) and place it at
# app/cd_models/weights/bit_cd_levir.pth (raw training checkpoints with a
# model_G_state_dict key are accepted as-is).
# BIT_CD_WEIGHTS=app/cd_models/weights/bit_cd_levir.pth
# Public URL for report links in emails (default http://localhost:8000 locally)
# PUBLIC_BASE_URL=http://localhost:8000
# Email notifications (optional). Password reset still uses this backend.
# EMAIL_API_URL=https://emailservice.managemybusinessess.com/api/email/send
# Login SMS OTP: POST ToMobile/Message to SMS_API_URL (default: same host as
# EMAIL_API_URL with /api/sms/send). Or set SMS_PROVIDER=fast2sms + SMS_API_KEY.
# SMS_API_URL=
# SMS_PROVIDER=
# SMS_API_KEY=
# LOGIN_OTP_LOG=1
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=587
# SMTP_USER=
# SMTP_PASS=
# Hugging Face model cache directory
# HF_HOME=./.hf_cache
# Department export API (optional β FR-08)
# DEPT_API_URL=https://dept.example.gov/api/changes
# DEPT_API_KEY=your-api-key
# DDA admin account (optional β UAT / ops)
# DDA_ADMIN_EMAIL=admin@example.com
# DDA_ADMIN_PASSWORD=change-me
# DDA_TRAINING_EXPORT_KEY=secret-key-for-fp-export
|