by brewbooks is licensed under CC BY 2.0
This project demonstrates the process of using a Convolutional Neural Network (CNN) to classify space signals into four categories: "squiggle", "narrowband", "noise", and "narrowbanddrd".
- Create a virtual environment.
- Unzip
dataset.zip
. - Activate the virtual environment and install dependencies:
.venv\Scripts\Activate.ps1
pip install --upgrade pip ipykernel scikit-learn tensorflow pandas numpy matplotlib seaborn livelossplot
pip freeze > requirements.txt
The training involves the following steps:
- Essential libraries and modules are imported.
- TensorFlow's version is printed to ensure compatibility.
- The SETI dataset, transformed into images, is loaded.
- Data is reshaped to fit the model requirements.
- Spectrograms of the signals are plotted to visualize the data.
- ImageDataGenerators are used for data augmentation to improve model robustness.
- The CNN model is defined with layers designed to capture spatial hierarchies in the data.
- An exponential decay learning rate schedule is implemented.
- The model is compiled with the Adam optimizer.
- Callbacks including model checkpointing and plot losses are set up to monitor training.
- The model is trained using the defined data generators and callbacks.
- The model's performance is evaluated on a validation set.
- A classification report and confusion matrix provide detailed performance metrics.
This project outlines a comprehensive approach to classifying radio signals from space using a CNN with Keras. It covers the end-to-end process, from data preprocessing and model definition to training, evaluation, and interpretation of results.