Spaces:
Running
Running
“Namhyun-Kim”
commited on
Commit
·
34abd42
1
Parent(s):
8fe68e9
Improve Space descriptions
Browse files
README.md
CHANGED
|
@@ -23,3 +23,9 @@ One-stop lab for exploring spectrograms, LWM embeddings, and lightweight evaluat
|
|
| 23 |
1. Select the **Spectrograms** and **t-SNE Analysis** tabs to explore embeddings.
|
| 24 |
2. Switch to **Modulation Classification** or **Joint SNR/Doppler Evaluation** to run the k-NN prototype with adjustable train/test splits.
|
| 25 |
3. Provide custom data (optional) to benchmark against bundled samples.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
1. Select the **Spectrograms** and **t-SNE Analysis** tabs to explore embeddings.
|
| 24 |
2. Switch to **Modulation Classification** or **Joint SNR/Doppler Evaluation** to run the k-NN prototype with adjustable train/test splits.
|
| 25 |
3. Provide custom data (optional) to benchmark against bundled samples.
|
| 26 |
+
|
| 27 |
+
## Tab Cheat Sheet
|
| 28 |
+
- **Spectrograms:** Inspect raw Sub-6 GHz spectrograms per technology/SNR/modulation/mobility before feature extraction.
|
| 29 |
+
- **t-SNE Analysis:** Recreate the "colored by SNR vs. modulation" comparisons from `plot/plot_tsne.py` with balanced sampling.
|
| 30 |
+
- **Modulation Classification:** Benchmark a lightweight k-NN head (standing in for the residual 1D-CNN) on LWM embeddings vs. raw inputs.
|
| 31 |
+
- **Joint SNR/Doppler Evaluation:** Compare MoE embeddings and raw spectrograms on the 14-way SNR/mobility task that feeds the beam selector.
|
app.py
CHANGED
|
@@ -749,10 +749,26 @@ with gr.Blocks(title="LWM-Spectro Lab") as demo:
|
|
| 749 |
with a lightweight k-NN prototype classifier for joint SNR/Doppler recognition.
|
| 750 |
"""
|
| 751 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 752 |
|
| 753 |
with gr.Tabs():
|
| 754 |
with gr.Tab("Spectrograms"):
|
| 755 |
-
gr.Markdown(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 756 |
with gr.Row():
|
| 757 |
with gr.Column(scale=1, min_width=320):
|
| 758 |
spec_tech = gr.Dropdown(
|
|
@@ -781,6 +797,14 @@ with gr.Blocks(title="LWM-Spectro Lab") as demo:
|
|
| 781 |
spec_tech.change(update_modulation_choices, inputs=spec_tech, outputs=spec_mod)
|
| 782 |
|
| 783 |
with gr.Tab("t-SNE Analysis"):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 784 |
with gr.Row():
|
| 785 |
with gr.Column(scale=1, min_width=300):
|
| 786 |
gr.Markdown("### Filters")
|
|
@@ -865,7 +889,14 @@ with gr.Blocks(title="LWM-Spectro Lab") as demo:
|
|
| 865 |
)
|
| 866 |
|
| 867 |
with gr.Tab("Modulation Classification"):
|
| 868 |
-
gr.Markdown(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 869 |
with gr.Row():
|
| 870 |
with gr.Column(scale=1, min_width=320):
|
| 871 |
mod_tech = gr.Dropdown(
|
|
@@ -889,6 +920,14 @@ with gr.Blocks(title="LWM-Spectro Lab") as demo:
|
|
| 889 |
)
|
| 890 |
|
| 891 |
with gr.Tab("Joint SNR/Doppler Evaluation"):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 892 |
if evaluation_disabled:
|
| 893 |
gr.Markdown(
|
| 894 |
"⚠️ Precomputed MoE embeddings are not bundled in this Space build. Upload a dataset locally to run evaluations."
|
|
|
|
| 749 |
with a lightweight k-NN prototype classifier for joint SNR/Doppler recognition.
|
| 750 |
"""
|
| 751 |
)
|
| 752 |
+
gr.Markdown(
|
| 753 |
+
"""
|
| 754 |
+
📡 **Sub-6 GHz → mmWave Beam Prediction Task**
|
| 755 |
+
- LWM extracts signal-centric features from Sub-6 GHz spectrograms, mirroring the first stage of the beam prediction pipeline.
|
| 756 |
+
- A lightweight downstream model (residual 1D-CNN, ≈500k params) consumes those embeddings to rank mmWave beams from the codebook.
|
| 757 |
+
- The bundled dataset mixes six DeepMIMO scenarios that were held out from LWM pre-training, highlighting cross-scenario generalization.
|
| 758 |
+
- Use the tabs below to inspect raw inputs, visualize the embedding space, and benchmark simple classifiers before deploying larger heads.
|
| 759 |
+
"""
|
| 760 |
+
)
|
| 761 |
|
| 762 |
with gr.Tabs():
|
| 763 |
with gr.Tab("Spectrograms"):
|
| 764 |
+
gr.Markdown(
|
| 765 |
+
"""
|
| 766 |
+
### 🔎 Spectrogram Studio
|
| 767 |
+
- Peek at the raw 128×128 Sub-6 GHz spectrograms that drive the beam prediction task.
|
| 768 |
+
- Filter by technology/SNR/modulation/mobility to understand how diverse the training pool is across scenarios.
|
| 769 |
+
- Use the gallery to sanity-check preprocessing before sending samples through LWM or downstream models.
|
| 770 |
+
"""
|
| 771 |
+
)
|
| 772 |
with gr.Row():
|
| 773 |
with gr.Column(scale=1, min_width=320):
|
| 774 |
spec_tech = gr.Dropdown(
|
|
|
|
| 797 |
spec_tech.change(update_modulation_choices, inputs=spec_tech, outputs=spec_mod)
|
| 798 |
|
| 799 |
with gr.Tab("t-SNE Analysis"):
|
| 800 |
+
gr.Markdown(
|
| 801 |
+
"""
|
| 802 |
+
### 🌀 Embedding vs. Raw Space
|
| 803 |
+
- Run quick t-SNE sweeps on either LWM embeddings or raw spectrogram vectors.
|
| 804 |
+
- Toggle **Color By** to mirror the "colored by modulation vs. SNR" comparisons from the CLI examples.
|
| 805 |
+
- Balanced per-SNR sampling plus configurable perplexity help match the figures you generate locally with `plot/plot_tsne.py`.
|
| 806 |
+
"""
|
| 807 |
+
)
|
| 808 |
with gr.Row():
|
| 809 |
with gr.Column(scale=1, min_width=300):
|
| 810 |
gr.Markdown("### Filters")
|
|
|
|
| 889 |
)
|
| 890 |
|
| 891 |
with gr.Tab("Modulation Classification"):
|
| 892 |
+
gr.Markdown(
|
| 893 |
+
"""
|
| 894 |
+
### 🎯 Lightweight Modulation Head
|
| 895 |
+
- Prototype how well the frozen LWM backbone separates modulation formats for each technology.
|
| 896 |
+
- The adaptive k-NN classifier approximates the behavior of the downstream residual 1D-CNN before heavy training.
|
| 897 |
+
- Sweep train/test splits and seeds to gauge robustness when only a portion of DeepMIMO-style data is labeled.
|
| 898 |
+
"""
|
| 899 |
+
)
|
| 900 |
with gr.Row():
|
| 901 |
with gr.Column(scale=1, min_width=320):
|
| 902 |
mod_tech = gr.Dropdown(
|
|
|
|
| 920 |
)
|
| 921 |
|
| 922 |
with gr.Tab("Joint SNR/Doppler Evaluation"):
|
| 923 |
+
gr.Markdown(
|
| 924 |
+
"""
|
| 925 |
+
### 🌪️ Joint Channel Dynamics Benchmark
|
| 926 |
+
- Evaluate the precomputed MoE embeddings on the 14-class joint SNR/Doppler recognition task.
|
| 927 |
+
- Mirrors the second stage of the beam prediction pipeline where mobility-aware cues guide codebook pruning.
|
| 928 |
+
- Upload or reference Hub-hosted tensors to compare MoE vs. raw spectrogram baselines before fine-tuning heavier heads.
|
| 929 |
+
"""
|
| 930 |
+
)
|
| 931 |
if evaluation_disabled:
|
| 932 |
gr.Markdown(
|
| 933 |
"⚠️ Precomputed MoE embeddings are not bundled in this Space build. Upload a dataset locally to run evaluations."
|