当前位置: 首页 > news >正文

智能检测小目标无人机、飞机、直升机检测数据集、摄像头视频图片检测、低空安防数据集、反无人机数据集小目标检测、无人机检测、飞机检测、直升机检测、低空目标识别、安防目标检测、飞行器检测数据集

智能检测小目标无人机、飞机、直升机检测数据集,11998张,yolo和voc两种标注方式
图像尺寸:512*512
类别数量:3类
训练集图像数量:10799; 验证集图像数量:603; 测试集图像数量:596
类别名称: 每一类图像数 ,每一类标注数
AirPlane: 2535,2535
Drone: 4728,4812
Helicopter: 2523,2628
image num: 11998

一、数据集信息表格

1.1 基础信息表

项目详细内容
数据集名称小目标无人机、飞机、直升机检测数据集
总图像数量11998 张
图像分辨率512×512
标注格式YOLO、VOC 双格式
类别总数3 类
训练集10799 张
验证集603 张
测试集596 张
适配模型YOLOv11n(轻量模型)
推荐训练轮数50 epoch
运行环境Python 3.8、OpenCV、PyTorch、PyQt5

模型代码:提供全部训练及测试源代码,模型训练使用yolov11n训练,50个epoch训练结果,map如描述图所示。

qt界面:运行界面采用pyqt5编写, 提供全部源代码,支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存;本项目已经训练好模型,配置好环境后可直接使用,运行效果见描述图像

系统环境:python=3.8 opencv-python PyQt5 torch
文件:
1.完整的数据集文件(包括图像,yolo格式的txt文件、yaml文件,voc格式的xml文件等)
2.模型代码完整程序文件(.py .pt等)
3.qt界面源文件、图标(.ui、.qrc、.py等)




1.2 类别标注明细

序号英文类别中文类别含该类别图像数标注框总数
0AirPlane固定翼飞机25352535
1Drone无人机47284812
2Helicopter直升机25232628

1.3 YOLO 类别列表

names=["AirPlane","Drone","Helicopter"]

二、应用场景

  1. 低空安防监测:园区、机场、军事区域、重要场馆低空目标预警,识别违规无人机、飞行器。
  2. 空域管控:城市空域、机场净空区智能巡检,自动统计飞行器数量、类型。
  3. 视觉算法研发:小目标检测算法训练、对比实验、学术研究、竞赛使用。
  4. 嵌入式/边缘部署:安防摄像头、无人机反制设备、便携巡检终端本地检测。
  5. 可视化检测系统:搭配PyQt界面,做成桌面客户端,用于日常巡检、演示、项目落地。

三、YOLOv11n 全套训练代码

3.1 环境依赖

# Python 3.8 环境执行pipinstallultralytics torch opencv-python PyQt5 numpy pillow

3.2 数据集配置文件aircraft.yaml

path:./aircraft_datasettrain:images/trainval:images/valtest:images/testnc:3names:0:AirPlane1:Drone2:Helicopter

3.3 训练代码train.py(固定 50 epoch)

fromultralyticsimportYOLOdeftrain_aircraft():# 加载YOLOv11n轻量化模型model=YOLO("yolov11n.yaml")# 训练参数model.train(data="aircraft.yaml",epochs=50,imgsz=512,batch=16,device=0,# CPU运行改为 device="cpu"workers=4,patience=10,amp=True,mosaic=1.0,project="runs/train",name="aircraft_det",exist_ok=True)print("训练完成,最优模型已保存至 runs/train/aircraft_det/weights/best.pt")if__name__=="__main__":train_aircraft()

3.4 纯模型推理代码predict.py

fromultralyticsimportYOLO# 加载训练好的权重model=YOLO("runs/train/aircraft_det/weights/best.pt")# 单张图片检测# res = model("test.jpg", save=True, conf=0.25)# 图片文件夹批量检测# res = model("./test_imgs/", save=True, conf=0.25)# 视频检测# res = model("test.mp4", save=True, conf=0.25)# 本地摄像头实时检测res=model(0,save=True,conf=0.25)

3.5 数据集目录结构

aircraft_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ # YOLO txt 标注文件 │ ├── train/ │ ├── val/ │ └── test/ ├── voc_labels/ # VOC xml 标注文件 └── aircraft.yaml

四、PyQt5 可视化检测界面完整代码

