ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

自然灾害类:-滑坡检测数据集 部分无人机视角滑坡数据集 4基于YOLOv11滑坡检测系统

自然灾害类:-滑坡检测数据集 部分无人机视角滑坡数据集 4基于YOLOv11滑坡检测系统 自然灾害类-滑坡检测数据集6709张yolovoccoco三种标注方式图像尺寸:640*640类别数量:1类训练集图像数量:5917; 验证集图像数量:668 测试集图像数量:124类别名称: 每一类图像数 每一类标注数huapo: 6709,8085image num: 6709模型代码采用 YOLOv11n 网络训练训练轮次80 个 epoch提供全部训练 测试源代码训练精度 mAP 效果如图所示PyQt5 界面功能界面使用 PyQt5 开发提供全部源码.ui、.qrc、.py 及图标文件支持图片检测、视频检测、摄像头实时检测界面实时显示目标位置、目标总数、置信度等信息支持检测结果保存导出运行环境Python3.8、opencv-python、PyQt5、torch支持 Windows、Linux 系统YOLOv11滑坡检测完整系统代码包含数据集yaml配置、训练代码、PyQt5可视化界面图片/视频/摄像头检测结果保存1 数据集配置 landslide.yamlpath:./landslide_datasettrain:images/trainval:images/valtest:images/testnames:0:landslide2 训练脚本 train.pyfromultralyticsimportYOLOif__name____main__:#加载yolov11n权重modelYOLO(yolo11n.pt)resultsmodel.train(datalandslide.yaml,epochs80,imgsz640,batch8,device0,workers2,project./runs/train,namelandslide_yolo11n)3 PyQt5界面完整代码 landslide_gui.pyimportsysimportcv2importosfromultralyticsimportYOLOfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QPushButton,QFileDialog,QLabel,QTableWidget,QTableWidgetItem,QVBoxLayout,QHBoxLayout,QComboBox,QGroupBox,QMessageBox)fromPyQt5.QtGuiimportQImage,QPixmapfromPyQt5.QtCoreimportQt,QTimerclassLandslideDetectWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOv11的滑坡检测系统)self.resize(1200,800)self.modelYOLO(./runs/train/landslide_yolo11n/weights/best.pt)self.camera_timerQTimer()self.camera_timer.timeout.connect(self.camera_frame)self.capNoneself.current_imgNoneself.ui_setup()defui_setup(self):centralQWidget()self.setCentralWidget(central)main_layoutQHBoxLayout(central)#左侧图像显示self.label_imgQLabel()self.label_img.setFixedSize(700,600)self.label_img.setStyleSheet(border:1px solid #999;)#右侧控制面板right_widgetQWidget()right_layoutQVBoxLayout(right_widget)group_fileQGroupBox(文件导入)file_layoutQVBoxLayout(group_file)self.btn_imgQPushButton(选择图片)self.btn_img.clicked.connect(self.detect_image)self.btn_videoQPushButton(选择视频)self.btn_video.clicked.connect(self.detect_video)self.btn_camQPushButton(打开摄像头)self.btn_cam.clicked.connect(self.open_camera)file_layout.addWidget(self.btn_img)file_layout.addWidget(self.btn_video)file_layout.addWidget(self.btn_cam)group_resultQGroupBox(检测结果)res_layoutQVBoxLayout(group_result)self.label_timeQLabel(用时0 s | 目标数目0)self.label_confQLabel(置信度0%)self.label_posQLabel(xmin:0 ymin:0 xmax:0 ymax:0)res_layout.addWidget(self.label_time)res_layout.addWidget(self.label_conf)res_layout.addWidget(self.label_pos)self.tableQTableWidget()self.table.setColumnCount(5)self.table.setHorizontalHeaderLabels([序号,文件路径,类别,置信度,坐标位置])btn_layoutQHBoxLayout()self.btn_saveQPushButton(保存结果)self.btn_save.clicked.connect(self.save_result)self.btn_exitQPushButton(退出)self.btn_exit.clicked.connect(self.close)btn_layout.addWidget(self.btn_save)btn_layout.addWidget(self.btn_exit)right_layout.addWidget(group_file)right_layout.addWidget(group_result)right_layout.addWidget(self.table)right_layout.addLayout(btn_layout)main_layout.addWidget(self.label_img)main_layout.addWidget(right_widget)defcv2qt(self,cv_img):rgbcv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB)h,w,chrgb.shape bytes_per_linech*w qt_imgQImage(rgb.data,w,h,bytes_per_line,QImage.Format_RGB888)returnQPixmap.fromImage(qt_img)defdetect_image(self):filePath,_QFileDialog.getOpenFileName(filter图片(*.jpg *.png *.jpeg))ifnotfilePath:returnresself.model(filePath)[0]ori_imgcv2.imread(filePath)self.current_imgres.plot()pixself.cv2qt(self.current_img)self.label_img.setPixmap(pix.scaled(self.label_img.size(),Qt.KeepAspectRatio))boxesres.boxes numlen(boxes)self.label_time.setText(f用时{res.speed[inference]/1000:.3f}s | 目标数目{num})self.table.setRowCount(0)foridx,boxinenumerate(boxes):conffloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])cls_nameself.model.names[int(box.cls[0])]self.table.insertRow(idx)self.table.setItem(idx,0,QTableWidgetItem(str(idx1)))self.table.setItem(idx,1,QTableWidgetItem(filePath))self.table.setItem(idx,2,QTableWidgetItem(cls_name))self.table.setItem(idx,3,QTableWidgetItem(f{conf*100:.2f}%))self.table.setItem(idx,4,QTableWidgetItem(f[{x1},{y1},{x2},{y2}]))self.label_conf.setText(f置信度{conf*100:.2f}%)self.label_pos.setText(fxmin:{x1}ymin:{y1}xmax:{x2}ymax:{y2})defdetect_video(self):filePath,_QFileDialog.getOpenFileName(filter视频(*.mp4 *.avi))ifnotfilePath:returnself.capcv2.VideoCapture(filePath)self.camera_timer.start(30)defopen_camera(self):self.capcv2.VideoCapture(0)self.camera_timer.start(30)defcamera_frame(self):ret,frameself.cap.read()ifnotret:self.camera_timer.stop()returnresself.model(frame)[0]out_frameres.plot()self.current_imgout_frame pixself.cv2qt(out_frame)self.label_img.setPixmap(pix.scaled(self.label_img.size(),Qt.KeepAspectRatio))defsave_result(self):ifself.current_imgisNone:QMessageBox.warning(self,提示,无检测图片)returnsave_path,_QFileDialog.getSaveFileName(filterjpg(*.jpg))ifsave_path:cv2.imwrite(save_path,self.current_img)QMessageBox.information(self,完成,保存成功)defcloseEvent(self,event):ifself.cap:self.cap.release()self.camera_timer.stop()if__name____main__:appQApplication(sys.argv)winLandslideDetectWindow()win.show()sys.exit(app.exec_())依赖安装pipinstallultralytics opencv-python pyqt5系统功能图片检测、视频检测、本地摄像头实时滑坡检测界面展示推理耗时、目标数量、置信度、框坐标表格展示全部检测目标支持保存检测结果图4基于YOLOv11滑坡检测系统使用说明1.训练完成后把best.pt权重放到代码同级目录2.运行landslide_gui.py直接启动可视化界面3.支持无人机航拍滑坡影像做灾害识别。关键词滑坡检测山体灾害YOLOv11无人机遥感地质灾害识别PyQt可视化山体滑坡目标检测应用场景1.无人机航拍地质灾害巡检滑坡隐患识别2.山区公路、铁路沿线山体安全监测3.汛期山洪、滑坡灾害应急研判4.自然资源地质灾害普查科研实验5.遥感影像滑坡自动标注与预警研究
返回列表