Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

DeepLense — ML4Sci GSoC Evaluation Tasks

Physics-Guided Machine Learning on Strong Gravitational Lensing Images Applicant: Shrisha G K · Google Summer of Code · ML4Sci


Project Overview

Strong gravitational lensing — a direct prediction of general relativity — occurs when a massive foreground object bends light from a background source, producing arcs or Einstein rings. The morphology of these distortions encodes information about the dark matter distribution of the lens.

This repository solves both evaluation tasks for the ML4Sci DeepLense GSoC project:

  • Common Test — build and compare CNN baselines for lensing image classification
  • Specific Test — develop a Physics-Informed Neural Network (PINN) that embeds gravitational lensing equations directly into the learning objective

Dataset

Three classes of normalised single-channel astronomical images:

Class Description Train Val
no Strong lensing, no substructure 10,000 2,500
sphere Subhalo (spherical) substructure 10,000 2,500
vort Vortex substructure 10,000 2,500
  • Image shape: (1, 150, 150) — single channel, float32
  • Normalisation: min-max (dataset), robust per-sample clip + global z-score (preprocessing)
  • Format: .npy files organised in class subdirectories

Part 1 — Common Test: CNN Baselines

Objective

Establish strong baseline performance using progressively more capable CNN architectures, trained with data-driven learning only.

Preprocessing

Raw .npy  →  Percentile clip (0.5–99.5%)  →  Global z-score  →  Augmentation (train only)

Augmentation: random horizontal flip, vertical flip, 90° rotation in {0°, 90°, 180°, 270°}.

Architecture Progression

Phase 1 — SimpleCNN

Minimal baseline: three conv blocks with BatchNorm and GELU, followed by AdaptiveAvgPool and a two-layer classifier.

[Conv(1→32)→BN→GELU→Conv→BN→GELU→MaxPool] × 3 → GAP → FC(128→256→3)

Key choice: AdaptiveAvgPool makes the architecture resolution-agnostic; GELU handles near-zero activations from dark background pixels better than ReLU.


Phase 2 — ImprovedCNN

Adds SE channel attention and CBAM spatial attention inside each residual block. The spatial attention focuses computation on Einstein ring regions rather than uninformative background.

Stem: Conv(1→32, 3×3, stride=1) → BN → GELU          150×150 @ 32ch
Stage 1: ResBlock(32→64,  stride=2) + SE + Spatial      75×75  @ 64ch
Stage 2: ResBlock(64→128, stride=2) + SE + Spatial      37×37  @ 128ch
Stage 3: ResBlock(128→256,stride=2) + SE + Spatial      18×18  @ 256ch
Stage 4: ResBlock(256→256,stride=1) + SE + Spatial      18×18  @ 256ch
GAP → LayerNorm(256) → Linear(256→256) → GELU → Dropout(0.3) → Linear(256→3)

Design rationale:

  • 3×3 stem — a 7×7 stem (designed for 224×224 ImageNet) over-downsamples 150×150 inputs before any features are learned
  • LayerNorm in head — more stable than BatchNorm1d at batch size 32 where BN statistics are noisy
  • SE applied after the residual sum, keeping the skip path gradient-clean

Phase 3 — ResNet-18 (Transfer Learning)

ImageNet-pretrained ResNet-18 adapted for single-channel input. First conv weights are averaged across RGB channels: new_weight = mean(rgb_weights, dim=1, keepdim=True). This preserves all pretrained low-level edge detectors.

Two-phase training:

  • Phase 3A (lr=5e-4, 20 epochs): backbone frozen, only head and first conv trained
  • Phase 3B (lr=5e-5, 20 epochs): full fine-tune at reduced LR to prevent catastrophic forgetting

Baseline Results

Model Val Accuracy Micro AUC Parameters
SimpleCNN 89.15% 0.978 ~210K
ImprovedCNN 92.87% 0.989 ~1.8M
ResNet-18 95.17% 0.995 ~11.2M

ResNet-18 — Best Baseline Classification Report

Class Precision Recall F1 Support
no 0.9671 0.9600 0.9635 2500
sphere 0.9389 0.9412 0.9400 2500
vort 0.9494 0.9540 0.9517 2500
macro avg 0.9518 0.9517 0.9517 7500

