umutsaray/DroneSwarm-Operational-Intelligence
GitHub: umutsaray/DroneSwarm-Operational-Intelligence
基于 YOLOv8 的无人机蜂群检测与可解释威胁评估研究框架,提供从训练推理到风险量化和论文图表生成的完整流水线。
Stars: 1 | Forks: 0
# DroneSwarm 作战智能
基于 AI 的无人机蜂群检测与威胁评估流水线的开箱即用实现,该流水线围绕 YOLOv8 和可解释的威胁评分模型构建。
本仓库为以下学术成果的配套资源:
**基于深度学习的无人机蜂群攻击 AI 检测与威胁评估系统**
公开的代码仓库特意采用了轻量化设计。它包含源代码、测试、配置、可直接用于论文的输出图表,以及用于可复现性检查的小型 YOLO 格式样本数据集。大规模训练运行、完整数据集和模型检查点未包含在 GitHub 发布版中。
## 项目概述
该系统支持以下研究工作流:
1. 准备 YOLO 格式的无人机蜂群数据集。
2. 创建训练/验证/测试数据集划分。
3. 训练并比较 YOLOv8n 和 YOLOv8s。
4. 在测试集上运行数据集级别的推理。
5. 将真实检测结果转换为威胁评分特征。
6. 根据实验输出生成可直接用于论文的图表。
7. 通过 Streamlit 应用程序检查输出。
流水线不会生成任何随机的仪表盘数值、虚假检测结果或模拟的威胁评分。
## 系统架构
```
Input Image or Video
-> Image Preprocessing
-> YOLOv8 Detection
-> Feature Extraction
-> Threat Scoring Engine
-> Risk Classification
-> Streamlit Dashboard
-> Decision Support
```
相关的论文图表包含在:
```
paper_outputs/figure_system_architecture.png
```
## 可解释的威胁评分
威胁模型遵循论文公式:
```
TS = alpha * N_norm + beta * D + gamma * P
```
其中:
```
N = detected drone count
N_norm = min(N / N_max, 1)
A_swarm = normalized area of the minimum rectangle covering detected boxes
D = min((N / A_swarm) / D_max, 1)
d = normalized distance between swarm centroid and protected region center
P = max(0, min(1, 1 - d / d_max))
TS = max(0, min(1, alpha * N_norm + beta * D + gamma * P))
```
风险级别为:
```
0.00-0.25 Low
0.25-0.50 Medium
0.50-0.75 High
0.75-1.00 Critical
```
所有权重、阈值和受保护区域设置均可在以下文件中配置:
```
config/config.yaml
```
## 仓库结构
```
DroneSwarm-Operational-Intelligence/
├── app.py
├── config/
│ └── config.yaml
├── data/
│ ├── images/ # lightweight sample images only
│ ├── labels/ # matching YOLO labels for sample images
│ └── splits/ # generated split files
├── paper_outputs/ # publication figures, tables, and summaries
├── src/
│ ├── augment_dataset.py
│ ├── benchmark_realtime.py
│ ├── check_project.py
│ ├── dataset.py
│ ├── evaluate.py
│ ├── infer.py
│ ├── threat_score.py
│ ├── train.py
│ ├── utils.py
│ └── visualization.py
├── tests/
├── requirements.txt
├── README.md
└── .gitignore
```
## 安装说明
使用 Python 3.10 或更高版本。
```
pip install -r requirements.txt
```
如需 CUDA 加速,请在运行训练或基准测试之前,安装与本地 CUDA 驱动程序匹配的 PyTorch 版本。支持 CPU 执行,但速度较慢。
## 数据集放置
仓库包含一个小型样本数据集,含 5 对图像-标签,用于冒烟测试和命令验证。
如需进行完整实验,请替换或扩展:
```
data/images/
data/labels/
```
标签必须是标准的 YOLO 文本文件,且具有与图像匹配的主文件名。
完整数据集和训练后的权重可通过合理的学术请求获取。
## 准备数据集划分
生成绝对 POSIX 路径的划分文件和兼容 YOLO 的 `data.yaml`:
```
python -m src.dataset --config config/config.yaml
```
输出:
```
data/splits/train.txt
data/splits/val.txt
data/splits/test.txt
data/splits/data.yaml
data/splits/split_summary.csv
```
## 可复现性检查
```
python -m src.check_project --config config/config.yaml
```
这将验证本地数据文件夹、图像-标签配对、划分文件、论文输出、依赖项以及模型就绪条件。GitHub 发布版不包含 `.pt` 检查点;YOLOv8 预训练权重可在训练期间由 Ultralytics 下载,而论文训练权重将根据学术请求单独分发。
## 训练
训练所有已配置的模型:
```
python -m src.train --config config/config.yaml
```
训练单个模型:
```
python -m src.train --config config/config.yaml --models yolov8n
```
仅针对训练集进行可选的数据增强:
```
python -m src.augment_dataset --config config/config.yaml
python -m src.train --config config/config.yaml --use-augmented
```
验证和测试图像永远不会进行增强。
## 数据集级别的推理
训练完成后,在测试集上运行推理:
```
python -m src.infer --config config/config.yaml --run-dir experiments/run_
```
预测 CSV 保存在:
```
experiments/run_/predictions/
```
每一行包含图像名称、模型名称、检测数量、平均置信度、边界框、推理时间、FPS、`N_norm`、`A_swarm`、`D`、`P`、最终 `TS` 以及风险等级。
## 推理示例
```
python -m src.dataset --config config/config.yaml
python -m src.train --config config/config.yaml --models yolov8n
python -m src.infer --config config/config.yaml --run-dir experiments/run_ --models yolov8n
```
请使用训练命令打印的运行目录替换 `experiments/run_`。
## 生成论文图表
```
python -m src.evaluate --config config/config.yaml --run-dir experiments/run_
```
评估器会读取真实的训练和推理产出物。如果缺少必需的输入,它会创建显式的占位图表,而不是捏造结果。
论文输出将写入:
```
paper_outputs/
```
包含的论文输出:
```
figure_system_architecture.png
figure_detection_examples.png
figure_dashboard.png
figure_training_curves.png
figure_confusion_matrix.png
figure_threat_workflow.png
figure_dense_swarm_example.png
table_model_comparison.csv
table_threat_scores.csv
table_experiment_configuration.csv
experiment_summary.md
```
## 实时基准测试
CPU 或选定设备的基准测试:
```
python -m src.benchmark_realtime --config config/config.yaml
```
安装了支持 CUDA 的 PyTorch 时,进行 CUDA 基准测试:
```
python -m src.benchmark_realtime --config config/config.yaml --device cuda:0 --output-suffix gpu
```
该基准测试使用 640x640 输入分辨率、10 次预热推理和所有测试图像,并报告:
```
FPS = 1000 / average_inference_time_ms
```
## Streamlit 应用程序
从仓库根目录启动:
```
streamlit run app.py
```
该应用程序提供:
- 在训练权重可用后进行单张图像推理,
- 针对 YOLOv8n 和 YOLOv8s 的模型选择,
- 检测结果可视化,
- 基于预测的威胁评分,
- 实验表格查看,
- 论文输出的图表查看。
## 测试
```
python -m unittest discover -s tests
```
测试涵盖:
- 威胁评分公式行为,
- 风险等级分类,
- YOLO 标签解析,
- 蜂群面积计算,
- 推理 CSV 模式,
- 数据增强标签有效性,
- 实时基准测试表格模式。
## 可复现性声明
此发布版本旨在从仓库根目录运行,无需用户特定的桌面路径或外部硬编码目录。样本数据集特意设计得很小,仅供软件验证之用。手稿中的科学论断应通过完整数据集、固定的训练/验证/测试划分、真实的 YOLO 训练输出以及基于预测的威胁评分 CSV 文件进行复现。
流水线将真实数据与增强的训练样本区分开。增强图像不会被视为新的真实世界观测数据;验证集和测试集保持非增强状态。
## 引用
如果本仓库对您的工作有帮助,请引用相关手稿:
```
@article{drone_swarm_threat_assessment,
title = {AI-Based Detection and Threat Assessment System for Drone Swarm Attacks Using Deep Learning},
author = {Authors to be added after journal submission},
journal = {Manuscript under review},
year = {2026}
}
```
## 数据和权重可用性
完整数据集和训练后的权重可通过合理的学术请求获取。
为了使发布版本适合公开托管,大型检查点被特意排除在 GitHub 仓库之外。如果日后公开发布,训练后的权重应通过 GitHub Releases、Zenodo、机构存储或其他持久性研究产出物仓库进行分发。
## 局限性
- 威胁评分是基于图像进行归一化的,如果没有进行相机校准,则无法估算物理距离。
- 威胁评分的权重和阈值需要进行独立的实际运行有效性验证。
- 轻量化的样本数据集不足以支撑科学性能声明。
- 在最终修订手稿之前,必须从完整的实验输出中重新生成论文图表。
## 引用
如果您在研究中使用此框架,请引用:
U. Saray, “AI-Based Detection and Threat Assessment System for Drone Swarm Attacks Using Deep Learning,” 2026.
## 可复现性声明
本仓库包含所提出的作战级 UAV 蜂群智能框架的轻量化公开发布版本。
出于演示和可复现性目的,包含了一个轻量化的样本数据集。
完整数据集和训练后的模型权重可通过合理的学术请求获取。
注意:为了尽量减小仓库体积,轻量化公开发布版本中未包含预训练模型权重。用户可以使用提供的数据集配置和训练流水线来训练模型。
标签:Kubernetes, YOLOv8, 人工智能, 凭据扫描, 威胁评估, 学术复现, 无人机探测, 用户模式Hook绕过, 目标检测, 逆向工具