Views
No views yet
| Objective | Measures | Goal |
|---|---|---|
| SAM (Spectral Angle Mapper) | Spectral fidelity | Minimize ↓ |
| ERGAS | Normalized spectral-spatial error | Minimize ↓ |
| SF (Spatial Frequency) | Spatial detail/sharpness | Maximize ↑ |
┌─────────────────────────────────────────────────┐
│ NSGA-II Optimizer (pymoo) │
│ Population: 20-30 individuals │
│ Each individual = [lr, λ_spec, λ_spat, │
│ n_filters, n_blocks] │
├─────────────────────────────────────────────────┤
│ ↓ For each individual: │
│ ┌──────────────────────────────────────┐ │
│ │ Z-PNN Fusion Network (PyTorch) │ │
│ │ Input: [MS_upsampled ∥ PAN] │ │
│ │ Architecture: Conv → ResBlocks → Conv │ │
│ │ Loss: λ_spec·L1 + λ_spat·SpatCorr │ │
│ └──────────────────────────────────────┘ │
│ ↓ Train for N epochs │
│ ┌──────────────────────────────────────┐ │
│ │ Evaluate: SAM, ERGAS, SF │ │
│ │ → fitness = [SAM, ERGAS, -SF] │ │
│ └──────────────────────────────────────┘ │
│ ↓ Return to NSGA-II │
│ Selection → Crossover → Mutation → Next Gen │
└─────────────────────────────────────────────────┘
↓ After all generations
Pareto Front + Visualizationsnsga2_image_fusion/
├── __init__.py # Package init
├── metrics.py # 10+ image quality metrics
├── model.py # Z-PNN fusion network + loss functions
├── data.py # Data pipeline (synthetic, H5, TIFF)
├── train.py # Training loop per individual
├── nsga2_optimizer.py # NSGA-II wrapper (pymoo)
├── visualize.py # Pareto front plots & analysis
run_nsga2_fusion.py # Main entry point
requirements.txt # Dependencies
sample_outputs/ # Demo run outputs1pip install -r requirements.txt
2python run_nsga2_fusion.py --mode demo # ~2 min CPU
3python run_nsga2_fusion.py --mode test # ~15 min CPU
4python run_nsga2_fusion.py --mode full --device cuda # hours, GPU| Variable | Range | Description |
|---|---|---|
lr | [1e-5, 1e-2] | Learning rate (log-scale) |
lambda_spectral | [0.1, 5.0] | Spectral loss weight |
lambda_spatial | [0.1, 5.0] | Spatial loss weight |
n_filters | {16..128} | Conv filter count |
n_blocks | {2..8} | Residual block count |