PaulAlm commited on
Commit
d96de8e
Β·
1 Parent(s): 8cc2fd0

Added model card

Browse files
Files changed (1) hide show
  1. README.md +174 -0
README.md CHANGED
@@ -1,3 +1,177 @@
1
  ---
2
  license: mit
3
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
  ---
4
+
5
+ # Model Card β€” GenAI Channel Modeling Models
6
+
7
+ Pre-trained checkpoints for the paper:
8
+
9
+ > **Site-Specific MIMO Channel Generation via Diffusion and Flow Matching: Fidelity, Efficiency, and Downstream Utility**
10
+ > Sina Beyraghi, Masoud Sadeghian, Firdous Bin Ismail, Angel Lozano, Paul Almasan, and Giovanni Geraci
11
+ > [[arXiv:2510.10190](https://arxiv.org/abs/2510.10190)]
12
+
13
+ ---
14
+
15
+ ## Model overview
16
+
17
+ Two conditional generative model architectures are provided:
18
+
19
+ | Abbreviation | Full name | Inference mechanism |
20
+ |---|---|---|
21
+ | **cDDIM** | Conditional Denoising Diffusion Implicit Model | Reverse diffusion, `n_T = 150` steps |
22
+ | **cFMM** | Conditional Flow Matching Model | Euler integration, `steps = 10` |
23
+
24
+ Both share the same **Context U-Net** backbone (~15.6 M parameters, `n_feat = 256`) and are conditioned on 3-dimensional UE coordinates (`n_classes = 3`). Channels are represented in beamspace as two-channel real tensors of shape `(2, 4, 32)` (real and imaginary parts; 4 Rx Γ— 32 Tx beams for a 2Γ—2 Rx UPA and 4Γ—8 Tx UPA).
25
+
26
+ ---
27
+
28
+ ## Available checkpoints
29
+
30
+ Checkpoints are organised under `logs/` using the naming convention:
31
+
32
+ ```
33
+ {MODEL}_{dataset}_{freq}_{scenario}_{guide_w}_{N_train}_{date}/
34
+ ```
35
+
36
+ where `N_train` is the number of real training samples used.
37
+
38
+ ### cDDIM β€” 3.5 GHz, LoS
39
+
40
+ | `N_train` | Directory |
41
+ |---|---|
42
+ | 200 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_200_14_05_2026_10_19/` |
43
+ | 500 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_500_19_05_2026_09_32/` |
44
+ | 1 000 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_1000_19_05_2026_09_33/` |
45
+ | 2 000 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_2000_19_05_2026_09_46/` |
46
+ | 5 000 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_5000_19_05_2026_10_00/` |
47
+ | 10 000 | `logs/CDDIM_sina_dataset_3.5GHz_LoS_0.0_10000_20_05_2026_09_55/` |
48
+
49
+ ### cDDIM β€” 3.5 GHz, NLoS + LoS
50
+
51
+ | `N_train` | Directory |
52
+ |---|---|
53
+ | 200 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_200_15_05_2026_14_55/` |
54
+ | 500 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_500_19_05_2026_11_51/` |
55
+ | 1 000 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_1000_19_05_2026_11_57/` |
56
+ | 2 000 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_2000_19_05_2026_11_57/` |
57
+ | 5 000 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_5000_19_05_2026_11_58/` |
58
+ | 10 000 | `logs/CDDIM_sina_dataset_3.5GHz_NLoS+LoS_0.0_10000_19_05_2026_11_58/` |
59
+
60
+ ### cDDIM β€” 28 GHz, LoS
61
+
62
+ | `N_train` | Directory |
63
+ |---|---|
64
+ | 200 | `logs/CDDIM_sina_dataset_28GHz_LoS_0.0_200_13_05_2026_15_07/` |
65
+ | 500 | `logs/CDDIM_sina_dataset_28GHz_LoS_0.0_500_28_05_2026_09_33/` |
66
+ | 1 000 | `logs/CDDIM_sina_dataset_28GHz_LoS_0.0_1000_27_05_2026_08_52/` |
67
+
68
+ ### cFMM β€” 3.5 GHz, LoS
69
+
70
+ | `N_train` | Directory |
71
+ |---|---|
72
+ | 200 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_200_14_05_2026_10_21/` |
73
+ | 500 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_500_19_05_2026_12_22/` |
74
+ | 1 000 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_1000_19_05_2026_12_23/` |
75
+ | 2 000 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_2000_19_05_2026_12_23/` |
76
+ | 5 000 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_5000_19_05_2026_13_10/` |
77
+ | 10 000 | `logs/FMM_sina_dataset_3.5GHz_LoS_0.0_10000_20_05_2026_09_57/` |
78
+
79
+ ### cFMM β€” 3.5 GHz, NLoS + LoS
80
+
81
+ | `N_train` | Directory |
82
+ |---|---|
83
+ | 200 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_200_15_05_2026_14_57/` |
84
+ | 500 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_500_19_05_2026_14_28/` |
85
+ | 1 000 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_1000_19_05_2026_14_28/` |
86
+ | 2 000 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_2000_19_05_2026_14_29/` |
87
+ | 5 000 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_5000_19_05_2026_14_29/` |
88
+ | 10 000 | `logs/FMM_sina_dataset_3.5GHz_NLoS+LoS_0.0_10000_19_05_2026_14_30/` |
89
+
90
+ ### cFMM β€” 28 GHz, LoS
91
+
92
+ | `N_train` | Directory |
93
+ |---|---|
94
+ | 200 | `logs/FMM_sina_dataset_28GHz_LoS_0.0_200_13_05_2026_15_08/` |
95
+ | 500 | `logs/FMM_sina_dataset_28GHz_LoS_0.0_500_28_05_2026_09_34/` |
96
+ | 1 000 | `logs/FMM_sina_dataset_28GHz_LoS_0.0_1000_27_05_2026_08_55/` |
97
+
98
+ ---
99
+
100
+ ## Checkpoint contents
101
+
102
+ Each model directory contains:
103
+
104
+ | File | Description |
105
+ |---|---|
106
+ | `model.pth` | PyTorch state-dict of the trained model |
107
+ | `training_config.txt` | Hyperparameters used during training |
108
+ | `training_log.txt` | Loss curves and validation metrics logged during training |
109
+ | `indices.npy` | Shuffled dataset indices defining the train/val/test split |
110
+ | `train.npy` / `val.npy` / `test.npy` | Pre-processed channel arrays for each split |
111
+ | `train_coords.npy` / `val_coords.npy` / `test_coords.npy` | Corresponding UE coordinates |
112
+
113
+ > **Important:** The `indices.npy` file fixes the data split. cFMM checkpoints reuse the indices from the corresponding cDDIM run to ensure identical splits across both models.
114
+
115
+ ---
116
+
117
+ ## Downloading the checkpoints
118
+
119
+ ```bash
120
+ git clone https://huggingface.co/PaulAlm/GenAI_Channel_Modeling_Models
121
+ cd GenAI_Channel_Modeling_Models
122
+ unzip logs.zip
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Running inference
128
+
129
+ After downloading, set the `save_dir` variable in the inference script to the desired model directory and run:
130
+
131
+ ```bash
132
+ # cDDIM β€” LoS
133
+ python infer_cDDIM_LoS.py generate
134
+
135
+ # cFMM β€” LoS
136
+ python infer_cFMM_LoS.py generate
137
+ ```
138
+
139
+ Full instructions are in the [code repository](https://github.com/Telefonica-Scientific-Research/GenAI_Channel_Modeling/tree/main/cDDIM_and_cFMM).
140
+
141
+ ---
142
+
143
+ ## Training details
144
+
145
+ | Hyperparameter | cDDIM | cFMM |
146
+ |---|---|---|
147
+ | Epochs | 3 000 | 2 000 |
148
+ | Batch size | 100 | 100 |
149
+ | Learning rate | 1 Γ— 10⁻⁴ | 1 Γ— 10⁻⁴ |
150
+ | Inference steps | 150 (DDIM) | 10 (Euler) |
151
+ | Conditioning | 3D UE coordinates | 3D UE coordinates |
152
+ | Guidance weight | 0.0 | 0.0 |
153
+ | Model parameters | ~15.6 M | ~15.6 M |
154
+
155
+ ---
156
+
157
+ ## Datasets
158
+
159
+ The corresponding channel datasets are available at:
160
+ **[https://huggingface.co/datasets/PaulAlm/GenAI_Channel_Modeling_Datasets](https://huggingface.co/datasets/PaulAlm/GenAI_Channel_Modeling_Datasets)**
161
+
162
+ ---
163
+
164
+ ## Citation
165
+
166
+ If you use these models, please cite:
167
+
168
+ ```bibtex
169
+ @article{beyraghi2025sitespecific,
170
+ title = {Site-Specific MIMO Channel Generation via Diffusion and Flow Matching:
171
+ Fidelity, Efficiency, and Downstream Utility},
172
+ author = {Beyraghi, Sina and Sadeghian, Masoud and Bin Ismail, Firdous and
173
+ Lozano, Angel and Almasan, Paul and Geraci, Giovanni},
174
+ journal = {arXiv preprint arXiv:2510.10190},
175
+ year = {2025}
176
+ }
177
+ ```