news 2026/10/14 10:18:48

基于 YOLOv11 空中无人机(UAV)目标检测系统 各类场景无人机目标检测数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 YOLOv11 空中无人机(UAV)目标检测系统 各类场景无人机目标检测数据集

基于 YOLOv11 空中无人机(UAV)目标检测系统 各类场景无人机目标检测数据集,9900张,提供yolo,voc,coco三种标注方式

图像尺寸:640*640
类别数量:1类

训练集图像数量:6930; 验证集图像数量:1980; 测试集图像数量:990
类别名称: 每一类图像数 ,每一类标注数
UAV: 9899,9899

image num: 9900

模型代码
采用 YOLOv11n 网络训练
训练轮次:80 个 epoch
提供全部训练 + 测试源代码
训练精度 mAP 效果如图所示

PyQt5 界面功能

界面使用 PyQt5 开发,提供全部源码(.ui、.qrc、.py 及图标文件)
支持图片检测、视频检测、摄像头实时检测
界面实时显示:目标位置、目标总数、置信度等信息

支持检测结果保存导出
操作简单直观,无需命令行
4、
运行环境:Python=3.8、opencv-python、PyQt5、torch
支持 Windows、Linux 系统

基于YOLOv11 空中无人机(UAV)目标检测系统完整代码(含PyQt可视化界面)

一、环境安装

pipinstallultralytics pyqt5 opencv-python pillow numpy

二、模型训练代码 train.py

fromultralyticsimportYOLOif__name__=='__main__':# 加载YOLOv11n基础模型model=YOLO("yolo11n.pt")# 开始训练train_result=model.train(data="uav_detect.yaml",epochs=80,imgsz=640,batch=8,device=0,conf=0.25)

uav_detect.yaml(数据集配置文件)

path:./uav_datasettrain:images/trainval:images/valtest:images/testnames:0:UAV

三、PyQt5主界面代码 main.py

importsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QFileDialog,QMessageBox,QTableWidgetItem)fromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQtfromultralyticsimportYOLOfromui_mainimportUi_MainWindowclassUavDetectWindow(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)# 加载训练完成的最佳权重self.model=YOLO("runs/detect/train/weights/best.pt")self.result_img=None# 绑定按钮事件self.btn_img.clicked.connect(self.open_image)self.btn_video.clicked.connect(self.open_video)self.btn_save.clicked.connect(self.save_result)defopen_image(self):file_path,_=QFileDialog.getOpenFileName(self,"选择图片","","图片(*.jpg *.png *.jpeg *.bmp)")ifnotfile_path:returnsrc_img=cv2.imread(file_path)results=self.model(src_img)self.show_detect_result(results,file_path)defshow_detect_result(self,results,file_path):res=results[0]self.result_img=res.plot()rgb_img=cv2.cvtColor(self.result_img,cv2.COLOR_BGR2RGB)h,w,c=rgb_img.shape qimg=QImage(rgb_img.data,w,h,c*w,QImage.Format_RGB888)self.label_show.setPixmap(QPixmap.fromImage(qimg).scaled(self.label_show.size(),Qt.KeepAspectRatio))# 清空表格,填充检测信息self.tableWidget.setRowCount(0)foridx,boxinenumerate(res.boxes):cls_id=int(box.cls)cls_name=self.model.names[cls_id]conf=float(box.conf)xyxy=box.xyxy[0].tolist()xmin,ymin,xmax,ymax=map(int,xyxy)row=self.tableWidget.rowCount()self.tableWidget.insertRow(row)self.tableWidget.setItem(row,0,QTableWidgetItem(str(idx+1)))self.tableWidget.setItem(row,1,QTableWidgetItem(file_path))self.tableWidget.setItem(row,2,QTableWidgetItem(cls_name))self.tableWidget.setItem(row,3,QTableWidgetItem(f"{conf:.3f}"))self.tableWidget.setItem(row,4,QTableWidgetItem(f"[{xmin},{ymin},{xmax},{ymax}]"))# 右侧信息面板赋值self.le_xmin.setText(str(xmin))self.le_ymin.setText(str(ymin))self.le_xmax.setText(str(xmax))self.le_ymax.setText(str(ymax))self.le_conf.setText(f"{conf*100:.2f}%")defopen_video(self):QMessageBox.information(self,"提示","视频检测功能,可自行扩展摄像头实时流")defsave_result(self):ifself.result_imgisNone:QMessageBox.warning(self,"警告","暂无检测结果,无法保存!")returnsave_path,_=QFileDialog.getSaveFileName(self,"保存检测图片","","jpg图片(*.jpg)")ifsave_path:cv2.imwrite(save_path,self.result_img)QMessageBox.information(self,"成功","图片保存完成!")if__name__=="__main__":app=QApplication(sys.argv)win=UavDetectWindow()win.show()sys.exit(app.exec())

