Machine learning pipeline for drone RF signal classification using the DroneDetect V2 dataset.
| Paper | Contribution |
|---|---|
| Swinney & Woods, 2021 | DroneDetect dataset, PSD vs spectrogram comparison |
| RF-UAVNet (IEEE, 2022) | 1D CNN architecture for drone classification (raw IQ signals) |
| Kiliç et al., 2021 | RF signal classification with machine learning |
| Swinney et al., 2021 | Flying mode classification via ResNet50 |
DroneDetect V2 (Swinney & Woods, 2021)
- 60 MHz sampling rate
- 2.43 GHz center frequency
- 7 drone types: DJI Air 2S, Parrot Disco, DJI Inspire 2, DJI Mavic Mini, DJI Mavic Pro 1/2, DJI Phantom 4
- 3 states: ON, Hovering (HO), Flying (FY)
- 4 interference conditions: CLEAN, Bluetooth, WiFi, Both
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install with PyTorch CPU
git clone <repo-url> && cd mldrone
uv sync --extra torch-cpu
# OR with PyTorch GPU (CUDA 12.1)
uv sync --extra torch-gpu
# Optional: add visualization tools (torchview, torchinfo)
uv sync --extra torch-cpu --extra viz
# Extract dataset
unzip /path/to/DroneDetect_V2.zip -d ./data/
# Test installation
uv run python -c "import torch; print(torch.__version__)"cp .env.example .env| Variable | Default | Description |
|---|---|---|
DRONEDETECT_DATA_DIR |
./data/raw |
Raw dataset directory |
DRONEDETECT_FEATURES_DIR |
./data/features |
Extracted features |
DRONEDETECT_MODELS_DIR |
./models |
Trained models |
DRONEDETECT_METADATA_CACHE |
./data/metadata_cache.parquet |
Metadata cache |
Open notebooks in your IDE (VSCode, PyCharm, etc.) with the .venv Python interpreter. (check out figures folder and related pdf for output)
Run preprocessing notebooks to extract:
- PSD features (for SVM)
- Spectrograms (224x224 for CNNs)
- Downsampled IQ (2x10000 for RF-UAV-Net)
Features saved to ./data/features/*.npz
021_training_svm.ipynb: SVM on PSD features022_training_cnn.ipynb: VGG16 + ResNet50 on spectrograms023_training_rfuavnet.ipynb: 1D CNN on raw IQ
Models saved to ./models/*.pth or *.pkl
uv run streamlit run interface/app.pySee inference page
| Model | Input |
|---|---|
| SVM (RBF) | PSD |
| VGG16-FC | Spectrogram |
| ResNet50-FC | Spectrogram |
| RF-UAV-Net | Raw IQ |
MIT