An independent PyTorch reproduction of SAP-ISTA-Net (Li et al., IEEE Sensors Journal, 2025), a deep-unfolding network for multichannel radar forward-looking superresolution imaging — extended with a random sparse-subarray selection scheme and full statistical robustness testing.
⚠️ Not affiliated with the original authors. This is an independent academic reproduction built for graduate research purposes. All credit for the original SAP-ISTA-Net architecture and theory belongs to the paper's authors (see Citation).
Multichannel forward-looking radar suffers from poor azimuth resolution near the platform's flight path — a fundamental limitation of small real apertures. The original paper addresses this with SAP-ISTA-Net: a deep-unfolding network that maps the iterations of the Iterative Shrinkage-Thresholding Algorithm (ISTA) into a trainable multilayer architecture (ISTA-Net), and fuses its output with conventional single-channel synthetic aperture (backprojection) processing to resolve left/right ambiguity — combining the noise-robustness of a learned model with the resolution gains of synthetic aperture accumulation.
This repository reproduces that architecture end-to-end in PyTorch, following the paper's exact equations and hyperparameters, and adds an original extension described below.
The original paper evaluates a fixed 16-channel receiving array. This project instead asks: what happens if we only have 16 working antennas out of a much larger 100-element array, and which 16 aren't known in advance?
- Each training/evaluation snapshot randomly selects 16 of 100 antenna positions (without replacement) to build the steering matrix — a sparse-aperture robustness scenario not present in the source paper.
- Independent RNG streams are used for target-scene generation vs. antenna-subset selection, so scene randomness and array randomness never get conflated in the statistics.
- A Monte Carlo stability study (500 trials per SNR level) quantifies how sensitive reconstruction quality is to which 16 antennas happen to be active, reporting mean, standard deviation, and coefficient of variation (CV%) of NMSE.
- A full antenna-count sweep (16 / 32 / 64 / 100) compares fixed uniform subarrays against random subarrays, exposing a non-monotonic effect at low antenna counts (see Results) that is reported as-is rather than smoothed over.
Re-deriving the paper's equations from scratch surfaced several implementation pitfalls that are easy to get wrong and don't show up as errors — only as silently bad reconstructions:
- Sign error in the ISTA gradient step. An early implementation had the wrong sign in the
r = σ̂ + β·Aᴴ(s − A·σ̂)update (Eq. 16), which doesn't crash training but quietly makes the network converge to a systematically biased solution. - Steering matrix normalization. The steering matrix
A(Eq. 8–11) needed consistent scaling between the analytical model and the learned network; a mismatch here silently distorts the model's implicit noise assumptions. - Hyperparameter mismatch with Table I. An earlier version used
N_f=8andkernel_size=5; corrected toN_f=32,kernel_size=3,L=9to match the paper exactly. - Non-independent RNG streams. Originally, scene generation and antenna-subset selection shared one RNG, which subtly invalidates Monte Carlo comparisons across conditions. Fixed by giving each randomness source (
rng_scene,rng_ant) its own independent stream.
Total loss (L1 discrepancy + η·L2 symmetry-constraint, Eq. 22–24) over 150 epochs, for the random 16-of-100 antenna scenario:
Azimuth profile comparison across the processing chain — single-channel backprojection, classic ISTA, ISTA-Net, and the fused SAP-ISTA-Net — for four closely-spaced point targets:
Demonstrates how the sparse 16-of-100 subarray produces grating-lobe ambiguity in raw backprojection, and how the fused network output suppresses it:
Range-azimuth reconstruction with a random 16-of-100 subarray at SNR = 20 dB and 10 dB:
Classic ISTA vs. the trained ISTA-Net across SNR levels:
Full array vs. random subarray, evaluated at NMSE and PSNR for 16/32/64/100 active antennas:
| Antennas | NMSE (Uniform) | NMSE (Random) | PSNR (Uniform) | PSNR (Random) |
|---|---|---|---|---|
| 16 | 0.468 ± 0.192 | 0.312 ± 0.217 | 18.6 ± 2.5 dB | 21.2 ± 4.1 dB |
| 32 | 0.031 ± 0.072 | 0.082 ± 0.099 | 33.1 ± 4.9 dB | 28.1 ± 5.2 dB |
| 64 | 0.034 ± 0.106 | 0.041 ± 0.111 | 35.3 ± 5.7 dB | 34.2 ± 5.9 dB |
| 100 | 0.037 ± 0.113 | 0.036 ± 0.113 | 35.8 ± 6.1 dB | 35.7 ± 5.8 dB |
Honest note: at 16 antennas, random selection slightly outperforms uniform selection, while at 32 antennas the opposite holds. This is reported as observed rather than explained away — a plausible hypothesis is that uniform spacing at very low counts creates a large, regular grating-lobe pattern the network hasn't learned to suppress as well, while a random 16-subset spreads ambiguity more diffusely, but this repository does not claim to have proven that mechanism.
Reconstruction MSE across 60 different random 16-antenna configurations, as a function of the selected subarray's effective aperture:
Distribution of NMSE across 500 independent random subarray draws at each SNR level:
| SNR (dB) | NMSE (mean ± std) | CV (%) | PSNR (mean) |
|---|---|---|---|
| 10 | 0.283 ± 0.148 | 52.2% | 21.08 dB |
| 15 | 0.209 ± 0.113 | 54.1% | 22.46 dB |
| 20 | 0.207 ± 0.122 | 59.0% | 22.53 dB |
| Method | Time |
|---|---|
| Classic ISTA (real aperture) | 2.3 ms |
| ISTA-Net (real aperture) | 3.2 ms |
| Multichannel BP (multichannel SAR) | 0.3 ms |
| SAP-ISTA-Net (proposed, full fusion) | 18.3 ms |
Consistent with the original paper's finding: the learned network adds negligible overhead over classic ISTA, and the full fused pipeline remains fast enough for practical use.
| Code component | Paper reference |
|---|---|
RadarParams |
Table I |
select_random_subarray, build_steering_matrix |
Eq. (8)–(11) (+ this repo's random 16-of-100 selection) |
ISTANetLayer (linear update) |
Eq. (18) |
ISTANetLayer (soft-threshold, FeatureNet/Inv) |
Eq. (17), (19), (20) |
symmetry_err |
Symmetry term inside Eq. (23) |
train_model (L1 + η·L2) |
Eq. (22)–(24) |
classical_ista |
Eq. (15)–(17), baseline |
synthetic_aperture_bp |
Eq. (5), (6) |
fuse_sap_ista_net |
Eq. (25) |
git clone https://github.com/sheyda2021/sap-ista-net-reproduction.git
cd sap-ista-net-reproduction
pip install -r requirements.txt
jupyter notebook SAP-ISTA-Net_Final.ipynbtorch>=2.0.0
numpy>=1.24.0
matplotlib>=3.7.0
jupyter>=1.0.0
.
├── SAP-ISTA-Net_Final.ipynb # Full implementation + all experiments
├── loss_curve.png
├── final_comparison.png
├── single_target_ambiguity_demo.png
├── overlay_comparison_demo.png
├── full_2d_reconstruction.png
├── mse_vs_snr.png
├── antenna_count_comparison.png
├── subarray_sensitivity.png
├── monte_carlo_stability.png
├── computation_time_table2.png
├── requirements.txt
├── LICENSE
└── README.md
- All experiments are on simulated point-target and synthetic 2D scenes, matching the paper's simulation setup — not on measured radar data (the paper additionally validates on measured mmWave data, which this reproduction does not include).
- The random-subarray robustness study is this repository's own extension and has not been peer-reviewed; treat the antenna-count non-monotonicity as an empirical observation, not a proven result.
- Training set size (2,000 scenes) differs from the paper's reported 150 image/echo pairs, since robust learning across many random subarray realizations benefits from more training samples — this is a deliberate deviation, not an oversight.
This project reproduces and extends the method described in:
W. Li, R. Chen, M. Zhou, K. Zhang, Z. Wang, W. Pu, J. Wu, and J. Yang, "SAP-ISTA-Net: Synthetic Aperture Processing Assisted ISTA Network for Multichannel Radar Forward-Looking Superresolution Imaging," IEEE Sensors Journal, vol. 25, no. 9, pp. 15668–15678, May 2025, doi: 10.1109/JSEN.2025.3551167.
If you use this reproduction, please cite the original paper above. This repository is an independent academic implementation for learning/research purposes and is not endorsed by or affiliated with the original authors or IEEE.
Sheyda Graduate researcher in radar signal processing, ML, and applied data science. GitHub
Code in this repository is released under the MIT License (see LICENSE). This does not extend to the original paper's text or figures, which remain © IEEE 2025.








