YOLO模型如何训练 桥梁缺陷目标检测数据集 桥梁缺陷检测 #智慧交通 #桥梁巡检 #市政工程 #结构监测

📅 2026/7/15 14:45:25
YOLO模型如何训练 桥梁缺陷目标检测数据集 桥梁缺陷检测 #智慧交通 #桥梁巡检 #市政工程 #结构监测
桥梁缺陷目标检测数据集【内容】16045张图片包含’Biodegradation’, ‘Concrete-leaching’, ‘Corrison’, ‘Crack’, ‘Efflorescence’, ‘Exposed-reinforcement-steel’, ‘Formwork-Niche’, Staining-or-infiltration’等8类目标图片清晰标注适合yolo等目标检测模型训练1111一、数据集信息总表项目详细说明数据集名称桥梁缺陷目标检测数据集图像总量16045 张标注格式YOLO 标准.txt标签图签一一对应检测类别共8类桥梁病害0: Biodegradation生物侵蚀1: Concrete-leaching混凝土溶蚀2: Corrosion腐蚀3: Crack裂缝4: Efflorescence泛碱/盐析5: Exposed-reinforcement-steel钢筋外露6: Formwork-Niche模板凹坑7: Staining-or-infiltration污渍/渗渍图像质量图像清晰人工精细标注适用模型YOLOv5 / YOLOv7 / YOLOv8 / YOLOv11 等主流目标检测模型应用场景桥梁外观病害智能巡检、结构健康监测、市政桥梁自动化缺陷识别数据划分建议训练集:验证集:测试集 8:1:1二、数据集目录结构按 YOLO 标准格式整理目录如下bridge_defect/ ├── images/ │ ├── train/ # 训练集图片 │ ├── val/ # 验证集图片 │ └── test/ # 测试集图片 ├── labels/ │ ├── train/ # 对应训练集txt标签 │ ├── val/ # 对应验证集txt标签 │ └── test/ # 对应测试集txt标签 └── bridge_defect.yaml # 模型配置文件三、YOLO 配置文件bridge_defect.yaml放置在数据集根目录类别顺序不可改动# 数据集根路径根据本地实际路径修改path:./bridge_defecttrain:images/trainval:images/valtest:images/test# 类别数量nc:8# 8类病害名称names:0:Biodegradation1:Concrete-leaching2:Corrosion3:Crack4:Efflorescence5:Exposed-reinforcement-steel6:Formwork-Niche7:Staining-or-infiltration四、环境依赖安装# YOLOv8 / YOLOv11 通用依赖pipinstallultralytics opencv-python numpy五、完整训练代码YOLOv8 推荐针对桥梁表面缺陷细长裂缝、小面积腐蚀/污渍、多尺度目标做参数优化5.1 训练脚本train_bridge_defect.pyfromultralyticsimportYOLOdeftrain_bridge_defect():# 加载预训练权重n(轻量) / s(均衡) / m(高精度) / l(大型)modelYOLO(yolov8s.pt)# 训练参数配置model.train(data./bridge_defect/bridge_defect.yaml,# 指向yaml配置文件epochs150,imgsz640,batch16,# 显存不足改为 8 / 4device0,# 无GPU改为 devicecpuworkers4,patience30,# 早停防止过拟合pretrainedTrue,optimizerAdam,lr00.001,# 数据增强适配户外光照、阴影、表面纹理干扰mosaic0.85,hsv_h0.015,hsv_s0.7,hsv_v0.4,fliplr0.5,flipud0.2,# 缺陷检测阈值优化conf0.2,iou0.45,# 输出路径projectruns/bridge_defect,nametrain_yolov8,exist_okTrue)print(训练完成最优模型路径runs/bridge_defect/train_yolov8/weights/best.pt)if__name____main__:train_bridge_defect()5.2 推理测试脚本predict_bridge.py支持单图、批量图片、视频、摄像头实时检测fromultralyticsimportYOLO# 加载训练完成的最优权重modelYOLO(./runs/bridge_defect/train_yolov8/weights/best.pt)if__name____main__:# 1. 单张图片检测# model(test.jpg, saveTrue, conf0.2)# 2. 文件夹批量图片检测推荐model(source./test_images,saveTrue,conf0.2)# 3. 视频流检测桥梁巡检视频# model(bridge_video.mp4, saveTrue, conf0.2)# 4. 本地摄像头实时检测# model(source0, saveTrue, conf0.2)print(检测完成结果保存在 runs/detect 目录)5.3 YOLOv5 启动命令备选将bridge_defect.yaml放入 YOLOv5 工程data文件夹命令行执行python train.py--datadata/bridge_defect.yaml--epochs150--imgsz640--batch16--weightsyolov5s.pt六、可选PyQt5 可视化检测界面做成桌面工具适合现场演示、单机部署和常规界面风格统一importsysimportosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QPushButton,QLabel,QFileDialog,QTextEdit)fromPyQt5.QtGuiimportQPixmapfromPyQt5.QtCoreimportQtfromultralyticsimportYOLOclassBridgeDefectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(桥梁缺陷检测工具)self.setGeometry(100,100,1000,700)# 加载训练好的模型self.modelYOLO(./runs/bridge_defect/train_yolov8/weights/best.pt)self.file_pathself.init_ui()definit_ui(self):centralQWidget()self.setCentralWidget(central)main_layoutQVBoxLayout(central)# 按钮区域btn_layoutQHBoxLayout()self.btn_selectQPushButton(选择图片/视频)self.btn_detectQPushButton(开始检测)self.btn_select.clicked.connect(self.select_file)self.btn_detect.clicked.connect(self.do_detect)btn_layout.addWidget(self.btn_select)btn_layout.addWidget(self.btn_detect)main_layout.addLayout(btn_layout)# 路径显示self.path_labelQLabel(当前文件无)main_layout.addWidget(self.path_label)# 图片显示区self.img_labelQLabel()self.img_label.setAlignment(Qt.AlignCenter)self.img_label.setMinimumSize(800,480)main_layout.addWidget(self.img_label)# 日志输出self.log_textQTextEdit()self.log_text.setReadOnly(True)main_layout.addWidget(self.log_text)defselect_file(self):file_path,_QFileDialog.getOpenFileName(self,选择检测文件,,图片文件 (*.jpg *.png *.jpeg);; 视频文件 (*.mp4);; 所有文件 (*))iffile_path:self.file_pathfile_path self.path_label.setText(f当前文件{file_path})iffile_path.lower().endswith((jpg,png,jpeg)):pixQPixmap(file_path)self.img_label.setPixmap(pix.scaled(self.img_label.size(),Qt.KeepAspectRatio,Qt.SmoothTransformation))self.log_text.append(文件加载完成点击【开始检测】)defdo_detect(self):ifnotself.file_pathornotos.path.exists(self.file_path):self.log_text.append(请先选择有效文件)returnself.log_text.append(正在执行缺陷检测...)resultsself.model(self.file_path,saveTrue,conf0.2)res_dirresults[0].save_dir res_imgos.path.join(res_dir,os.path.basename(self.file_path))ifos.path.exists(res_img):pixQPixmap(res_img)self.img_label.setPixmap(pix.scaled(self.img_label.size(),Qt.KeepAspectRatio,Qt.SmoothTransformation))self.log_text.append(f检测完成结果已保存至{res_dir})else:self.log_text.append(视频检测完成请查看输出目录)if__name____main__:appQApplication(sys.argv)winBridgeDefectUI()win.show()sys.exit(app.exec_())