Experiments following the paper "Conditional Generative Models for High-Resolution Range Profiles: Capturing Geometry-Driven Trends in a Large-Scale Maritime Dataset", E. Brient, S. Velasco-Forero, R. Kassab submitted at Eusipco 2026
Cleaned-up DDPM / GAN training code for HRRP radar profiles.
Executable code lives in src/ship_hrrp_gen, configs in configs/.
This repo follows the paper Conditional Generative Models for High-Resolution Range Profiles: Capturing Geometry-Driven Trends in a Large-Scale Maritime Dataset (EUSIPCO 2026 submission).
The paper compares conditioning variants and shows that geometry-based conditioning is the key driver:
- unconditional: no metadata;
- aspect-only (
asp): heading vs radar LOS; - dimensions-only (
dims): ship length/width; - aspect + dimensions (
scals): best overall compromise.
Main takeaway: adding dimensions strongly improves coarse structure realism; combining aspect + dimensions gives the best global behavior.
The theoretical projection length along line-of-sight is:
In practice, we estimate an empirical LRP (Length on Range Profile) from the HRRP envelope. The important point is the trend agreement: generated LRP should follow LOSP across aspect angle.
As in the paper, it is normal that nearest-match comparisons are not perfect at fine scale (HRRP is highly variable and noisy). The key objective here is to match coarse-scale geometry-driven structure.
This figure is used to verify that generated profiles reproduce the expected LOSP/LRP geometric trend, including variability across ships and aspect angles.
- Python ≥ 3.9
- PyTorch (CPU or CUDA, matching your GPU if available)
- The generated demo set (
data/ship_hrrp.pt).
cd github_repo
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e . # installs the ship_hrrp_gen package from src/python -m ship_hrrp_gen.train \
--config configs/gan_scalars.yaml \
--data data/ship_hrrp.pt \
--seed 42 \
--num-workers 0Useful flags:
--num-workers: dataloader workers (set 0 on small CPUs).--skip-eval: skip test metrics if no test split.--fast-dev-run: quick pipeline sanity-check (1 train/val/test batch).
python -m ship_hrrp_gen.train \
--config configs/gan_scalars.yaml \
--data data/ship_hrrp.pt \
--seed 0 \
--num-workers 0 \
--skip-eval \
--fast-dev-runArtifacts (checkpoints, figures, TensorBoard logs) are written under results/ following the figure_path in the config.
src/ship_hrrp_gen/: models (DDPM, GAN), dataset, utils, training script (train.py).configs/: all YAML configs.requirements.txt: Python deps..gitignore: ignores caches, venvs, and training outputs.
- Intended for a quick demo run on the 128 generated samples; no multi-GPU setup required.
- Final metrics rely on
compute_metricsinship_hrrp_gen.utils. If there is no test split (test_idxempty), use--skip-eval.