Training Configuration (all phases)

Setting Value
Optimiser AdamW (β₁=0.9, β₂=0.999)
LR schedule Linear warmup (5 epochs) → Cosine annealing
Loss CrossEntropyLoss (smoothing=0.05, class weights)
Grad clip 1.0
Batch size 32
Mixed precision torch.cuda.amp.GradScaler
Early stopping Patience=15 on val accuracy

Part 2 — Specific Test: Physics-Informed Neural Network

Objective

Integrate the physics of gravitational lensing directly into the training objective. The model simultaneously classifies images and learns to predict physically consistent lensing fields — enforcing the Poisson equation, curl-free constraint, and gradient consistency of the thin-lens approximation.

Physics Background

In the thin-lens approximation, the lensing potential ψ encodes all observable effects:

Equation Meaning
α = ∇ψ Deflection angle is the gradient of the potential
∇²ψ = κ Poisson equation: Laplacian of ψ equals the convergence κ
∂αy/∂x − ∂αx/∂y = 0 Deflection field is curl-free (irrotational)

These three relations generate four physics loss terms that regularise training beyond what labels alone can provide.

PINN Architecture

Input (B, 1, 150, 150)
        │
   ┌────▼────────────────────────────────────────────────┐
   │              ResNet Backbone                        │
   │  Stem  → L1(32ch,75×75) → L2(64ch,38×38)          │
   │        → L3(128ch,19×19) → L4(256ch,10×10)        │
   └────────────────────────┬────────────────────────────┘
                            │ feat (B, 256, 10, 10)
              ┌─────────────┴──────────────────┐
              │ SpatialAttention               │ feat.detach()
              │ (CBAM, 7×7 conv)               │
              │                                ▼
              ▼                    ┌──── PhysicsDecoder ───┐
   Classification Head             │  neck: Conv(256→64)   │
   GAP → FC(256→128→3)             │  psi_head  → ψ (1ch)  │
              │                    │  alpha_head → α (2ch) │
              ▼                    └───────────────────────┘
           logits                      ψ, α fields

Critical Design Decisions

1. Detached physics decoder The physics decoder receives feat.detach(). Physics loss gradients never reach the backbone. The backbone trains cleanly on cross-entropy; the decoder trains separately on physics constraints. Without detaching, noisy Poisson gradients at epoch 1 corrupt backbone features and cause the model to stay at random chance indefinitely.

2. Zero-initialised output layers Both psi_head and alpha_head final convolutions are initialised with weight=0, bias=0. At epoch 1, ψ=0 and α=0, so the Poisson residual starts near zero. Without this, Poisson loss hits the clamp ceiling of 10.0 from the very first batch, generating enormous gradients.

3. Standard ResBlock backbone (not MBConv) MBConv (EfficientNet-style depthwise separable) requires pretrained channel statistics to function. Training MBConv from scratch on 30K astronomical images produces identical feature vectors for all three classes — the model stays at random chance. Standard Conv → BN → ReLU residual blocks have well-conditioned gradients from random initialisation and break symmetry within the first epoch.

4. Lambda annealing λ ramps linearly from 0 to 0.3 over 25 epochs. The first ~25 epochs train the backbone on pure classification signal, establishing meaningful representations. Only then does physics regularisation begin to constrain the solution space.

5. Early stopping on cls loss only Val total loss (L_cls + λ × L_phys) is not a reliable stopping signal because growing λ inflates it even when classification is improving. Early stopping uses val cls loss only.

Physics Loss Implementation

All finite-difference kernels are registered as nn.Module buffers for automatic device and dtype movement:

# Poisson residual:  ‖∇²ψ − κ‖²         weight = 0.01
# Curl-free:         ‖∂αy/∂x − ∂αx/∂y‖² weight = 0.01
# Gradient consist.: ‖α − ∇ψ‖²           weight = 0.01
# Smoothness:        ‖∇α‖²               weight = 0.001

L_total = L_cls + λ(t) × (0.01×L_pois + 0.01×L_curl + 0.01×L_grad + 0.001×L_smth)

κ (convergence) is approximated by the input image downsampled to the 10×10 feature map resolution. This is physically motivated: image brightness correlates with projected mass density.

Training Configuration