4.1 UI 布局(简化版,可自行用Qt Designer编辑.ui文件)

4.1.1 主界面代码ui_main.py

importsysimportcv2importosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QPushButton,QLabel,QFileDialog,QTextEdit,QVBoxLayout,QWidget,QHBoxLayout)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLO# 推理子线程(防止界面卡顿)classDetectThread(QThread):signal_img=pyqtSignal(object)signal_info=pyqtSignal(str)def__init__(self,model,source,save_path):super().__init__()self.model=model self.source=source self.save_path=save_path self.running=Truedefrun(self):ifnotos.path.exists(self.save_path):os.makedirs(self.save_path)idx=0# 视频/摄像头推理cap=cv2.VideoCapture(self.source)whileself.running:ret,frame=cap.read()ifnotret:breakresults=self.model(frame,conf=0.25)res_frame=results[0].plot()# 统计目标cls_count={}forboxinresults[0].boxes.cls:cls_name=self.model.names[int(box)]cls_count[cls_name]=cls_count.get(cls_name,0)+1total=sum(cls_count.values())info_text=f"目标总数:{total}| 类别统计:{str(cls_count)}"self.signal_img.emit(res_frame)self.signal_info.emit(info_text)# 保存结果save_name=os.path.join(self.save_path,f"res_{idx}.jpg")cv2.imwrite(save_name,res_frame)idx+=1cap.release()defstop_thread(self):self.running=False# 主窗口classMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("飞行器目标检测系统")self.resize(1200,800)# 加载训练好的模型self.model=YOLO("runs/train/aircraft_det/weights/best.pt")self.detect_thread=Noneself.save_dir="./detect_result"# 布局main_widget=QWidget()self.setCentralWidget(main_widget)main_layout=QHBoxLayout(main_widget)# 左侧显示区域self.img_label=QLabel()self.img_label.setAlignment(Qt.AlignCenter)self.img_label.setStyleSheet("background-color:#000;")main_layout.addWidget(self.img_label,3)# 右侧控制区域right_widget=QWidget()right_layout=QVBoxLayout(right_widget)self.btn_img=QPushButton("打开图片检测")self.btn_video=QPushButton("打开视频检测")self.btn_camera=QPushButton("开启摄像头")self.btn_stop=QPushButton("停止检测")self.info_text=QTextEdit()self.info_text.setReadOnly(True)# 绑定事件self.btn_img.clicked.connect(self.detect_image)self.btn_video.clicked.connect(self.detect_video)self.btn_camera.clicked.connect(self.detect_camera)self.btn_stop.clicked.connect(self.stop_detect)right_layout.addWidget(self.btn_img)right_layout.addWidget(self.btn_video)right_layout.addWidget(self.btn_camera)right_layout.addWidget(self.btn_stop)right_layout.addWidget(QLabel("检测信息:"))right_layout.addWidget(self.info_text)main_layout.addWidget(right_widget,1)defshow_frame(self,frame):rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)h,w,ch=rgb.shape bytes_per_line=ch*w qt_img=QImage(rgb.data,w,h,bytes_per_line,QImage.Format_RGB888)self.img_label.setPixmap(QPixmap.fromImage(qt_img).scaled(self.img_label.size(),Qt.KeepAspectRatio))defshow_info(self,text):self.info_text.append(text)defstart_thread(self,source):self.stop_detect()self.detect_thread=DetectThread(self.model,source,self.save_dir)self.detect_thread.signal_img.connect(self.show_frame)self.detect_thread.signal_info.connect(self.show_info)self.detect_thread.start()defdetect_image(self):path,_=QFileDialog.getOpenFileName(self,"选择图片","","Image Files(*.jpg *.png *.jpeg)")ifpath:img=cv2.imread(path)res=self.model(img,conf=0.25)res_img=res[0].plot()self.show_frame(res_img)# 统计信息cls_count={}forboxinres[0].boxes.cls:cls_name=self.model.names[int(box)]cls_count[cls_name]=cls_count.get(cls_name,0)+1total=sum(cls_count.values())self.info_text.append(f"图片检测 | 目标总数:{total}|{cls_count}")# 保存ifnotos.path.exists(self.save_dir):os.makedirs(self.save_dir)cv2.imwrite(os.path.join(self.save_dir,"img_result.jpg"),res_img)defdetect_video(self):path,_=QFileDialog.getOpenFileName(self,"选择视频","","Video Files(*.mp4 *.avi)")ifpath:self.start_thread(path)defdetect_camera(self):self.start_thread(0)defstop_detect(self):ifself.detect_threadandself.detect_thread.isRunning():self.detect_thread.stop_thread()self.detect_thread.quit()self.detect_thread.wait()defcloseEvent(self,event):self.stop_detect()event.accept()if__name__=="__main__":app=QApplication(sys.argv)win=MainWindow()win.show()sys.exit(app.exec_())