四、UI界面代码 ui_main.py(Qt Designer导出)

fromPyQt5importQtCore,QtGui,QtWidgetsclassUi_MainWindow(object):defsetupUi(self,MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(1260,960)self.centralwidget=QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")# 图片显示labelself.label_show=QtWidgets.QLabel(self.centralwidget)self.label_show.setGeometry(QtCore.QRect(20,60,760,620))self.label_show.setStyleSheet("background-color:#FFFFFF;border:1px solid #999;")self.label_show.setObjectName("label_show")# 文件导入分组self.groupBox_file=QtWidgets.QGroupBox(self.centralwidget)self.groupBox_file.setGeometry(QtCore.QRect(810,50,400,240))self.groupBox_file.setTitle("文件导入")self.btn_img=QtWidgets.QPushButton(self.groupBox_file)self.btn_img.setGeometry(QtCore.QRect(20,30,160,30))self.btn_img.setText("选择图片")self.btn_video=QtWidgets.QPushButton(self.groupBox_file)self.btn_video.setGeometry(QtCore.QRect(20,70,160,30))self.btn_video.setText("选择视频")# 检测结果分组self.groupBox_result=QtWidgets.QGroupBox(self.centralwidget)self.groupBox_result.setGeometry(QtCore.QRect(810,310,400,320))self.groupBox_result.setTitle("检测结果")self.label_conf=QtWidgets.QLabel(self.groupBox_result)self.label_conf.setGeometry(QtCore.QRect(20,40,100,25))self.label_conf.setText("置信度:")self.le_conf=QtWidgets.QLineEdit(self.groupBox_result)self.le_conf.setGeometry(QtCore.QRect(110,40,120,25))# 坐标self.label_xmin=QtWidgets.QLabel(self.groupBox_result)self.label_xmin.setGeometry(QtCore.QRect(20,80,60,25))self.label_xmin.setText("xmin:")self.le_xmin=QtWidgets.QLineEdit(self.groupBox_result)self.le_xmin.setGeometry(QtCore.QRect(80,80,80,25))self.label_ymin=QtWidgets.QLabel(self.groupBox_result)self.label_ymin.setGeometry(QtCore.QRect(180,80,60,25))self.label_ymin.setText("ymin:")self.le_ymin=QtWidgets.QLineEdit(self.groupBox_result)self.le_ymin.setGeometry(QtCore.QRect(240,80,80,25))self.label_xmax=QtWidgets.QLabel(self.groupBox_result)self.label_xmax.setGeometry(QtCore.QRect(20,120,60,25))self.label_xmax.setText("xmax:")self.le_xmax=QtWidgets.QLineEdit(self.groupBox_result)self.le_xmax.setGeometry(QtCore.QRect(80,120,80,25))self.label_ymax=QtWidgets.QLabel(self.groupBox_result)self.label_ymax.setGeometry(QtCore.QRect(180,120,60,25))self.label_ymax.setText("ymax:")self.le_ymax=QtWidgets.QLineEdit(self.groupBox_result)self.le_ymax.setGeometry(QtCore.QRect(240,120,80,25))# 操作按钮self.btn_save=QtWidgets.QPushButton(self.groupBox_result)self.btn_save.setGeometry(QtCore.QRect(30,180,140,35))self.btn_save.setText("保存")self.btn_exit=QtWidgets.QPushButton(self.groupBox_result)self.btn_exit.setGeometry(QtCore.QRect(190,180,140,35))self.btn_exit.setText("退出")# 底部表格self.tableWidget=QtWidgets.QTableWidget(self.centralwidget)self.tableWidget.setGeometry(QtCore.QRect(20,700,1180,200))self.tableWidget.setColumnCount(5)self.tableWidget.setHorizontalHeaderLabels(["序号","文件路径","类别","置信度","坐标位置"])MainWindow.setCentralWidget(self.centralwidget)self.menubar=QtWidgets.QMenuBar(MainWindow)MainWindow.setMenuBar(self.menubar)self.statusbar=QtWidgets.QStatusBar(MainWindow)MainWindow.setStatusBar(self.statusbar)QtCore.QMetaObject.connectSlotsByName(MainWindow)

五、单图推理 predict.py

fromultralyticsimportYOLO model=YOLO("runs/detect/train/weights/best.pt")results=model.predict(source="test.jpg",save=True)

六、公众号摘要(配套)

标题推荐

YOLOv11 空中无人机UAV目标检测数据集|配套完整训练代码+PyQt可视化检测系统,mAP@0.5=0.902

公众号正文摘要

本空中无人机(UAV)目标检测数据集,固定俯视拍摄视角,场景包含山地、城市建筑群、操场、黄昏逆光等复杂环境,画面包含云雾、黄昏弱光等干扰场景。数据集标注UAV无人机目标,YOLO标注格式,使用YOLOv11n网络训练,训练完成mAP@0.5达到0.902。
配套完整项目资源:训练脚本、推理代码、训练权重,开发PyQt5图形化检测系统,支持图片导入检测,自动输出目标类别、置信度、目标坐标,可一键保存带检测框结果图,附带PR评估曲线。
适用场景:低空安防、禁飞区无人机监测、毕业设计、计算机视觉目标检测算法研发。
适用人群:计算机视觉学生、算法工程师、安防项目开发人员。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 10:18:33

Flutter集成端侧嵌入模型:EmbeddingGemma 2本地语义检索实战

做 Flutter 的开发者应该都有同感:产品想靠 AI 加分,但把能力接进来之后,最先撞上的往往不是模型效果,而是网络依赖、密钥管理、API 账单和飘忽不定的首字节延迟。我最近把一个模拟项目完整跑通了:在 Flutter 应用里集…

作者头像 李华
网站建设 2026/10/14 10:18:32

校园兼职系统SSM架构设计与高并发优化实践

1. 项目背景与核心价值 校园兼职系统是连接学生与企业的重要桥梁,传统的人工对接方式存在信息不对称、匹配效率低等问题。这个基于SSM框架的分布式系统,采用SpringBootVueSpringCloud技术栈,实现了兼职信息的智能匹配、信用评价和全流程管理。…

作者头像 李华
网站建设 2026/10/14 10:18:30

Intel 800系主板板载雷电/USB4驱动安装与排查完整指南

如果你刚入手一块基于 Intel 800 系列芯片组的新主板,点亮后进系统,发现设备管理器里躺着一排带黄色感叹号的设备,名字里有 Thunderbolt、PCIe Root Port 或者 USB4 Host Router——那多半就是板载雷电控制器没有正确加载驱动。这个事说难不难…

作者头像 李华
网站建设 2026/10/14 10:18:19

MCP工具调用性能优化:从握手到Token消耗的实操指南

模型上下文协议(Model Context Protocol,以下简称 MCP)这两年在 AI 工具链里几乎是绕不开的关键词。它解决的核心问题很简单:让大模型应用(Host)能标准、统一地调用外部工具(Tools)、…

作者头像 李华
网站建设 2026/10/14 10:18:18

MATLAB实现IEEE标准网络潮流计算:牛顿-拉夫逊法解析

1. 项目概述:基于MATLAB的IEEE标准网络潮流计算程序开发 在电力系统分析与规划领域,潮流计算是最基础也最核心的算法之一。最近我在研究一个基于MATLAB实现的潮流计算开源项目,它完整支持IEEE 14/30/57/118/300节点标准测试网络,采…

作者头像 李华
网站建设 2026/10/14 10:17:59

AnyPS5不是工具而是需求:PS5硬件特性跨平台建模实践指南

1. 项目概述:一个被误读的命名现象,背后是跨平台兼容性探索的真实需求 “AnyPS5”这个词最近在多个技术社区和硬件爱好者论坛里频繁出现,但翻遍主流开发文档、索尼官方SDK说明、PlayStation开发者门户,甚至GitHub上最活跃的PS5相关…

作者头像 李华