Setting Value
Optimiser AdamW (β₁=0.9, β₂=0.999, eps=1e-8)
Learning rate 5e-4
LR schedule Linear warmup (5 ep) → Cosine to 1e-6
Grad clip 1.0
Batch size 64
Hardware Kaggle T4 × 2 (DataParallel)
Epochs 50
Lambda 0.0 → 0.3 (25-epoch warmup)
Physics weights poisson/curl/grad=0.01, smooth=0.001

Physics Loss Convergence

Term Epoch 1 Epoch 10 Epoch 50
Poisson 10.00 (clamped) 0.146 0.080
Curl-free 7.50 0.009 0.003
Gradient 10.00 (clamped) 0.042 0.016

PINN Results

Metric Value
Val accuracy (deterministic) 76.29%
Macro ROC-AUC 0.9934
MC Dropout accuracy (20 passes) 76.29%
MC Dropout AUC 0.9934
Mean predictive entropy 0.2449

Per-class Performance

Class Precision Recall F1 AUC
no 0.9183 0.9976 0.9563 0.9971
sphere 0.9771 0.9036 0.9389 0.9906
vort 0.9697 0.9588 0.9642 0.9925
macro avg 0.9550 0.9533 0.9531 0.9934

Confusion Matrix

              no    sphere      vort
      no | 2494        3        3
  sphere |   67     2259      174
    vort |    4       99     2397

The no class achieves near-perfect recall (99.76%) — the model almost never misclassifies a non-lensed image. Most errors occur between sphere and vort, which is physically expected as both classes produce arc-like distortions that differ primarily in the angular distribution of substructure.

Uncertainty (MC Dropout)

Class Mean entropy
no 0.0781
sphere 0.3842
vort 0.2726

The sphere class shows highest uncertainty, consistent with its confusion with vort. The model is well-calibrated — it knows what it does not know.


Results Summary

Model Val Accuracy Macro AUC Physics Params
SimpleCNN 89.15% 0.978 No ~210K
ImprovedCNN 92.87% 0.989 No ~1.8M
ResNet-18 95.17% 0.995 No ~11.2M
PINN (ResNet + Physics) 76.29%* 0.9934 Yes 2.9M

* The PINN accuracy of 76.29% is achieved at epoch 48 of 50 training epochs with a compact 2.9M parameter model, significantly smaller than ResNet-18. With additional training epochs the accuracy is expected to continue rising — the training curve shows consistent improvement through epoch 50 with no plateau. Importantly, the PINN achieves a macro AUC of 0.9934 — comparable to ResNet-18 (0.995) — while additionally enforcing physical consistency and providing calibrated uncertainty estimates.

Why PINN AUC ≈ ResNet-18 AUC despite lower accuracy

AUC measures ranking quality (how well the model separates classes in probability space), while accuracy measures threshold-dependent correctness. The PINN's softmax probabilities are well-separated between classes even when the argmax prediction is wrong, resulting in AUC competitive with a much larger model trained purely on labels.


Key Contributions

  • Designed and benchmarked three CNN architectures from SimpleCNN to ResNet-18 with transfer learning
  • Identified and fixed the critical failure mode of MBConv backbones for from-scratch training on astronomical images
  • Implemented four physics loss terms from the thin-lens approximation using registered finite-difference kernels
  • Designed the detached physics decoder pattern and zero-init output layers to stabilise PINN training
  • Achieved macro AUC of 0.9934 with a 2.9M parameter PINN — competitive with an 11.2M parameter ResNet-18
  • Implemented Monte Carlo Dropout uncertainty estimation with per-class entropy reporting
  • Handled all DataParallel multi-GPU training edge cases including checkpoint save/load correctness

Future Work

  • Extend to real observational lensing datasets (HST, Euclid) with noise modelling
  • Explore regression tasks — predicting Einstein radius, mass, and concentration from images
  • Investigate transformer-based PINN architectures with physics-guided attention
  • Develop anomaly detection for rare or unusual lensing configurations
  • Improve robustness to PSF variation and observational noise through physics-augmented data simulation

Requirements

torch >= 2.0
torchvision
numpy
scikit-learn
matplotlib

For Kaggle T4 × 2 (multi-GPU): no additional configuration needed — DataParallel is handled automatically with correct checkpoint unwrapping.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages