Base BackBone, Paper Link: RadioDiff, Code Link: GitHub
PINN Enhanced with Helmholtz Equation, Paper Link: RadioDiff-$k^2$, Code Link: GitHub
Efficiency Enhanced RadioDiff, Paper Link: RadioDiff-Turbo
Indoor RM Construction with Physical Information, Paper Link: iRadioDiff, Code Link: GitHub
3D RM with DataSet, Paper Link: RadioDiff-3D, Code Link: GitHub
Sparse Measurement for RM ISAC, Paper Link: RadioDiff-Inverse
Sparse Measurement for NLoS Localization, Paper Link: RadioDiff-Loc
For more RM information, please visit the repo of Awesome-Radio-Map-Categorized
This is the code of "iRadioDiff: Physics Informed Diffusion Model for Effective Indoor Radio Map Construction and Localization" accepted by the IEEE ICC 2026.
- install torch
We have verified that the project can run with Python 3.10, PyTorch 2.2.0, torchvision 0.17.0, torchaudio 2.2.0, and CUDA 12.1.
conda create -n radiodiff python=3.10
conda activate radiodiff
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 pytorch-cuda=12.1 -c pytorch -c nvidia
- install other packages.
pip install -r requirement.txt
- prepare accelerate config.
accelerate config # HOW MANY GPUs YOU WANG TO USE.
We used the Indoor Radio Map Dataset dataset for model training and testing.
-
Before training or inference, you should first generate the boundary maps and place them under
BoundaryMapsin the dataset root directory. This step is required because the dataloader reads boundary files from$ICASSP2025_Dataset/BoundaryMapswith filenames in the formatboundary_<original_input_filename>.png. -
You can generate them with
generate_boundary.py:
python generate_boundary.py --input-dir ./ICASSP2025_Dataset/Inputs/Task_1_ICASSP --positions-dir ./ICASSP2025_Dataset/Positions --output-dir ./ICASSP2025_Dataset/BoundaryMaps- The data structure should look like:
|-- $ICASSP2025_Dataset
| |-- Input
| |-- |-- Task_1_ICASSP
| |-- |-- |-- B1_Ant1_f1_S0.PNG
| |-- |-- |-- B1_Ant1_f1_S1.PNG
| ...
| |-- Positions
| |-- |-- Positions_B1_Ant1_f1.csv
| |-- |-- Positions_B1_Ant1_f2.csv
| ...
| |-- BoundaryMaps
| |-- |-- boundary_B1_Ant1_f1_S0.png
| |-- |-- boundary_B1_Ant1_f1_S1.png
| ...
| |-- Output
| |-- |-- Task_1_ICASSP
| |-- |-- |-- B1_Ant1_f1_S0.PNG
| |-- |-- |-- B1_Ant1_f1_S1.PNG
| ...
accelerate launch train_cond_dpm.py --cfg ./configs/ICA_dm.yaml
make sure your model weight path is added in the config file ./configs/ICA_dm.yaml (line 66), and run:
python sample_cond_dpm.py --cfg ./configs/ICA_dm.yaml
Note that you can modify the sampling_timesteps (line 7) to control the inference speed.
Thanks to the base code DDM-Public.