kbhujbal/SudarshanChakra-acoustic_uav_threat_detection_CNN
GitHub: kbhujbal/SudarshanChakra-acoustic_uav_threat_detection_CNN
基于梅尔频谱图与卷积神经网络的实时无人机声学威胁检测系统,专为防御场景下高召回率的 UAV 识别而设计。
Stars: 44 | Forks: 7
# SUDARSHANchakra - 声学 UAV 威胁检测系统
一个生产级的深度学习系统,利用梅尔频谱图(Mel-Spectrogram)分析和卷积神经网络(CNN)来检测无人机/UAV 的声学特征。
## 任务
为地面防御部队开发一套声学监控系统,能够:
- 实时监听环境音频
- 检测无人机螺旋桨的特定声学特征
- 将音频分类为 **威胁(无人机)** 或 **安全(背景)**
## 特性
- **音频转视觉流程**:将原始音频波形转换为梅尔频谱图(Mel-Spectrograms)以供 CNN 分析
- **自定义 CNN 架构**:专为声学模式识别优化的 4 层网络
- **国防级指标**:在防御场景中优先考虑召回率(Recall,尽量减少漏报的威胁)而非精确率(Precision)
- **生产就绪**:包含推理 API 的模块化 Python 包
- **自动摄取**:自动下载并准备 DroneAudioDataset
## 项目结构
```
SudarshanChakra/
├── configs/
│ └── config.py # Central configuration parameters
├── src/
│ ├── __init__.py
│ ├── data_ingestion.py # Auto-clone dataset from GitHub
│ ├── data_loader.py # PyTorch Dataset & DataLoader
│ ├── model.py # CNN architectures
│ ├── train.py # Training pipeline with early stopping
│ └── inference.py # Real-time threat detection
├── outputs/
│ ├── models/ # Saved model checkpoints
│ ├── plots/ # Confusion matrix, training curves
│ └── logs/ # Training reports (JSON)
├── data/ # Auto-downloaded dataset
├── main.py # Main entry point
├── requirements.txt # Dependencies
└── README.md
```
## 快速开始
### 1. 设置环境
```
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或:venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
```
### 2. 训练模型
```
# 完整 pipeline:下载数据 -> 训练 -> 评估
python main.py --train
```
这将:
1. 从 GitHub 克隆 DroneAudioDataset
2. 打印数据集目录结构
3. 自动发现无人机/背景音频路径
4. 通过早停机制训练 CNN
5. 生成混淆矩阵和训练图表
6. 将最佳模型保存至 `outputs/models/best_model.pth`
### 3. 运行推理
```
# 分析单个音频文件
python main.py --detect path/to/audio.wav
# 使用自定义 threshold(值越低 = 越敏感)
python main.py --detect recording.wav --threshold 0.3
# 在示例数据上运行 demo
python main.py --demo
```
## 配置
编辑 `configs/config.py` 以修改系统参数:
| 参数 | 默认值 | 描述 |
|-----------|---------|-------------|
| `SAMPLE_RATE` | 22050 Hz | 音频采样率 |
| `DURATION` | 2.0 s | 分析窗口 |
| `N_MELS` | 128 | 梅尔频率区间 |
| `BATCH_SIZE` | 32 | 训练批次大小 |
| `LEARNING_RATE` | 1e-4 | Adam 优化器学习率 |
| `THREAT_CONFIDENCE_THRESHOLD` | 0.4 | 检测灵敏度 |
## 数据集
**来源**:[Sara Al-Emadi 的 DroneAudioDataset](https://github.com/saraalemadi/DroneAudioDataset)
系统会自动:
1. 将代码库克隆到 `data/DroneAudioDataset/`
2. 扫描 `Binary_Drone_Audio` 文件夹结构
3. 发现无人机和背景/未知音频目录
4. 验证 WAV 文件的完整性
## 模型架构
### DroneDetectorCNN(默认)
```
Input: Mel-Spectrogram (1, 128, 87)
↓
ConvBlock: 1 → 32 channels, MaxPool
↓
ConvBlock: 32 → 64 channels, MaxPool
↓
ConvBlock: 64 → 128 channels, MaxPool
↓
ConvBlock: 128 → 256 channels, MaxPool
↓
Global Average Pooling
↓
FC: 256 → 128 → 64 → 2 (with Dropout)
↓
Output: [Safe, Threat] logits
```
**总参数量**:约 500K(轻量化,适合边缘部署)
## 防御指标
在防御应用中:
- **假阴性**(漏检无人机)= **致命** → 优先考虑高召回率
- **假阳性**(误报)= **可接受** → 接受较低的精确率
系统默认使用 **0.4 置信度阈值**,偏向于威胁检测。
### 输出示例
```
[TEST RESULTS]
Accuracy: 0.9523
Precision: 0.9412
Recall: 0.9697 ← 97% of drones detected!
F1 Score: 0.9552
[DEFENSE METRICS INTERPRETATION]
- Recall (96.97%): Percentage of actual threats detected
→ 3.0% of threats are MISSED (False Negatives)
- Precision (94.12%): Percentage of alerts that are real threats
→ 5.9% of alerts are FALSE (False Positives)
```
## 输出
训练完成后,可以在 `outputs/` 目录找到以下产物:
| 文件 | 描述 |
|------|-------------|
| `models/best_model.pth` | 最佳模型检查点 |
| `plots/confusion_matrix.png` | 测试集混淆矩阵 |
| `plots/training_history.png` | 损失、准确率和指标曲线 |
| `logs/training_report.json` | 完整的训练指标日志 |
## 推理 API
```
from src.inference import ThreatDetector
# 初始化 detector
detector = ThreatDetector(threshold=0.4)
# 分析音频文件
result = detector.detect("recording.wav")
# 结果格式:
# {
# "status": "THREAT", # 或 "SAFE"
# "confidence": 0.89,
# "probabilities": {"safe": 0.11, "threat": 0.89},
# "file": "recording.wav"
# }
# 打印格式化的告警
detector.print_alert(result)
```
## CLI 参考
```
# 显示配置
python main.py --config
# 仅数据摄入
python main.py --ingest
# Training pipeline
python main.py --train
# Inference
python main.py --detect audio.wav
python main.py --detect audio.wav --threshold 0.3
# Demo mode
python main.py --demo
```
## 环境要求
- Python 3.8+
- PyTorch 2.0+
- librosa 0.10+
- scikit-learn 1.3+
- Git(用于克隆数据集)
## 引用
如果使用了 DroneAudioDataset:
```
Al-Emadi, Sara, et al. "Audio Based Drone Detection and Identification
using Deep Learning." 2019 15th International Wireless Communications
& Mobile Computing Conference (IWCMC). IEEE, 2019.
```
## 许可
本项目仅供授权的国防研究和教育目的使用。
**SUDARSHANchakra** - 通过声学智能守护天空。
标签:CNN, PyTorch, 凭据扫描, 卷积神经网络, 声学检测, 安防监控, 无人机检测, 深度学习, 逆向工具, 音频分析