A 1D CNN trained on raw IQ samples to classify 24 radio modulation schemes, exported to ONNX and served from a C++ pipeline whose predictions are validated to exact parity with PyTorch.
The question
How quickly can a signal become useful information?
My interest in defense and trading technology led me here: the time between receiving a signal and acting on it can matter as much as the information itself. I wanted to explore one part of that chain—recognizing a radio signal’s modulation—and carry a machine-learning model into a measured C++ inference pipeline.
This project classifies recorded signals. It does not demonstrate a deployed defense system, a trading advantage, or an end-to-end radio link.
What the measurements taught me.
The existing benchmark reports about 92% accuracy above +10 dB SNR, but performance falls toward chance in heavy noise. An accuracy-versus-SNR curve is therefore more informative than a single overall score.
The C++ pipeline reports 775 μs mean inference latency and 1,000 matching predictions against PyTorch. Prediction parity checks the export path; it does not establish accuracy on unseen real-world radio captures.
The surprising systems result: adding a producer/consumer thread did not help. Model execution already consumed 99.7% of inference time, so synchronization cost more than the small amount of work it could hide. The next useful experiments belong inside the inference workload: quantization, batching, or a smaller model.