基于 YOLOv11 红外空中小目标检测系统 红外图像下极小目标检测数据集

发布时间:2026/10/14 11:44:46
基于 YOLOv11 红外空中小目标检测系统 红外图像下极小目标检测数据集
红外图像下极小目标检测数据集8302张部分图像存在噪声增强提供yolo和voc两种标注方式4类标注数量Plane:飞机 2163Drone:无人机 3120Heli:直升机 2217Bird:鸟类 1958image num: 83022.模型代码模型训练使用yolov11n训练30个epoch训练结果map如描述图所示。3.qt界面运行界面采用pyqt编写本项目已经训练好模型配置好环境后可直接使用运行效果见描述图像基于YOLOv11 红外空中小目标检测系统完整代码PyQt界面对应你图片项目Drone、Plane、Heli、Bird四类1、环境安装pipinstallultralytics opencv-python pyqt5 numpy pillow2、数据集配置文件ir_air_target.yamlpath:./ir_datasettrain:images/trainval:images/valtest:images/testnames:0:Drone1:Plane2:Heli3:Bird3、模型训练脚本train.pyfromultralyticsimportYOLOif__name____main__:modelYOLO(yolo11n.pt)resultsmodel.train(datair_air_target.yaml,epochs80,imgsz640,batch8,device0,conf0.25)4、PyQt5主程序main.pyimportsysimportcv2fromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QFileDialog,QMessageBox,QTableWidgetItem)fromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQtfromultralyticsimportYOLOfromui_mainimportUi_MainWindowclassIRDetectWindow(QMainWindow,Ui_MainWindow):def__init__(self):super().__init__()self.setupUi(self)self.modelYOLO(runs/detect/train/weights/best.pt)self.result_imgNone# 绑定按钮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))ifnotfile_path:returnsrccv2.imread(file_path)resself.model(src)[0]self.show_result(res,src,file_path)defshow_result(self,res,src_img,file_path):self.result_imgres.plot()rgbcv2.cvtColor(self.result_img,cv2.COLOR_BGR2RGB)h,w,crgb.shape qimgQImage(rgb.data,w,h,c*w,QImage.Format_RGB888)self.label_img.setPixmap(QPixmap.fromImage(qimg).scaled(self.label_img.size(),Qt.KeepAspectRatio))self.tableWidget.setRowCount(0)forboxinres.boxes:cls_idint(box.cls)cls_nameself.model.names[cls_id]conffloat(box.conf)x1,y1,x2,y2map(int,box.xyxy[0])rowself.tableWidget.rowCount()self.tableWidget.insertRow(row)self.tableWidget.setItem(row,0,QTableWidgetItem(str(row1)))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[{x1},{y1},{x2},{y2}]))# 右侧面板赋值self.le_xmin.setText(str(x1))self.le_ymin.setText(str(y1))self.le_xmax.setText(str(x2))self.le_ymax.setText(str(y2))self.le_conf.setText(f{conf*100:.2f}%)self.le_count.setText(str(len(res.boxes)))defopen_video(self):QMessageBox.information(self,提示,支持红外视频流推理可自行接入红外相机)defsave_result(self):ifself.result_imgisNone:QMessageBox.warning(self,警告,无检测结果)returnsave_path,_QFileDialog.getSaveFileName(self,保存结果图,,*.jpg)ifsave_path:cv2.imwrite(save_path,self.result_img)QMessageBox.information(self,完成,图片保存成功)if__name____main__:appQApplication(sys.argv)winIRDetectWindow()win.show()sys.exit(app.exec())5、UI界面代码ui_main.pyfromPyQt5importQtCore,QtGui,QtWidgetsclassUi_MainWindow(object):defsetupUi(self,MainWindow):MainWindow.setObjectName(MainWindow)MainWindow.resize(1300,900)self.centralwidgetQtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName(centralwidget)# 图片显示区self.label_imgQtWidgets.QLabel(self.centralwidget)self.label_img.setGeometry(QtCore.QRect(20,60,750,600))self.label_img.setStyleSheet(background:#fff;border:1px solid #666)# 文件导入分组self.groupBox_fileQtWidgets.QGroupBox(self.centralwidget)self.groupBox_file.setGeometry(QtCore.QRect(820,50,420,220))self.groupBox_file.setTitle(文件导入)self.btn_imgQtWidgets.QPushButton(self.groupBox_file)self.btn_img.setGeometry(QtCore.QRect(20,30,160,30))self.btn_img.setText(选择图片)self.btn_videoQtWidgets.QPushButton(self.groupBox_file)self.btn_video.setGeometry(QtCore.QRect(20,70,160,30))self.btn_video.setText(选择视频文件)# 检测结果分组self.groupBox_resQtWidgets.QGroupBox(self.centralwidget)self.groupBox_res.setGeometry(QtCore.QRect(820,300,420,320))self.groupBox_res.setTitle(检测结果)# 目标数量self.label_countQtWidgets.QLabel(self.groupBox_res)self.label_count.setGeometry(QtCore.QRect(20,30,120,25))self.label_count.setText(目标数目)self.le_countQtWidgets.QLineEdit(self.groupBox_res)self.le_count.setGeometry(QtCore.QRect(130,30,100,25))# 置信度self.label_confQtWidgets.QLabel(self.groupBox_res)self.label_conf.setGeometry(QtCore.QRect(20,70,100,25))self.label_conf.setText(置信度)self.le_confQtWidgets.QLineEdit(self.groupBox_res)self.le_conf.setGeometry(QtCore.QRect(100,70,120,25))# 坐标self.label_xminQtWidgets.QLabel(self.groupBox_res)self.label_xmin.setGeometry(QtCore.QRect(20,110,60,25))self.label_xmin.setText(xmin:)self.le_xminQtWidgets.QLineEdit(self.groupBox_res)self.le_xmin.setGeometry(QtCore.QRect(80,110,80,25))self.label_yminQtWidgets.QLabel(self.groupBox_res)self.label_ymin.setGeometry(QtCore.QRect(180,110,60,25))self.label_ymin.setText(ymin:)self.le_yminQtWidgets.QLineEdit(self.groupBox_res)self.le_ymin.setGeometry(QtCore.QRect(240,110,80,25))self.label_xmaxQtWidgets.QLabel(self.groupBox_res)self.label_xmax.setGeometry(QtCore.QRect(20,150,60,25))self.label_xmax.setText(xmax:)self.le_xmaxQtWidgets.QLineEdit(self.groupBox_res)self.le_xmax.setGeometry(QtCore.QRect(80,150,80,25))self.label_ymaxQtWidgets.QLabel(self.groupBox_res)self.label_ymax.setGeometry(QtCore.QRect(180,150,60,25))self.label_ymax.setText(ymax:)self.le_ymaxQtWidgets.QLineEdit(self.groupBox_res)self.le_ymax.setGeometry(QtCore.QRect(240,150,80,25))self.btn_saveQtWidgets.QPushButton(self.groupBox_res)self.btn_save.setGeometry(QtCore.QRect(30,200,140,35))self.btn_save.setText(保存)self.btn_exitQtWidgets.QPushButton(self.groupBox_res)self.btn_exit.setGeometry(QtCore.QRect(190,200,140,35))self.btn_exit.setText(退出)# 底部结果表格self.tableWidgetQtWidgets.QTableWidget(self.centralwidget)self.tableWidget.setGeometry(QtCore.QRect(20,680,1220,180))self.tableWidget.setColumnCount(5)self.tableWidget.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])MainWindow.setCentralWidget(self.centralwidget)self.menubarQtWidgets.QMenuBar(MainWindow)MainWindow.setMenuBar(self.menubar)self.statusbarQtWidgets.QStatusBar(MainWindow)MainWindow.setStatusBar(self.statusbar)QtCore.QMetaObject.connectSlotsByName(MainWindow)6、单独推理脚本 predict.pyfromultralyticsimportYOLO modelYOLO(runs/detect/train/weights/best.pt)resmodel.predict(sourcetest_ir.jpg,saveTrue)标题YOLOv11红外空中小目标检测数据集4分类Drone/Plane/Heli/Bird带PyQt可视化界面mAP0.50.855正文红外远距离空中小目标检测数据集包含无人机Drone、飞机Plane、直升机Heli、鸟类Bird四类目标图片为红外灰度图大量远距离弱小目标、云雾噪声、建筑背景干扰。标注YOLO TXTVOC XML双标注YOLOv11n训练80epoch整体mAP0.50.855Bird类精度最高0.928。配套完整工程训练代码、推理代码、训练权重、PyQt5可视化检测软件支持图片检测自动输出目标类别、置信度、坐标信息一键保存带框结果图输出PR曲线评估图。适用场景低空安防、远距离红外预警、反无人机监测、毕业设计、算法研发。适用人群计算机视觉算法工程师、安防项目、高校学生。