Skip to content

Repository files navigation

射频信号调制识别算法 (RF Signal Modulation Classification)

基于时频双分支 CNN 的射频信号调制自动识别系统,使用 PyTorch 实现。支持 11 种常见调制类型的分类,含数据生成、训练、评估、可视化及 Gradio 交互界面。

调制类型

模拟调制 数字调制
AM(常规调幅) BPSK(二进制相移键控)
AM-DSB(双边带调幅) QPSK(四进制相移键控)
AM-SSB(单边带调幅) 8PSK(八进制相移键控)
WBFM(宽带调频) FSK2(二进制频移键控)
FSK4(四进制频移键控)
16QAM
64QAM

模型架构

采用时频双分支卷积神经网络(model_v2.pyDualBranchClassifier):

输入 (batch, 3, 512)  —  I路 + Q路 + FFT幅度
        │
   ┌────┴────┐
   ▼         ▼
 时域分支    频域分支
 (2ch→128)  (1ch→128)
 Conv1d+残差  Conv1d
 MaxPool      MaxPool
   │         │
   └────┬────┘
        ▼
    特征融合 (256)
   FC → 128 → 11
  • 时域分支:处理 I/Q 两路信号,使用残差块提取时域特征
  • 频域分支:处理 FFT 幅度谱,提取频域特征
  • 融合层:拼接两路特征后通过全连接层分类

环境依赖

torch>=2.0.0
numpy>=1.21.0
scipy>=1.7.0
scikit-learn>=1.0.0
matplotlib>=3.5.0
seaborn>=0.11.0
tqdm>=4.62.0
gradio>=4.0.0

安装依赖:

pip install -r requirements.txt

使用方法

# 训练模型
python main.py --mode train

# 评估模型(生成混淆矩阵、SNR曲线等)
python main.py --mode evaluate

# 生成可视化图表(波形、星座图、频谱图等)
python main.py --mode visualize

# 交互式演示
python main.py --mode demo

# 完整流程:训练 → 评估 → 可视化
python main.py --mode all

# 启动 Gradio Web 界面
python app.py

项目结构

.
├── main.py              # 主入口
├── config.py            # 配置(调制类型、信号参数、训练超参数)
├── dataset.py           # 数据生成器(11种调制信号 + AWGN噪声)
├── model.py             # 基础CNN模型
├── model_v2.py          # 时频双分支CNN模型(主力模型)
├── train.py             # 训练脚本(含数据预处理、FFT、早停)
├── evaluate.py          # 评估脚本(混淆矩阵、SNR分析、分类报告)
├── visualize.py         # 可视化脚本(波形、星座图、频谱图等)
├── app.py               # Gradio Web 交互界面
├── generate_report.py   # 实验报告生成
├── generate_report_detailed.py  # 详细实验报告生成
├── requirements.txt     # 依赖列表
├── checkpoints/         # 模型权重
│   └── best_model.pth
├── results/             # 评估结果与图表
    ├── confusion_matrix.png
    ├── snr_accuracy.png
    ├── class_accuracy.png
    ├── training_curve.png
    ├── waveforms.png
    ├── constellation.png
    ├── spectrograms.png
    └── ...


## 关键参数

| 参数 | 值 |
|------|-----|
| 采样率 | 200 kHz |
| 信号长度 | 1024 点 |
| 载波频率 | 10 kHz |
| 信噪比范围 | -10 dB ~ 30 dB(步进 5 dB) |
| 每类样本数 | 2000 |
| 训练/验证/测试 | 70% / 15% / 15% |
| Batch Size | 64 |
| Epochs | 40(含早停) |
| 优化器 | AdamW(lr=0.001, weight_decay=1e-5) |
| 学习率调度 | ReduceLROnPlateau |
| 梯度裁剪 | max_norm=5.0 |

## 评估指标

- **总体准确率** 与 **F1-Score**
- **混淆矩阵**:展示各类别间的混淆情况
- **SNR-准确率曲线**:不同信噪比下的识别性能
- **各类别准确率**:逐类别识别表现

About

基于深度学习的射频信号调制识别算法 | RF Signal Modulation Classification with Dual-Branch CNN (PyTorch)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages