Capstone A: Modulation Classifier
The hero project of the classical half: a CNN that identifies the modulation scheme of a radio signal from raw I/Q samples, on the field's standard benchmark. This is a real, publishable-quality skill.
The brief
Build, evaluate, and document a modulation classifier on DeepSig RadioML RML2016.10a: 11 modulation classes, 128-sample I/Q frames, SNRs from -20 to +18 dB. Reproduce the baseline from O'Shea 2016, then beat it, then explain why your changes worked.
Data and baseline
Tasks
- Download RML2016.10a; write a clean PyTorch
Datasetfor it with a stratified train/validation/test split (stratify by class and SNR - this matters). - Exploratory analysis in a notebook: constellations and spectrograms per class at high and low SNR. Know your data before modeling it.
- Implement the O'Shea CNN2 baseline (two conv layers plus dense) and train it.
- Produce the two canonical plots: overall accuracy vs SNR, and a confusion matrix at high SNR.
Definition of done
Your baseline lands in the same regime as the paper (roughly 50 percent overall, 70-plus percent at high SNR). The AM-DSB/WBFM and QAM16/QAM64 confusions you will see are famous - note them.
Beat the baseline
Tasks
- Read O'Shea 2018 (Over-the-Air Deep Learning Based Radio Signal Classification) - note the ResNet architecture that became the modern reference point.
- Run at least three controlled improvement experiments, one at a time. Strong candidates: a 1D ResNet; input representation change (amplitude/phase or spectrogram vs raw I/Q); data augmentation (random phase rotation, time shift); SNR-aware training.
- Keep an experiment table: what changed, hypothesis, result. Negative results stay in the table.
Definition of done
At least a 5-point overall accuracy gain over your baseline, and you can attribute the gain to specific changes with evidence.
Write-up and stretch goals
Tasks
- Write a proper README for the project: problem, data, method, results (with the accuracy-vs-SNR plot front and center), what failed, what you would try next. Write it for a stranger.
- Stretch (pick one):
- Scale up to a subset of RML2018.01A (24 classes, 1024 samples - much bigger; use a GPU).
- With an RTL-SDR, capture real FM/other signals and test your model's behavior on out-of-distribution data - and write honestly about what happens.
- Distill your best model into a smaller one and measure the accuracy/size trade-off.
Definition of done
A stranger could clone your repo, reproduce your headline number with one command, and understand your conclusions from the README alone.
Finishing this capstone means you have done, end to end, the exact task in the paper "Automatic Modulation Classification Using Deep Learning" from your original list - not read about it, done it. Everything from here on is expansion.