This repository contains the core code for physics-guided NLOS reconstruction experiments used in our paper workflow, including:
- Training (
train_256.py) - Synthetic seen/unseen evaluation (
eval_only.py) - Real-world evaluation from checkpoint (
eval_real_from_ckpt.py) - Model and data pipeline (
DL_inference/) - Figure/evaluation utilities (
tools/eval/)
Recommended: conda with CUDA-enabled PyTorch.
Example:
conda create -n nlos python=3.9 -y
conda activate nlos
# install torch/cu117 and dependencies according to your GPU/CUDA- Synthetic training data (LFE motorbike benchmark):
- Real-world benchmark references:
- Self-captured real measurements:
Set dataset paths in your runtime config (see DL_inference/inference/config.py).
python train_256.pyAlso available via scripts:
bash scripts/run_train_physguard_trtlike_10ep.sh
bash scripts/run_train_sensorcalib_physguard_ep9.shpython eval_only.py \
--ckpt /path/to/epoch9.pth \
--seen_datafolder /path/to/seen \
--unseen_datafolder /path/to/unseen \
--run_real 0 \
--out_json eval_summary.jsonpython eval_real_from_ckpt.py \
--ckpt /path/to/epoch9.pth \
--real_datafolder /path/to/real_measurements \
--real_svfolder eval_real_outputsTools in tools/eval/ support per-epoch evaluation and plotting, including:
eval_physguard_unseen_per_epoch.pyplot_physguard_unseen_per_epoch.py
These are used to analyze late-epoch degradation trends.
Code and scripts are released in this repository. Datasets are linked above according to their original licenses/availability.
- This repository intentionally excludes heavy artifacts (checkpoints, archives, generated results).
- If you need reproducibility bundles, keep them in a separate storage/release package.