Team Name: RadarVision
ID: 39446
The Micro-Classify project leverages Micro-Doppler radar signatures to identify and classify small aerial targets like drones and birds. This classification system is essential for surveillance, defence, and airspace management, providing a reliable distinction between human-made and natural objects.
Current radar systems often struggle to differentiate between small aerial targets like drones and birds due to similarities in their radar signatures. Misclassification can lead to operational inefficiencies, such as false alarms or overlooked threats.
- Variability in micro-Doppler signatures across radar bands.
- Imbalanced and limited datasets.
- Achieving real-time, high-accuracy predictions.
The proposed solution leverages a CNN architecture with attention mechanisms to extract spatial and temporal features from micro-Doppler radar signals. Data augmentation via ACGANs (Auxiliary Classifier GANs) enhances dataset size and balance, improving classification performance.
- Source: DIAT-mSAT dataset provided by DRDO
- Size 6 classes with 4849 samples in total
- Classes: Drones, bird, RC Planes, Long Blade Rotor, Short Blade Rotor, Bird + Mini-Helicopter
- Preprocessing:
- Spectrogram generation
- Noise reduction and normalization
- Window Slicing, Window Warping and Jittering
- Challenges:
- Class imbalance resolved using ACGANs.
- High computational resource requirements for real time processing
- Platform: Hosted on AWS EC2.
- Containerization: Docker ensures scalability and reproducibility.
- API Access: Interactive API built using Flask.
- Raspberry PI 5: Built a data pipeline to stream spectrograms and showcase results on raspberry pi 5, by deploying the ml model on it.
- Accuracy: Measures overall classification correctness.
- F1-Score: Balances precision and recall for imbalanced datasets.
- Confusion Matrix: Visualizes classification performance across classes.
- Latency: Evaluates real-time prediction feasibility.
- Research papers on micro-Doppler based target classification.
- Pytorch and Scikit-Learn official documentation.
Frontend: HTML, CSS, JavaScript.
Backend: Flask.
Machine Learning: Python, PyTorch, Scikit-learn, numpy.
Visualization: Matplotlib.
Deployment: Docker, gunicorn, nginx, AWS ec2, Route 53, certbot.
API Testing: Postman API.
Version Control & CI/CD: Git/GitHub.
Micro-Classify/
├── ml_model/ # Machine learning model directory
│ ├── notebooks/ # Jupyter notebooks for experiments and model training
│ ├── src/
│ │ ├── data/ # Data handling scripts
│ │ ├── model/ # Model training, evaluation, and prediction scripts
│ │ ├── utils/ # Utility scripts (data preprocessing, visualization)
│ │ ├── main.py # Main script python file to run the pre-trained model
│ ├── requirements.txt # Python dependencies for ML
│ ├── venv/ # Virtual environment for ML
│ ├── .gitignore # Ignore unnecessary files (e.g., model weights, virtual env)
│ └── README.md # ML model documentation
├── docker-compose.yaml # Docker Compose file (if containerizing)
├── Dockerfile # Dockerfile for backend (if containerizing)
├── .gitignore # Global .gitignore file
├── LICENSE # License file
└── README.md # Main project documentation
notebook[1].ipynb: contains vgg16, vgg19, custom cnn models architecture, training, metrics.
customCNNWithAtt.ipynb: contains cnn + attention mechanisms, cnn + lstm, cnn + lstm with attention mechanism models architecture, training and metrics.
vgg+attention.ipynb: contains vgg19 + attention mechanisms model architecture, training and metrics.
notebook[5].ipynb: contains architecture diagrams, visualizations, inferences of different models and their confusion matrices.
Test Loss: 0.0244, Accuracy: 0.9918
Classification Report:
precision recall f1-score support
3_long_blade_rotor 0.99 0.99 0.99 72
3_short_blade_rotor 0.99 0.96 0.98 85
Bird 1.00 1.00 1.00 76
Bird+mini-helicopter 1.00 1.00 1.00 78
drone 1.00 1.00 1.00 85
rc_plane 0.98 1.00 0.99 90
accuracy 0.99 486
macro avg 0.99 0.99 0.99 486
weighted avg 0.99 0.99 0.99 486
Loss Curve
Accuracy Curve
F1 score Curve
-
Fork the repository
-
Create a new branch:
git checkout -b feature
-
Make your changes
-
Add your changes:-
git add <filename>
-
Commit your changes:
git commit -m 'Add new feature'
-
Push to the branch:
git push origin feature
-
Create a new Pull Request