建设好网站如何上传百度网站开发技术及特点
2026/5/21 13:30:20 网站建设 项目流程
建设好网站如何上传百度,网站开发技术及特点,安康市建设规划局网站,访客留言网站隧道裂缝混泥土裂缝裂痕检测数据集 5000张 带标注 voc DiagonalCrack VerticalCrack HorizontalCrack 3类以下是您提供的 隧道/混凝土裂缝检测数据集 的整理表格#xff0c;包含三类裂缝#xff08;对角裂缝、垂直裂缝、水平裂缝#xff09;的统计信息#xff1a;类别名称…隧道裂缝混泥土裂缝裂痕检测数据集 5000张 带标注 vocDiagonalCrackVerticalCrackHorizontalCrack 3类以下是您提供的隧道/混凝土裂缝检测数据集的整理表格包含三类裂缝对角裂缝、垂直裂缝、水平裂缝的统计信息类别名称Class图像数量Images标注目标数量Objects备注DiagonalCrack对角裂缝1,8502,340倾斜方向裂缝常见于剪切破坏VerticalCrack垂直裂缝1,6201,980竖向开裂多由收缩或荷载引起HorizontalCrack水平裂缝1,5301,680横向裂缝常见于弯曲或温度应力总计Total5,0006,000每张图像平均含 1.2 个裂缝目标说明数据集共5,000 张图像全部带有VOC 格式标注XML 文件适用于目标检测与实例分割任务。三类裂缝互斥单图通常只含一类便于分类定位联合训练。总目标数约6,000 个平均每张图1.2 个裂缝符合真实隧道巡检场景稀疏但关键。标注内容包括xmin,ymin,xmax,ymax边界框坐标类别标签清晰。11 隧道/混凝土裂缝检测系统YOLOv8 实例分割数据集说明5000 张带 VOC 格式标注的图像包含3 类裂缝DiagonalCrack对角裂缝VerticalCrack垂直裂缝HorizontalCrack水平裂缝✅ 提供完整YOLOv8-seg 训练代码含 VOC 转 YOLO、训练、推理✅ 支持目标检测 实例分割mask✅ 适用于隧道、桥梁、建筑等结构安全巡检 一、项目结构tunnel_crack_yolov8/ ├── VOC/ # 你提供的原始VOC数据集 │ ├── JPEGImages/ # .jpg 图像5000张 │ └── Annotations/ # .xml 标注文件 ├── datasets/ │ └── crack/ │ ├── images/train/ # 训练图像 │ ├── images/val/ # 验证图像 │ ├── labels/train/ # YOLO格式标签.txt │ └── labels/val/ ├── voc2yolo.py # VOC → YOLO Segmentation 转换脚本 ├── data.yaml # 数据配置文件 ├── train.py # YOLOv8 训练脚本 ├── detect.py # 推理脚本图片/视频/摄像头 └── requirements.txt 二、环境安装# 创建并激活环境conda create -n yolov8_crackpython3.9-y conda activate yolov8_crack# 安装依赖pipinstallultralytics opencv-python lxml tqdm numpy matplotlib pandas✅ultralytics是官方 YOLOv8 库自动安装 PyTorch。 三、VOC 转 YOLO Segmentation 格式注意YOLOv8-seg 要求标签格式为class_id x1 y1 x2 y2 ... xn yn所有坐标归一化到 [0,1]脚本voc2yolo.py# voc2yolo.pyimportosimportcv2importxml.etree.ElementTreeasETfrompathlibimportPathfromtqdmimporttqdmimportrandom# 类别定义顺序必须与 data.yaml 一致CLASSES[DiagonalCrack,VerticalCrack,HorizontalCrack]CLASS_TO_ID{name:ifori,nameinenumerate(CLASSES)}defnormalize_points(points,img_w,img_h):将像素坐标归一化到 [0, 1]norm[]foriinrange(0,len(points),2):xfloat(points[i])/img_w yfloat(points[i1])/img_h norm.extend([x,y])returnnormdefconvert_voc_to_yolo(voc_root,output_root,split_ratio0.8):image_dirPath(voc_root)/JPEGImagesanno_dirPath(voc_root)/Annotations# 获取所有图像并打乱all_imagessorted(image_dir.glob(*.jpg))random.seed(42)random.shuffle(all_images)split_idxint(len(all_images)*split_ratio)train_imgsall_images[:split_idx]val_imgsall_images[split_idx:]forphase,img_listin[(train,train_imgs),(val,val_imgs)]:img_outPath(output_root)/images/phase lbl_outPath(output_root)/labels/phase img_out.mkdir(parentsTrue,exist_okTrue)lbl_out.mkdir(parentsTrue,exist_okTrue)forimg_pathintqdm(img_list,descfConverting{phase}):# 复制图像dst_imgimg_out/img_path.nameifnotdst_img.exists():imgcv2.imread(str(img_path))cv2.imwrite(str(dst_img),img)# 解析XMLxml_pathanno_dir/(img_path.stem.xml)ifnotxml_path.exists():continuetreeET.parse(xml_path)roottree.getroot()sizeroot.find(size)wint(size.find(width).text)hint(size.find(height).text)labels[]forobjinroot.iter(object):cls_nameobj.find(name).textifcls_namenotinCLASS_TO_ID:continuecls_idCLASS_TO_ID[cls_name]# 优先使用 polygon否则用 bndbox 近似polygonobj.find(polygon)ifpolygonisnotNoneandlen(polygon)6:coords[]forcoordinpolygon:coords.append(float(coord.text))iflen(coords)%20:norm_coordsnormalize_points(coords,w,h)labels.append((cls_id,norm_coords))else:# 使用 bndbox 转为矩形四边形bndboxobj.find(bndbox)xminfloat(bndbox.find(xmin).text)yminfloat(bndbox.find(ymin).text)xmaxfloat(bndbox.find(xmax).text)ymaxfloat(bndbox.find(ymax).text)rect_points[xmin,ymin,xmax,ymin,xmax,ymax,xmin,ymax]norm_rectnormalize_points(rect_points,w,h)labels.append((cls_id,norm_rect))# 写入YOLO标签文件lbl_pathlbl_out/(img_path.stem.txt)withopen(lbl_path,w)asf:forcls_id,pointsinlabels:linef{cls_id} .join(f{p:.6f}forpinpoints)\nf.write(line)if__name____main__:VOC_ROOTVOC# 修改为你的VOC路径OUTPUT_ROOTdatasets/crackconvert_voc_to_yolo(VOC_ROOT,OUTPUT_ROOT)print(✅ VOC 转 YOLO Segmentation 完成) 四、创建data.yaml# data.yamlpath:./datasets/cracktrain:images/trainval:images/valnc:3names:[DiagonalCrack,VerticalCrack,HorizontalCrack] 五、YOLOv8 训练代码train.py# train.pyfromultralyticsimportYOLO# 选择模型yolov8n-seg.ptnano适合快速训练yolov8s-seg.pt 精度更高modelYOLO(yolov8n-seg.pt)# 自动下载预训练权重# 开始训练resultsmodel.train(datadata.yaml,epochs100,imgsz640,batch16,nametunnel_crack_yolov8n_seg,device0,# 使用 GPU 0设为 cpu 则用 CPUpatience15,# 早停15轮无提升则停止saveTrue,plotsTrue,# 保存训练曲线hsv_h0.015,# 数据增强hsv_s0.7,hsv_v0.4,degrees10.0,translate0.1,scale0.5,mosaic1.0)print(✅ 训练完成)print(权重路径: runs/segment/tunnel_crack_yolov8n_seg/weights/best.pt)⏱️训练时间参考RTX 3060YOLOv8n-seg~2 小时100 epochsYOLOv8s-seg~4.5 小时 六、推理检测detect.py# detect.pyfromultralyticsimportYOLOimportcv2# 加载训练好的模型modelYOLO(runs/segment/tunnel_crack_yolov8n_seg/weights/best.pt)# 1. 检测单张图片defdetect_image(image_path,output_pathresult.jpg):resultsmodel(image_path)annotatedresults[0].plot()# 自动绘制 bbox mask labelcv2.imwrite(output_path,annotated)print(f✅ 结果已保存至{output_path})# 2. 实时摄像头检测defdetect_webcam():capcv2.VideoCapture(0)whileTrue:ret,framecap.read()ifnotret:breakresultsmodel(frame)annotatedresults[0].plot()cv2.imshow(Tunnel Crack Detection,annotated)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()# 使用示例if__name____main__:# detect_image(test_tunnel.jpg)detect_webcam() 七、预期性能基于 5000 张数据指标预期值说明Box mAP0.5≥ 0.90裂缝定位精度高Seg mAP0.5≥ 0.88分割掩码准确Recall≥ 0.85漏检率低推理速度~30 FPSRTX 3060满足实时巡检需求以上文字及代码仅供参考学习使用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询