智慧隧道检测-隧道缺陷检测系统
智慧隧道检测-隧道缺陷检测系统1.数据集隧道衬砌病害检测数据集包含裂缝、渗漏水、掉块等类别。支持YOLO、XML、TXT、JSON格式。2.数据集隧道病害检测系统软件部署支持视频检测、图像检测、病害位置记录和检测结果导出。3.数据集轨道巡检车或无人小车硬件部署实现隧道内部连续巡检和实时检测。隧道缺陷智能检测系统一、项目信息表项目详情说明系统名称隧道缺陷智能检测系统核心功能单图/批量/视频隧道缺陷检测、病害位置记录、风险等级评估、检测结果导出检测类别裂缝、渗漏水、剥落掉块、蜂窝麻面、钢筋外露、衬砌破损等隧道衬砌病害数据集格式支持YOLO、XML、TXT、JSON等主流标注格式可直接用于模型训练部署方式1. 软件部署独立检测系统支持图片/视频文件检测与结果导出2. 硬件部署可对接轨道巡检车/无人小车实现隧道内连续巡检与实时检测适用场景公路/铁路隧道运维巡检、地铁隧道病害监测、基础设施安全评估、工程验收检测二、核心应用场景隧道日常运维巡检替代人工肉眼检查自动识别衬砌裂缝、渗漏水、掉块等缺陷记录位置与风险等级生成标准化检测报告。轨道/无人小车连续巡检搭载于轨道巡检车或隧道无人小车实现隧道内连续采集影像、实时检测病害大幅提升巡检效率。隧道工程验收与安全评估对新建或改造隧道进行缺陷普查为工程验收和安全等级评估提供数据支撑。长期病害趋势监测多次巡检数据对比跟踪裂缝扩展、渗漏水变化为病害维修与加固提供决策依据。三、关键标签#隧道检测#衬砌病害#裂缝识别#渗漏水检测#基础设施运维#YOLO检测#目标检测#巡检车#智能检测系统#工程安全四、数据集目录结构YOLO格式tunnel_defect_dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── tunnel.yaml五、数据集配置文件tunnel.yamlpath:./tunnel_defect_datasettrain:images/trainval:images/valnc:6names:0:裂缝1:渗漏水2:剥落3:蜂窝麻面4:钢筋外露5:衬砌破损六、核心代码示例1. 模型训练代码train_tunnel.pyfromultralyticsimportYOLOdefmain():modelYOLO(yolov8s.pt)resultsmodel.train(data./tunnel_defect_dataset/tunnel.yaml,epochs100,imgsz640,batch16,device0,workers4,patience15,projectruns/train,nametunnel_defect,exist_okTrue,pretrainedTrue)print(训练完成模型保存在 runs/train/tunnel_defect/weights/)metricsmodel.val()print(fmAP50:{metrics.box.map50:.4f})if__name____main__:main()2. 检测系统核心代码单图/视频检测importcv2importjsonfromultralyticsimportYOLOclassTunnelDefectDetector:def__init__(self,model_path):self.modelYOLO(model_path)self.class_names[裂缝,渗漏水,剥落,蜂窝麻面,钢筋外露,衬砌破损]defdetect_image(self,img_path,conf0.5):imgcv2.imread(img_path)resultsself.model.predict(img,confconf,saveFalse)defects[]forboxinresults[0].boxes:clsint(box.cls[0])conf_valfloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])defects.append({type:self.class_names[cls],confidence:conf_val,bbox:[x1,y1,x2,y2],risk:高ifclsin[0,4]else中ifclsin[1,2]else低})returndefectsdefdetect_video(self,video_path,output_pathoutput.mp4,conf0.5):capcv2.VideoCapture(video_path)fpsint(cap.get(cv2.CAP_PROP_FPS))widthint(cap.get(cv2.CAP_PROP_FRAME_WIDTH))heightint(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))writercv2.VideoWriter(output_path,cv2.VideoWriter_fourcc(*mp4v),fps,(width,height))all_defects[]whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsself.model.predict(frame,confconf,saveFalse)frame_defects[]forboxinresults[0].boxes:clsint(box.cls[0])conf_valfloat(box.conf[0])x1,y1,x2,y2map(int,box.xyxy[0])color(0,0,255)ifclsin[0,4]else(0,255,255)ifclsin[1,2]else(0,255,0)cv2.rectangle(frame,(x1,y1),(x2,y2),color,2)cv2.putText(frame,f{self.class_names[cls]}{conf_val:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,color,1)frame_defects.append({frame:int(cap.get(cv2.CAP_PROP_POS_FRAMES)),type:self.class_names[cls],confidence:conf_val,bbox:[x1,y1,x2,y2]})all_defects.extend(frame_defects)writer.write(frame)cap.release()writer.release()returnall_defectsdefexport_json(self,defects,pathdefects_result.json):withopen(path,w,encodingutf-8)asf:json.dump(defects,f,ensure_asciiFalse,indent4)# 示例使用if__name____main__:detectorTunnelDefectDetector(runs/train/tunnel_defect/weights/best.pt)img_defectsdetector.detect_image(tunnel_test.jpg)print(检测到的缺陷,img_defects)detector.export_json(img_defects,image_defects.json)