五、项目文件清单

  1. 数据集文件
    • 11998张 512×512 图像
    • YOLO 格式.txt标签、VOC 格式.xml标签
    • 数据集配置aircraft.yaml
  2. 模型代码文件
    • train.py训练脚本
    • predict.py推理脚本
    • 训练完成权重best.pt/last.pt
  3. PyQt5 界面文件
    • ui_main.py主程序代码
    • 可选:.ui界面文件、图标资源.qrc
  4. 环境说明
    • 运行环境:Python 3.8 + torch + ultralytics + opencv-python + PyQt5
    • 支持系统:Windows、Linux(CPU版本)

http://www.jsqmd.com/news/1209435/

相关文章:

  • 郫县靠谱全屋定制工厂推荐免费上门量尺出方案环保板材质保 - 优企甄选
  • Codex CLI Skills实战指南:从本地命令行到智能开发代理
  • 鸿蒙 ArkTS 实战:Fleet Dispatch Board 从业务记录到移动工作台完整解析
  • 2026 年新消息:武穴比较好的防腐瓦生产厂家定做厂家选型指南,别再花冤枉钱!揭秘高品质防腐瓦的秘密 - 企业推荐官【认证】
  • 2026 年至今,迎江正规的弧形地面划线施工厂家联系电话,装修避坑指南:这弧形地面划线到底意味着什么? - 行业甄选官
  • 2026年7月最新亨得利官方服务项目及价格查询|热线及详细地址权威信息公告 - 亨得利官方博客
  • 积家中国官方售后服务中心|服务电话及详细网点地址权威信息通知(2026年7月更新) - 积家官方售后服务中心
  • 2026年北京离婚律师选择指南:聚焦专业度与本地适配性 - 行业观察网
  • 鸿蒙HarmonyOS AI 应用安全红线实战 —— API Key 管理、网络安全、工具安全、发布扫描
  • 阿里云EMR StarRocks多模态混合检索引擎:原理、架构与应用实践
  • 2026企业网盘怎么选?我的选型经历与真实体会
  • 2026年图片转像素图的小程序推荐:亲测好用的免费方法 - 省事研究所
  • GAN SG-1魔方开箱评测:磁力SQ-1的性能突破与使用指南
  • 办公效率工具分享:鲲穹Word批量处理工具箱功能详解
  • PostgreSql学习第三篇
  • 电瓶车托运找什么物流?避坑指南与高效寄递全解析 - 快递物流资讯
  • RuoYi-Vue-Plus Docker 部署踩坑:MySQL 中文双重编码的根因与修复
  • Kubernetes 滚动更新导致 Nacos 服务瞬断?从 preStop 到优雅下线完整拆解
  • 【Figma AI组件变体实战指南】:20年UI架构师亲授5大高阶用法,90%设计师还不知道的智能变体工作流
  • QUAKE 3源代码评测:架构
  • 家里旧金饰怎么处理最划算?娄底人卖黄金的3种方式对比,第2种最坑! - 资讯在线
  • 2026有实力的亚洲EMBA测评榜单:民企老板择校避坑,重落地不镀金
  • 红米K40内核编译实战:从环境配置到刷机完整指南
  • 2026北京劳动纠纷法律服务选择指南 对比评估专业律师机构 - 产业观察报
  • java: Composite Pattern
  • Windows任务计划程序实现久坐提醒的简易教程
  • 国产FPGA盘古50K开发板硬件架构与应用解析
  • 玩物联网第 5 期:使用CH348芯片IO端口,控制红外灯和传感器报警
  • Ollama量化不是“选个参数就跑”:TensorRT-LLM兼容性矩阵、CUDA Compute Capability适配表、FP16/INT4混合精度决策树(限200人内部技术白皮书节选)
  • 大模型int4权重量化实战:GPTQ与AWQ算法原理与部署指南