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, 凭据扫描, 卷积神经网络, 声学检测, 安防监控, 无人机检测, 深度学习, 逆向工具, 音频分析