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 \
--seed 42Useful flags:
--config: direct YAML path if it exists; otherwise resolved from the workspaceconfig/directory.--data-path: optional dataset path; defaults todata/ship_hrrp.ptwhen the CSV dataset is absent.--iteration: experiment iteration id used in logger naming.--seed: random seed for train/validation/test split.--fast-dev-run: one short local sanity run on a small subset.--skip-eval: skip final checkpoint reload and test metrics.
python -m ship_hrrp_gen.train \
--config configs/gan_scalars.yaml \
--fast-dev-run \
--seed 0Artifacts (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/: the eight supported YAML configs:ddpm,ddpm_scalars,ddpm_va,ddpm_dims,gan,gan_scalars,gan_va, andgan_dims.requirements.txt: Python deps..gitignore: ignores caches, venvs, and training outputs.
- Intended for a quick demo run on
data/ship_hrrp.pt; no CSV dataset or multi-GPU setup is required. - Final metrics rely on
compute_metricsinship_hrrp_gen.utils. If there is no test split (test_idxempty), use--skip-eval.


