下水管缺陷检测数据集的训练及应用 排水管堵塞 计算机视觉数据集 下水道缺陷 计算机视觉数据集数据集格式图片数量类别数量类别Sewage Defect DetectionObject Detection9807Buckling,Crack,Debris,Hole,Joint offset,Obstacle,Utility intrusion变形)、Crack (裂缝)、Debris (杂物)、Hole (破洞)、Joint offset (接口错位)、Obstacle (障碍物 / 堵塞)、Utility intrusion (异物侵入)1111一、下水管缺陷检测数据集信息表数据集名称任务类型图片总数类别数量缺陷类别明细Sewage Defect Detection下水管缺陷检测数据集目标检测980 张7类Buckling(变形)、Crack(裂缝)、Debris(杂物)、Hole(破洞)、Joint offset(接口错位)、Obstacle(障碍物/堵塞)、Utility intrusion(异物侵入)二、环境依赖安装基于 YOLOv8 实现工业检测场景通用、推理快、易部署pipinstalltorch torchvision ultralytics opencv-python numpy tqdm三、数据集目录结构YOLO 标准格式sewage_defect/ ├── images/ # 所有原图 ├── labels/ # YOLO 标注 txt 文件与图片同名 ├── train.txt # 训练集图片路径/文件名列表 ├── val.txt # 验证集图片路径/文件名列表 └── sewage.yaml # 数据集配置文件标注规则7 个类别 ID 依次0:Buckling、1:Crack、2:Debris、3:Hole、4:Joint offset、5:Obstacle、6:Utility intrusion每张图片对应同名.txt标注格式类别ID x y w h归一化坐标四、数据集配置文件sewage.yaml# 数据集根路径path:./sewage_defecttrain:train.txtval:val.txt# 类别总数nc:7# 类别名称和ID一一对应names:0:Buckling1:Crack2:Debris3:Hole4:Joint offset5:Obstacle6:Utility intrusion五、完整训练代码train_sewage_defect.py适配管道内壁复杂光照、小缺陷、多类别场景内置针对性数据增强fromultralyticsimportYOLOdeftrain_sewage_defect():# 加载预训练权重选用中等精度模型适配管道缺陷modelYOLO(yolov8s.pt)# 训练参数针对下水道暗光、纹理复杂、细小缺陷优化resultsmodel.train(data./sewage_defect/sewage.yaml,epochs150,imgsz640,batch8,# 显存不足改为 4/2device0,# 无GPU填写 cpupatience25,# 早停防止小数据集过拟合mosaic1.0,mixup0.0,# 暗光、色彩扰动增强hsv_h0.015,hsv_s0.6,hsv_v0.5,# 管道环形场景增强degrees180,perspective0.001,flipud0.3,fliplr0.5,# 小目标增强copy_paste0.1,projectsewage_run,nameyolov8_sewage_train,exist_okTrue)print(下水道缺陷检测模型训练完成)if__name____main__:train_sewage_defect()六、单图推理 可视化代码predict_sewage.py用于缺陷可视化、现场检测验证fromultralyticsimportYOLOimportcv2defdetect_defect(img_path,weight_path):# 加载训练好的最优权重modelYOLO(weight_path)# 调低置信度避免细小缺陷漏检resultsmodel(img_path,conf0.2,iou0.45)forresinresults:img_outres.plot()cv2.imshow(Sewage Defect Detection,img_out)# 打印检测结果forboxinres.boxes:cls_idint(box.cls[0])conffloat(box.conf[0])print(f类别ID:{cls_id}置信度:{conf:.2f})cv2.waitKey(0)cv2.destroyAllWindows()if__name____main__:# 替换为你的图片路径和训练产出的 best.ptdetect_defect(img_path./sewage_defect/images/test.jpg,weight_path./sewage_run/yolov8_sewage_train/weights/best.pt)七、批量推理代码批量检测整张数据集batch_predict.pyimportosfromultralyticsimportYOLOdefbatch_detect(img_dir,weight_path,save_dir):os.makedirs(save_dir,exist_okTrue)modelYOLO(weight_path)img_suffix(.jpg,.png,.jpeg)forimg_nameinos.listdir(img_dir):ifimg_name.lower().endswith(img_suffix):img_pathos.path.join(img_dir,img_name)resultsmodel(img_path,conf0.2)forresinresults:save_pathos.path.join(save_dir,img_name)res.save(save_path)print(f批量检测完成结果已保存至:{save_dir})if__name____main__:batch_detect(img_dir./sewage_defect/images,weight_path./sewage_run/yolov8_sewage_train/weights/best.pt,save_dir./sewage_defect/predict_result)八、模型导出部署使用ONNX导出为通用格式适配嵌入式、边缘设备、现场检测终端fromultralyticsimportYOLO modelYOLO(./sewage_run/yolov8_sewage_train/weights/best.pt)# 导出 ONNXmodel.export(formatonnx,imgsz640)print(ONNX 模型导出完成可用于边缘部署)九、使用说明与调优建议数据划分980 张图片属于小样本数据集建议按训练集80%、验证集20%划分保证类别分布均衡。过拟合处理样本量偏少若验证集精度下降明显减小batch、降低增强强度、适当减少训练轮数。场景适配下水道内部光照不均、画面偏暗代码已开启亮度/色彩增强可根据实际效果微调hsv_v。缺陷特点Crack(裂缝)、Hole(破洞) 属于细小目标推理置信度建议设为0.2~0.3Obstacle(堵塞/障碍物) 目标较大检测难度低。部署方向训练完成导出 ONNX可对接管道巡检机器人、内窥检测设备、视频实时分析系统。