采用 YOLOv11n航拍滑坡无人机检测系统 智慧灾害识别-遥感无人机滑坡检测数据集

📅 2026/8/15 21:46:59
采用 YOLOv11n航拍滑坡无人机检测系统 智慧灾害识别-遥感无人机滑坡检测数据集
智慧灾害识别-遥感无人机滑坡检测数据集遥感图像滑坡区域检测数据集4051张yolovoccoco三种标注方式图像尺寸:640*640类别数量:1类训练集图像数量:3563; 验证集图像数量:214 测试集图像数量:274类别名称: 每一类图像数 每一类标注数landslide: 4051,10025image num: 4051PyQt5 界面功能界面使用 PyQt5 开发全部源码.ui、.qrc、.py 及图标文件支持图片检测、视频检测、摄像头实时检测界面实时显示目标位置、目标总数、置信度等信息支持检测结果保存导出训练轮次80 个 epoch111基于YOLOv11滑坡检测Qt系统简易全套代码功能图片检测显示置信度、目标数量、坐标信息结果表格展示保存检测结果对应上面滑坡检测GUI界面1.环境依赖pipinstallultralytics pyqt5 opencv-python pillow2.主程序 main.pyimportsysimportcv2fromPILimportImagefromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QPushButton,QFileDialog,QLabel,QTableWidget,QTableWidgetItem,QVBoxLayout,QHBoxLayout,QGroupBox,QComboBox,QTextEdit)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQtfromultralyticsimportYOLOclassLandslideDetectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的滑坡检测系统)self.resize(1300,850)#加载训练好滑坡权重self.modelYOLO(yolov11n_landslide.pt)self.img_pathNoneself.init_ui()definit_ui(self):central_widgetQWidget()self.setCentralWidget(central_widget)main_layoutQHBoxLayout(central_widget)#左侧图像显示区域left_groupQGroupBox(检测图像)left_layoutQVBoxLayout(left_group)self.img_labelQLabel()self.img_label.setFixedSize(620,620)self.img_label.setStyleSheet(border:1px solid #999;)left_layout.addWidget(self.img_label)main_layout.addWidget(left_group)#右侧控制面板right_groupQWidget()right_layoutQVBoxLayout(right_group)#文件导入模块file_groupQGroupBox(文件导入)file_layoutQVBoxLayout(file_group)self.btn_imgQPushButton(选择图片)self.btn_img.clicked.connect(self.load_image)file_layout.addWidget(self.btn_img)right_layout.addWidget(file_group)#检测结果信息res_groupQGroupBox(检测结果)res_layoutQVBoxLayout(res_group)self.info_textQTextEdit()self.info_text.setReadOnly(True)res_layout.addWidget(self.info_text)right_layout.addWidget(res_group)#操作按钮op_groupQGroupBox(操作)op_layoutQHBoxLayout(op_group)self.btn_detectQPushButton(开始检测)self.btn_detect.clicked.connect(self.run_detect)self.btn_saveQPushButton(保存结果)op_layout.addWidget(self.btn_detect)op_layout.addWidget(self.btn_save)right_layout.addWidget(op_group)main_layout.addWidget(right_group)#底部表格self.tableQTableWidget()self.table.setColumnCount(5)self.table.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])total_layoutQVBoxLayout(central_widget)total_layout.addLayout(main_layout)total_layout.addWidget(self.table)defload_image(self):file,_QFileDialog.getOpenFileName(filter图片(*.jpg *.png *.jpeg))iffile:self.img_pathfilepixQPixmap(file).scaled(self.img_label.size(),Qt.KeepAspectRatio)self.img_label.setPixmap(pix)defrun_detect(self):ifnotself.img_path:self.info_text.append(请先加载图片)return#推理resultsself.model(self.img_path,conf0.25)resresults[0]img_cvcv2.imread(self.img_path)boxesres.boxes self.table.setRowCount(0)target_numlen(boxes)self.info_text.append(f目标数目:{target_num})foridx,boxinenumerate(boxes):x1,y1,x2,y2map(int,box.xyxy[0])conffloat(box.conf[0])cls_nameself.model.names[int(box.cls[0])]#绘制框cv2.rectangle(img_cv,(x1,y1),(x2,y2),(255,0,0),2)cv2.putText(img_cv,f{cls_name}{conf:.2f},(x1,y1-8),cv2.FONT_HERSHEY_SIMPLEX,0.45,(255,0,0),1)rowself.table.rowCount()self.table.insertRow(row)self.table.setItem(row,0,QTableWidgetItem(str(idx1)))self.table.setItem(row,1,QTableWidgetItem(self.img_path))self.table.setItem(row,2,QTableWidgetItem(cls_name))self.table.setItem(row,3,QTableWidgetItem(f{conf:.2f}))self.table.setItem(row,4,QTableWidgetItem(f[{x1},{y1},{x2},{y2}]))#图像回显qtimg_rgbcv2.cvtColor(img_cv,cv2.COLOR_BGR2RGB)h,w,chimg_rgb.shape bytes_per_linech*w q_imgQImage(img_rgb.data,w,h,bytes_per_line,QImage.Format_RGB888)self.img_label.setPixmap(QPixmap.fromImage(q_img).scaled(self.img_label.size(),Qt.KeepAspectRatio))if__name____main__:appQApplication(sys.argv)winLandslideDetectUI()win.show()sys.exit(app.exec_())3.yolo训练配置文件 landslide.yaml#滑坡泥石流数据集配置path:./landslide_datasettrain:images/trainval:images/valtest:images/testnames:0:landslide1:debris-flow4.简易训练脚本 train.pyfromultralyticsimportYOLOif__name____main__:#加载yolov11n模型modelYOLO(yolov11n.pt)resultsmodel.train(datalandslide.yaml,epochs80,imgsz640,batch8,device0,projectlandslide_exp,nameyolov11n_run)