ControlRadio / README.md
akon1995's picture
Add ControlRadio model card and figures
827964d verified
|
Raw
History Blame Contribute Delete
7.12 kB
---
license: openrail++
base_model: stabilityai/stable-diffusion-2-1-base
tags:
- controlnet
- stable-diffusion
- diffusion
- radio-map
- wireless-communications
- pytorch-lightning
- research
- "arxiv:2608.09357"
---
# ControlRadio
## Prompt-Driven Controllable Diffusion for Cross-Modal Radio Map Generation
**Kangjun Liu · Xiying Pan · Shuhang Zhang · Xiang Xiang · Ke Chen · Yaowei Wang**
[Paper](https://arxiv.org/abs/2608.09357) · [HTML](https://arxiv.org/html/2608.09357v1) · [PDF](https://arxiv.org/pdf/2608.09357) · [Code](https://github.com/AkonLau/ControlRadio) · [RadioMapSeer](https://radiomapseer.github.io/)
ControlRadio is a prompt-driven controllable diffusion framework for cross-modal radio map generation. It combines natural-language descriptions with environmental layouts, including building morphology, transmitter locations, and optional dynamic-object cues, to synthesize structurally consistent and propagation-plausible radio maps.
> This repository hosts the pretrained weights. Training, evaluation, and inference code is maintained in the [ControlRadio GitHub repository](https://github.com/AkonLau/ControlRadio).
<p align="center">
<img src="assets/controlradio_framework.png" alt="ControlRadio framework" width="100%">
</p>
## Model Description
ControlRadio builds on [Stable Diffusion 2.1 Base](https://huggingface.co/stabilityai/stable-diffusion-2-1-base) and introduces:
- prompt-guided semantic conditioning with a frozen OpenCLIP text encoder;
- a Layout-Aware ControlNet for building, transmitter, and optional car conditions;
- a Noise Controller for controlling the latent prior used at inference time; and
- decoupled two-stage fine-tuning of a radio-domain VAE followed by the U-Net and ControlNet.
The released files are PyTorch Lightning checkpoints used by the research code. They are not standalone Diffusers or Transformers checkpoints and cannot be loaded directly with `from_pretrained()`.
## Released Checkpoints
| Model | Setting | `--carsInput` | Checkpoint | Size |
|---|---|---:|---|---:|
| ControlRadio-SRM | Static radio maps without cars | `no` | [`epoch=99-step=337499.ckpt`](experiments/prompt_v6/RadioMapSeer_RadioDiff-Seer-no-carsInput/control_sd21_3ch_1e-05_3_100_sd_tune_seed1230/lightning_logs/version_0/checkpoints/epoch=99-step=337499.ckpt) | 13.7 GB |
| ControlRadio-DRM | Dynamic radio maps with cars | `yes` | [`epoch=99-step=506249.ckpt`](experiments/prompt_v6/RadioMapSeer_RadioDiff-Seer-carsInput/control_sd21_3ch_1e-05_3_100_sd_tune_seed1230/lightning_logs/version_0/checkpoints/epoch=99-step=506249.ckpt) | 13.7 GB |
Each experiment directory also contains the corresponding `hparams.yaml`. Keep the downloaded directory structure unchanged because the evaluation and inference scripts construct checkpoint paths from the command-line configuration.
## Installation and Download
Clone the code repository and create the reference environment:
```bash
git clone https://github.com/AkonLau/ControlRadio.git
cd ControlRadio
conda env create -f environment.yaml
conda activate control
```
Install a Hugging Face Hub CLI version compatible with the reference Transformers environment, then download both checkpoints into the project root:
```bash
pip install "huggingface_hub>=0.30,<1.0"
hf download akon1995/ControlRadio --include "experiments/**" --local-dir .
```
The resulting layout is:
```text
ControlRadio/
`-- experiments/
`-- prompt_v6/
|-- RadioMapSeer_RadioDiff-Seer-no-carsInput/
| `-- control_sd21_3ch_1e-05_3_100_sd_tune_seed1230/
| `-- lightning_logs/version_0/checkpoints/
| `-- epoch=99-step=337499.ckpt
`-- RadioMapSeer_RadioDiff-Seer-carsInput/
`-- control_sd21_3ch_1e-05_3_100_sd_tune_seed1230/
`-- lightning_logs/version_0/checkpoints/
`-- epoch=99-step=506249.ckpt
```
## Evaluation and Inference
For both checkpoints, use the following checkpoint-selection arguments:
```text
--simulation Seer
--prompt_type v6
--batch_size 3
--learning_rate 1e-5
--max_epochs 100
--sd_locked False
--seed 1230
```
Select ControlRadio-SRM with `--carsInput no` or ControlRadio-DRM with `--carsInput yes`. Use `--test_simulation DPM`, `IRT2`, or `IRT4` to select the evaluation target. The paper uses Noise Controller settings `--means -0.1 --vars 0.001` selected on the validation set.
See the [GitHub evaluation and inference instructions](https://github.com/AkonLau/ControlRadio#evaluation-and-inference) for complete commands and data preparation.
## Results
<p align="center">
<img src="assets/controlradio_results.png" alt="Qualitative ControlRadio results" width="90%">
</p>
Results reported in the paper on the RadioMapSeer benchmark are:
| Scenario | RMSE ↓ | NMSE ↓ | PSNR ↑ | SSIM ↑ |
|---|---:|---:|---:|---:|
| SRM (DPM without cars) | **0.0166** | **0.0024** | **35.86** | **0.9787** |
| DRM (DPM with cars) | **0.0180** | **0.0028** | **35.29** | **0.9759** |
| IRT4 (without cars) | **0.0210** | **0.0040** | **33.46** | **0.9688** |
## Training Data
The models were trained and evaluated with [RadioMapSeer](https://radiomapseer.github.io/). The code follows the paper's map-level split: maps 0–499 for training, 500–599 for validation, and 600–700 for testing. Refer to the dataset provider for its terms and documentation.
## Intended Use and Limitations
ControlRadio is released for research on prompt- and layout-conditioned radio-map generation. The reported results compare generated maps with WinProp-derived references on simulated, previously unseen layouts.
- The released checkpoints have not been validated as replacements for site-specific electromagnetic solvers or field measurements.
- Performance should not be interpreted as sim-to-real validation or strict electromagnetic equivalence.
- Predictions depend on data preprocessing, prompt construction, coordinate conventions, and inference settings matching the released code.
- Users are responsible for validating generated maps before applying them to safety-critical or operational wireless-network decisions.
## License
The model weights are released under the `openrail++` license metadata, consistent with the [Stable Diffusion 2.1 Base](https://huggingface.co/stabilityai/stable-diffusion-2-1-base) foundation model. The ControlRadio source code is separately released under the [MIT License](https://github.com/AkonLau/ControlRadio/blob/main/LICENSE).
## Citation
```bibtex
@article{liu2026controlradio,
title = {ControlRadio: Prompt-Driven Controllable Diffusion for Cross-Modal Radio Map Generation},
author = {Liu, Kangjun and Pan, Xiying and Zhang, Shuhang and Xiang, Xiang and Chen, Ke and Wang, Yaowei},
journal = {arXiv preprint arXiv:2608.09357},
year = {2026}
}
```
## Acknowledgements
This work builds upon [ControlNet](https://github.com/lllyasviel/ControlNet), [Stable Diffusion](https://github.com/CompVis/stable-diffusion), [OpenCLIP](https://github.com/mlfoundations/open_clip), and [RadioMapSeer](https://radiomapseer.github.io/).