YOLO水下桥梁混凝土缺陷检测数据集 YOLO模型如何训练水下桥梁及混凝土缺陷检测数据集

发布时间:2026/7/14 22:41:47
YOLO水下桥梁混凝土缺陷检测数据集 YOLO模型如何训练水下桥梁及混凝土缺陷检测数据集 智慧工地-YOLO水下桥梁混凝土缺陷检测数据集数据集详情检测类别crack图片总量1060张训练集930张验证集65张测试集65张标注状态全部已标注即拿即用数据格式支持YOLO格式及其他格式YOLO 水下桥梁混凝土缺陷检测数据集裂纹crack一、数据集基础信息表项目详细说明数据集名称水下桥梁混凝土缺陷裂纹检测数据集检测类别单类crack混凝土裂纹图像格式JPG 标准图像标签格式YOLO.txt格式图签一一对应数据总量总计 1060 张数据划分训练集930张、验证集65张、测试集65张已划分完成适用模型YOLOv5 / YOLOv7 / YOLOv8 / YOLOv11开箱即训应用场景水下桥梁巡检、水工构筑物病害检测、混凝土结构缺陷监测二、数据集目录结构保持原有结构即可bridge_crack/ ├── images/ │ ├── train/ # 930张 训练集图片 │ ├── val/ # 65张 验证集图片 │ └── test/ # 65张 测试集图片 ├── labels/ │ ├── train/ # 对应训练集txt标签 │ ├── val/ # 对应验证集txt标签 │ └── test/ # 对应测试集txt标签 └── bridge_crack.yaml # YOLO配置文件三、数据集配置文件bridge_crack.yaml放在数据集根目录直接复制使用# 数据集根路径按本地实际路径修改path:./bridge_cracktrain:images/trainval:images/valtest:images/test# 类别数量 类别名称nc:1names:0:crack四、环境依赖安装# 适配 YOLOv8 / YOLOv11pipinstallultralytics opencv-python numpy# 若使用 YOLOv5 额外安装pipinstalltorch torchvision tqdm matplotlib五、全套代码5.1 YOLOv8 训练代码train_bridge_crack.py针对水下环境、低光照、纹理干扰、细长裂纹目标做参数优化fromultralyticsimportYOLOdeftrain_bridge_defect():# 加载预训练权重 n(轻量) / s(均衡) / m(高精度)modelYOLO(yolov8s.pt)model.train(data./bridge_crack/bridge_crack.yaml,epochs120,imgsz640,batch12,# 显存不足改为 8 / 4device0,# 无GPU改为 devicecpuworkers4,patience25,# 早停防过拟合pretrainedTrue,optimizerAdam,lr00.0008,# 水下图像增强适配偏暗、水雾、色彩偏差mosaic0.85,hsv_h0.02,hsv_s0.8,hsv_v0.5,fliplr0.5,# 细长裂纹优化conf0.2,iou0.4,# 输出路径projectruns/bridge_crack,nametrain_yolov8,exist_okTrue)print(训练完成最优模型runs/bridge_crack/train_yolov8/weights/best.pt)if__name____main__:train_bridge_defect()5.2 推理测试代码predict_bridge.py支持图片、文件夹、视频、摄像头实时检测fromultralyticsimportYOLO# 加载训练好的最优权重modelYOLO(./runs/bridge_crack/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(underwater_video.mp4, saveTrue, conf0.2)# 4. 摄像头实时检测# model(source0, saveTrue, conf0.2)print(检测完成结果保存在 runs/detect 目录)5.3 YOLOv5 启动命令备选将bridge_crack.yaml放入 YOLOv5data文件夹命令行执行python train.py--datadata/bridge_crack.yaml--epochs120--imgsz640--batch12--weightsyolov5s.pt六、可选PyQt5 可视化检测界面完整可运行做成桌面工具支持选择图片/视频、一键检测、结果展示和你之前界面风格统一importsysimportosfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QWidget,QVBoxLayout,QHBoxLayout,QPushButton,QLineEdit,QLabel,QFileDialog,QTextEdit)fromPyQt5.QtGuiimportQPixmap,QImagefromPyQt5.QtCoreimportQtfromultralyticsimportYOLOclassBridgeCrackDetectUI(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(水下桥梁裂纹检测工具)self.setGeometry(100,100,1000,700)# 加载训练好的模型self.modelYOLO(./runs/bridge_crack/train_yolov8/weights/best.pt)self.img_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,450)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.img_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.img_pathornotos.path.exists(self.img_path):self.log_text.append(请先选择有效文件)returnself.log_text.append(正在检测...)# 执行检测resultsself.model(self.img_path,saveTrue,conf0.2)# 加载检测后结果图save_pathresults[0].save_dir res_imgos.path.join(save_path,os.path.basename(self.img_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检测完成结果已保存至{save_path})else:self.log_text.append(视频检测完成请查看输出目录)if__name____main__:appQApplication(sys.argv)winBridgeCrackDetectUI()win.show()sys.exit(app.exec_())七、使用说明 场景调优1. 基础使用步骤将bridge_crack数据集文件夹放在代码同级目录核对bridge_crack.yaml路径与类别运行train_bridge_crack.py开始训练训练完成后使用推理代码 / 图形界面进行检测。2. 水下裂纹专属调优技巧裂纹漏检水下裂纹属于细长小目标保持conf0.15~0.2不宜设置过高置信度画面偏暗/水雾干扰保留HSV增强参数提升暗光鲁棒性显存不足降低batch使用yolov8n.pt轻量模型过拟合减少迭代轮数、降低mosaic数值。3. 格式定制说明如需转换标签格式VOC/COCO、增减类别、扩充数据集可基于现有数据批量转换支持二次定制。4. 部署方向水下机器人/无人机视觉巡检桥梁运维平台缺陷识别模块边缘端部署模型导出 ONNX / TensorRT 加速推理。