SkyGuard是一个针对低空无人机威胁的智能防御系统,使用计算机视觉和对抗学习技术来检测、识别和防御恶意无人机。
SkyGuard系统包含以下主要功能:
- 无人机目标检测和识别
- 对抗攻击模拟(FGSM、PGD等)
- 防御策略实现和评估
- 可视化分析工具
- 模型训练和评估
- 前端:基于React的Web界面,使用Tailwind CSS进行样式设计
- 后端:FastAPI + Celery异步任务队列
- 模型:基于YOLOv8的目标检测模型,支持对抗训练
最简单的方式是使用Docker Compose启动整个系统:
docker-compose up- 安装后端依赖:
cd backend
pip install -r requirements.txt- 安装前端依赖:
cd frontend
npm install- 启动后端服务:
cd backend
uvicorn main:app --reload- 启动Celery worker:
cd backend
celery -A celery_app worker --loglevel=info- 启动前端开发服务器:
cd frontend
npm run dev系统使用VisDrone数据集,这是一个大规模的无人机视角目标检测基准数据集。可以使用以下命令下载:
cd backend
python -c "from download_dataset import download_visdrone_dataset; download_visdrone_dataset()"VisDrone数据集包含以下类别:
- 0: pedestrian(行人)
- 1: people(人群)
- 2: bicycle(自行车)
- 3: car(汽车)
- 4: van(面包车)
- 5: truck(卡车)
- 6: tricycle(三轮车)
- 7: awning-tricycle(篷式三轮车)
- 8: bus(公交车)
- 9: motor(摩托车)
- 10: others(其他)
数据集已转换为YOLO格式,包含以下结构:
- images/: 包含训练、验证和测试的图像文件
- labels/: 包含对应的YOLO格式标签文件
- data.yaml: 配置文件,指定图像和标签的路径以及类名
使用以下命令训练无人机检测模型:
cd backend
python train_model.py --model yolov8s --dataset visdrone --epochs 50支持对抗训练:
python train_model.py --model yolov8s --dataset visdrone --adv-training --adv-method pgd系统提供了丰富的REST API接口:
/api/start-training: 启动模型训练/api/get-training-status/{task_id}: 获取训练状态/api/run-attack: 执行对抗攻击/api/run-defense: 执行防御方法/api/evaluate-defense: 评估防御效果/api/generate-visualization: 生成可视化结果
完整API文档可访问:http://localhost:8000/docs
系统支持多种对抗攻击方法:
- FGSM (Fast Gradient Sign Method)
- PGD (Projected Gradient Descent)
- 环境干扰攻击(亮度、噪声、对比度、模糊)
系统实现了多种防御策略:
- 高斯模糊
- 中值滤波
- JPEG压缩
- 位深度降低
- 在
backend/tasks.py中添加新的Celery任务函数 - 在
backend/main.py的run_attackAPI中添加对应的处理逻辑 - 在
backend/main.py的get_attack_typesAPI中添加新攻击类型的描述
- 在
backend/defense.py中扩展run_defense_task函数 - 在
backend/main.py的get_defense_typesAPI中添加新防御类型的描述
在backend/evaluate.py中扩展evaluate_defense_task函数,添加新的评估指标。
前端使用React + Tailwind CSS开发,UI组件基于Shadcn UI。
欢迎提交Pull Request或Issue来改进SkyGuard系统。
MIT