三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

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

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

智慧灾害识别-遥感无人机滑坡检测数据集

遥感图像滑坡区域检测数据集,4051张,yolo,voc,coco三种标注方式
图像尺寸:640*640
类别数量:1类
训练集图像数量:3563; 验证集图像数量:214; 测试集图像数量:274
类别名称: 每一类图像数 ,每一类标注数
landslide: 4051,10025
image num: 4051

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


训练轮次:80 个 epoch

1

1

1

基于YOLOv11滑坡检测Qt系统简易全套代码

功能:图片检测,显示置信度、目标数量、坐标信息,结果表格展示,保存检测结果,对应上面滑坡检测GUI界面

1.环境依赖

pipinstallultralytics pyqt5 opencv-python pillow

2.主程序 main.py

importsysimportcv2fromPILimportImagefromPyQt5.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.model=YOLO("yolov11n_landslide.pt")self.img_path=Noneself.init_ui()definit_ui(self):central_widget=QWidget()self.setCentralWidget(central_widget)main_layout=QHBoxLayout(central_widget)#左侧图像显示区域left_group=QGroupBox("检测图像")left_layout=QVBoxLayout(left_group)self.img_label=QLabel()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_group=QWidget()right_layout=QVBoxLayout(right_group)#文件导入模块file_group=QGroupBox("文件导入")file_layout=QVBoxLayout(file_group)self.btn_img=QPushButton("选择图片")self.btn_img.clicked.connect(self.load_image)file_layout.addWidget(self.btn_img)right_layout.addWidget(file_group)#检测结果信息res_group=QGroupBox("检测结果")res_layout=QVBoxLayout(res_group)self.info_text=QTextEdit()self.info_text.setReadOnly(True)res_layout.addWidget(self.info_text)right_layout.addWidget(res_group)#操作按钮op_group=QGroupBox("操作")op_layout=QHBoxLayout(op_group)self.btn_detect=QPushButton("开始检测")self.btn_detect.clicked.connect(self.run_detect)self.btn_save=QPushButton("保存结果")op_layout.addWidget(self.btn_detect)op_layout.addWidget(self.btn_save)right_layout.addWidget(op_group)main_layout.addWidget(right_group)#底部表格self.table=QTableWidget()self.table.setColumnCount(5)self.table.setHorizontalHeaderLabels(["序号","文件路径","类别","置信度","坐标位置"])total_layout=QVBoxLayout(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_path=filepix=QPixmap(file).scaled(self.img_label.size(),Qt.KeepAspectRatio)self.img_label.setPixmap(pix)defrun_detect(self):ifnotself.img_path:self.info_text.append("请先加载图片!")return#推理results=self.model(self.img_path,conf=0.25)res=results[0]img_cv=cv2.imread(self.img_path)boxes=res.boxes self.table.setRowCount(0)target_num=len(boxes)self.info_text.append(f"目标数目:{target_num}")foridx,boxinenumerate(boxes):x1,y1,x2,y2=map(int,box.xyxy[0])conf=float(box.conf[0])cls_name=self.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)row=self.table.rowCount()self.table.insertRow(row)self.table.setItem(row,0,QTableWidgetItem(str(idx+1)))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_rgb=cv2.cvtColor(img_cv,cv2.COLOR_BGR2RGB)h,w,ch=img_rgb.shape bytes_per_line=ch*w q_img=QImage(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__":app=QApplication(sys.argv)win=LandslideDetectUI()win.show()sys.exit(app.exec_())

3.yolo训练配置文件 landslide.yaml

#滑坡泥石流数据集配置path:./landslide_datasettrain:images/trainval:images/valtest:images/testnames:0:landslide1:debris-flow

4.简易训练脚本 train.py

fromultralyticsimportYOLOif__name__=='__main__':#加载yolov11n模型model=YOLO("yolov11n.pt")results=model.train(data="landslide.yaml",epochs=80,imgsz=640,batch=8,device=0,project="landslide_exp",name="yolov11n_run")
← 返回列表