比较简单的无人机检测(UAV Detection)项目,模型为YOLOv8s。
本项目使用pyqt5完成了一个可视化系统。
内置用户登录功能,可加载视频和图片进行无人机检测识别。
UI类似Apple Google的白色极简风格。
https://www.kaggle.com/datasets/dasmehdixtr/drone-dataset-uav/ (约1000张)
https://github.com/wangdongdut/DUT-Anti-UAV (10000张)
Windows,需适配 Python/CUDA 环境。
Python3.10 或 3.11
python3 -m venv yolov8_env source yolov8_env/bin/activate
升级 pip
pip install --upgrade pip
项目核心依赖包括 PyTorch (带 CUDA)、Ultralytics YOLOv8、OpenCV、PyQt5 等,可参照如下:
pip install ultralytics
pip install opencv-python PyQt5
注意: Ultralytics YOLOv8 有时更新 API;建议使用官方稳定版本(pip install ultralytics==8.x.x)。
该仓库未直接包含大规模训练数据,数据集请自行准备。
Kaggle UAV Dataset
链接: https://www.kaggle.com/datasets/dasmehdixtr/drone-dataset-uav/
包含摄像头视角下的无人机目标图像标注。
DUT Anti-UAV Dataset
更大型、可增强精度。
数据文件结构:
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── labels/
├── train/
├── val/
└── test/
其中 .txt 标注格式如下:
<class_id> <x_center> <y_center>
创建一个 dataset.yaml:
val: dataset/images/val
test: dataset/images/test
nc: 1
names: ['uav']
模型训练推荐远程服务器训练(若显卡一般)
YOLOv8 提供命令行与 Python API 两种训练方式。
在项目根目录运行:
model=yolov8s.pt \
data=dataset.yaml \
epochs=50 \
imgsz=640 \
batch=16 \
device=0
参数说明:
model: 初始模型权重(基础YOLOv8s)
data: 数据配置文件
epochs: 总训练轮数
imgsz: 图像像素尺寸
batch: 批量大小(显存较小时降低)
训练完成后,权重会自动保存到:
runs/detect/train/weights/best.pt
创建脚本 train.py:
model = YOLO("yolov8s.pt")
model.train(data="dataset.yaml", epochs=50, imgsz=640, batch=16)
终端运行:
python train.py
训练完毕后,可使用命令行或 Python 进行推理:
model=runs/detect/train/weights/best.pt \
source=dataset/images/test \
save=True
推理输出保存在:
runs/detect/predict/
import cv2
model = YOLO("runs/detect/train/weights/best.pt")
img = cv2.imread("dataset/images/test/img001.jpg")
results = model(img)
results.show()
项目代码中包含 Qt 相关文件(如 ui 目录)。
系统运行:
进入项目 UI 目录并执行
main_app.py
成功运行后可通过 GUI 加载模型和图片/视频进行实时检测。