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绕过, 目标检测, 逆向工具