当前位置: 首页 > article >正文

管道病害数据集 管道缺陷分割数据集 DeepLabV3+ 训练代码 (针对管道病害优化)市政管道分割

市政管道-管道病害数据集VOC格式包括deposition/root/obstacle/deformation/crack五种病害600张图片Labelme标注标签Mask文件如下无需额外处理支持DeepLabV3、PSPnet、Unet、Unet、Segformer、HRnet、Segnet、DDRnet等模型1直接用于语义分割模型的训练。 1. 管道病害语义分割数据集概况项目属性详细说明数据集名称Pipeline-Defect-Segmentation-Dataset数据总量600张高清管道内窥镜图像标注格式VOC 格式(PNG Mask JPG Image)由 Labelme 转换而来病害类别5 类(详见下表)支持模型DeepLabV3, PSPNet, UNet, UNet, SegFormer, HRNet, SegNet, DDRnet 等应用场景城市地下管网检测、CCTV 视频自动分析、管道健康评估、非开挖修复指导️ 病害类别定义与编码建议在训练前需要确保 Mask 图片中的像素值与以下类别 ID 对应通常 Labelme 转 VOC 后会生成 0, 1, 2, 3, 4 的灰度图类别 ID英文名称中文含义特征描述检测难点0background背景管道正常壁面、水流区分正常纹理与细微裂缝1deposition沉积/淤积底部泥沙堆积、结垢边界模糊与背景颜色相近2root树根侵入须状、条状异物刺入细长结构易断裂漏检3obstacle障碍物石块、建筑垃圾、遗留工具形状不规则种类繁杂4deformation变形/坍塌管道椭圆化、局部凹陷需结合几何形状判断5crack裂缝线性裂纹、网状龟裂极细目标最难的检测项⚠️ 注意如果你的 Mask 文件中像素值不是连续的 0-5请在数据加载时进行映射。通常 Labelme 生成的 JSON 转 Mask 后每个类别对应一个特定的颜色或灰度值需统一转换为单通道索引图0,1,2,3,4,5。 2. DeepLabV3 训练代码 (针对管道病害优化)此代码基于 PyTorch 和torchvision/segmentation_models_pytorch(推荐) 或自定义模型编写。考虑到管道病害中裂缝 (Crack)和树根 (Root)属于细小目标而沉积 (Deposition)属于大区域目标代码中加入了混合损失函数和数据增强策略。 第一步环境准备pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pipinstallsegmentation-models-pytorch albumentations tqdm matplotlib opencv-python 第二步配置文件 (config.py)importos# 数据集路径DATA_ROOT./pipeline_datasetIMAGES_DIRos.path.join(DATA_ROOT,JPEGImages)MASKS_DIRos.path.join(DATA_ROOT,SegmentationClass)# 存放 Mask 的文件夹# 类别设置 (根据实际 Mask 像素值调整)# 假设背景为 0其他病害依次为 1-5CLASSES[background,deposition,root,obstacle,deformation,crack]NUM_CLASSESlen(CLASSES)# 训练参数EPOCHS100BATCH_SIZE4# 显存不足可减为 2IMG_SIZE512# 管道图通常为圆形或长条512 足够捕捉细节DEVICEcudaiftorch.cuda.is_available()elsecpuLR1e-4WEIGHT_DECAY1e-4# 模型选择ENCODERmobilenet_v2# 可选: resnet34, efficientnet-b3, mit_b2 (SegFormer)ENCODER_WEIGHTSimagenet 第三步数据集加载与增强 (dataset.py)针对管道场景的特殊增强随机旋转管道方向不定、色彩抖动光照不均、弹性变换模拟变形importosimportcv2importnumpyasnpimporttorchfromtorch.utils.dataimportDatasetimportalbumentationsasAfromalbumentations.pytorchimportToTensorV2fromconfigimportIMAGES_DIR,MASKS_DIR,CLASSES,IMG_SIZE# 定义数据增强train_transformA.Compose([A.Resize(IMG_SIZE,IMG_SIZE),A.HorizontalFlip(p0.5),# 管道左右对称A.VerticalFlip(p0.3),# 管道可能倒置或摄像头翻转A.RandomRotate90(p0.5),A.ShiftScaleRotate(shift_limit0.1,scale_limit0.1,rotate_limit15,p0.5),A.OneOf([A.RandomBrightnessContrast(brightness_limit0.2,contrast_limit0.2),A.HueSaturationValue(hue_shift_limit10,sat_shift_limit20,val_shift_limit10),],p0.5),A.Normalize(mean(0.485,0.456,0.406),std(0.229,0.224,0.225)),ToTensorV2(),])val_transformA.Compose([A.Resize(IMG_SIZE,IMG_SIZE),A.Normalize(mean(0.485,0.456,0.406),std(0.229,0.224,0.225)),ToTensorV2(),])classPipelineDataset(Dataset):def__init__(self,images_dir,masks_dir,classes,transformNone):self.images_dirimages_dir self.masks_dirmasks_dir self.classesclasses self.transformtransform self.image_filenames[fforfinos.listdir(images_dir)iff.endswith(.jpg)orf.endswith(.png)]# 过滤确保对应的 mask 存在self.image_filenames[fforfinself.image_filenamesifos.path.exists(os.path.join(masks_dir,f.replace(.jpg,.png).replace(.JPG,.png)))]def__len__(self):returnlen(self.image_filenames)def__getitem__(self,idx):img_nameself.image_filenames[idx]img_pathos.path.join(self.images_dir,img_name)# 适配不同的后缀名mask_nameimg_name.split(.)[0].pngmask_pathos.path.join(self.masks_dir,mask_name)imagecv2.imread(img_path)imagecv2.cvtColor(image,cv2.COLOR_BGR2RGB)maskcv2.imread(mask_path,cv2.IMREAD_GRAYSCALE)# 关键确保 Mask 值是连续的 0,1,2,3,4,5# 如果 Labelme 转出的 Mask 是特定颜色需在此处映射为索引# 这里假设已经是 0-N 的灰度图若有颜色需添加映射逻辑unique_valsnp.unique(mask)# 简单映射示例如果最大值超过类别数可能需要重新映射此处假设已处理正确ifself.transform:augmentedself.transform(imageimage,maskmask)imageaugmented[image]maskaugmented[mask]# LongTensor for CrossEntropyLossreturnimage,mask.long() 第四步训练脚本 (train_deeplabv3.py)使用 Dice CE 混合损失解决裂缝样本少的问题importtorchimporttorch.nnasnnfromtorch.utils.dataimportDataLoaderfromtqdmimporttqdmimportsegmentation_models_pytorchassmpfromdatasetimportPipelineDatasetfromconfigimport*importos# 1. 初始化模型 (DeepLabV3)modelsmp.DeepLabV3Plus(encoder_nameENCODER,encoder_weightsENCODER_WEIGHTS,in_channels3,classesNUM_CLASSES,activationNone# 激活函数放在 Loss 中处理或直接输出 logits).to(DEVICE)# 2. 定义损失函数 (CE Dice 组合提升小目标如裂缝的检测率)classDiceLoss(nn.Module):def__init__(self,weightNone,size_averageTrue):super(DiceLoss,self).__init__()defforward(self,inputs,targets,smooth1):inputstorch.softmax(inputs,dim1)targetstorch.nn.functional.one_hot(targets,num_classesNUM_CLASSES).permute(0,3,1,2).float()intersection(inputs*targets).sum(dim(2,3))dice(2.*intersectionsmooth)/(inputs.sum(dim(2,3))targets.sum(dim(2,3))smooth)return1-dice.mean()criterion_cenn.CrossEntropyLoss()criterion_diceDiceLoss()defcombined_loss(pred,target):cecriterion_ce(pred,target)dicecriterion_dice(pred,target)returncedice# 权重可根据实际情况调整如 0.5*ce 0.5*dice# 3. 数据加载train_datasetPipelineDataset(IMAGES_DIR,MASKS_DIR,CLASSES,transformA.Compose([# 复用 dataset.py 中的 train_transform 逻辑此处简化展示A.Resize(IMG_SIZE,IMG_SIZE),A.HorizontalFlip(p0.5),A.RandomRotate90(p0.5),A.Normalize(mean(0.485,0.456,0.406),std(0.229,0.224,0.225)),lambda**kwargs:{image:ToTensorV2()(imagekwargs[image])[image],mask:torch.from_numpy(kwargs[mask]).long()}]))# 注意实际使用时请直接导入 dataset.py 中的 transform 和类# 为演示方便这里假设你已正确导入fromdatasetimporttrain_transform,val_transform,PipelineDataset train_datasetPipelineDataset(IMAGES_DIR,MASKS_DIR,CLASSES,transformtrain_transform)val_datasetPipelineDataset(IMAGES_DIR,MASKS_DIR,CLASSES,transformval_transform)train_loaderDataLoader(train_dataset,batch_sizeBATCH_SIZE,shuffleTrue,num_workers4)val_loaderDataLoader(val_dataset,batch_sizeBATCH_SIZE,shuffleFalse,num_workers4)optimizertorch.optim.AdamW(model.parameters(),lrLR,weight_decayWEIGHT_DECAY)schedulertorch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,modemin,factor0.5,patience5)best_iou0.0os.makedirs(checkpoints,exist_okTrue)print(f Start Training DeepLabV3 on Pipeline Dataset ({NUM_CLASSES}classes))forepochinrange(EPOCHS):model.train()train_loss0.0# Training Looppbartqdm(train_loader,descfEpoch{epoch1}/{EPOCHS}[Train])forimages,masksinpbar:images,masksimages.to(DEVICE),masks.to(DEVICE)optimizer.zero_grad()outputsmodel(images)losscombined_loss(outputs,masks)loss.backward()optimizer.step()train_lossloss.item()pbar.set_postfix({loss:f{loss.item():.4f}})avg_train_losstrain_loss/len(train_loader)# Validation Loopmodel.eval()val_loss0.0intersection0union0withtorch.no_grad():forimages,masksinval_loader:images,masksimages.to(DEVICE),masks.to(DEVICE)outputsmodel(images)losscombined_loss(outputs,masks)val_lossloss.item()predstorch.argmax(outputs,dim1)forpred,targetinzip(preds,masks):forclsinrange(NUM_CLASSES):p_cls(predcls)t_cls(targetcls)inter(p_clst_cls).sum().item()uni(p_cls|t_cls).sum().item()ifuni0:intersectioninter unionuni miouintersection/(union1e-6)avg_val_lossval_loss/len(val_loader)print(f\n✅ Epoch{epoch1}: Train Loss:{avg_train_loss:.4f}| Val Loss:{avg_val_loss:.4f}| mIoU:{miou:.4f})scheduler.step(avg_val_loss)# Save Best Modelifmioubest_iou:best_ioumiou torch.save(model.state_dict(),fcheckpoints/deeplabv3_plus_pipeline_best.pth)print(f New Best Model Saved! mIoU:{best_iou:.4f})print( Training Finished!) 3. 针对管道病害的特别建议裂缝 (Crack) 与 树根 (Root) 的细化这两类目标非常细标准的 DeepLabV3 可能会将其平滑掉。对策在 Loss 函数中可以给这两个类别增加权重Weighted CrossEntropy或者使用Boundary Loss来强化边缘学习。模型选择如果 DeepLabV3 效果不佳尝试UNet或HRNet它们在保留高频细节细线条方面表现更好。数据不平衡处理沉积 (Deposition) 通常占据大面积而裂缝面积很小。对策确保DiceLoss被启用因为它对类别不平衡不敏感。推理加速管道检测通常是视频流CCTV。为了实时性可以将 Encoder 替换为MobileNet_V2或EfficientNet-B0并使用 TensorRT 进行部署加速。后处理对于预测出的crack掩码可以使用形态学操作开运算去除噪点或使用骨架化算法提取裂缝的中心线以便计算裂缝长度。VOC 格式 Mask 文件无需额外转换即可开始训练高精度的管道病害分割模型。

相关文章:

管道病害数据集 管道缺陷分割数据集 DeepLabV3+ 训练代码 (针对管道病害优化)市政管道分割

市政管道-管道病害数据集VOC格式包括deposition/root/obstacle/deformation/crack五种病害600张图片,Labelme标注,标签Mask文件如下,无需额外处理,支持DeepLabV3、PSPnet、Unet、Unet、Segformer、HRnet、Segnet、DDRnet等模型 1…...

Python 异步编程最佳实践

Python 异步编程最佳实践 什么是异步编程? 异步编程是一种编程范式,允许程序同时处理多个任务,而不需要按顺序等待每个任务完成。 同步 vs 异步 同步代码: import timedef fetch_data():time.sleep(1) # 模拟耗时操作return "data"…...

智慧交通-YOLO + DeepSeek 疲劳驾驶智能检测系统 —— 多模态行为识别与风险预警平台 YOLO+DeepSeek+疲劳驾驶检测系统 Pytorch+SpringBoot+Flask+Vu

智慧交通-YOLO+DeepSeek+疲劳驾驶检测系统 PytorchSpringBootFlaskVue 11🚗 YOLO DeepSeek 疲劳驾驶智能检测系统 —— 多模态行为识别与风险预警平台一、项目概览表项目维度内容描述项目名称基于YOLODeepSeek的疲劳驾驶检测系统核心算法YOL…...

Flutter鸿蒙开发:跨平台技术栈融合下的机遇与挑战

摘要: 随着HarmonyOS(鸿蒙操作系统)的蓬勃发展,其独特的分布式理念和多设备协同能力为应用开发带来了新的机遇和挑战。Flutter,作为谷歌推出的高性能跨平台UI框架,因其高效的渲染引擎、丰富的组件库和良好的…...

OAuth授权陷阱与EDR防御规避机制的深度耦合研究

摘要 随着云原生架构的普及与端点检测与响应(EDR)技术的迭代,网络攻击者的战术重心正从传统的漏洞利用向身份滥用与防御规避的深度耦合转移。本文基于2026年3月披露的“OAuth陷阱”与“BlackSanta EDR杀手”等最新威胁情报,深入剖…...

【GitHub项目推荐--Aegis Authenticator:安全优先的开源双因素认证应用】⭐⭐⭐

Screenshots 简介 Aegis Authenticator​ 是由Beem Development开发并维护的开源项目,其核心使命是为Android用户提供一个免费、安全且功能完整的双因素认证(2FA)应用。在数字安全日益重要的今天,双因素认证已成为保护在线账户的…...

拼多多的便宜2元/斤的五常大米能买吗?——关于拼多多平台销售的大米是否建议“尽量少吃”,需要结合实际情况理性分析。以下是一些可能的原因和相关建议:

关于拼多多平台销售的大米是否建议“尽量少吃”,需要结合实际情况理性分析。以下是一些可能的原因和相关建议: ‌1. 低价商品的潜在风险‌ ‌品质参差‌:拼多多以低价商品著称,部分商家可能通过降低生产成本(如使用陈米、劣质米)来维持低价,这类大米口感、营养或安全性…...

【含文档+PPT+源码】基于JAVA的企业人事管理系统的设计与实现

项目介绍本课程演示的是一款 基于JAVA的企业人事管理系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项目…...

Musify10.0.0 | 纯净无广免费音乐软件, 畅听国内外歌曲,需要特殊网络

Musify是一款专注于提供无广告、无需订阅的音乐体验的应用。它支持在线歌曲搜索并提供智能建议,让用户发现新的音乐变得更加容易。此外,用户还可以享受离线听歌的功能,以及导入和导出数据,确保你的音乐库永远不会丢失。 优点包括…...

PiliPlus 2.0.1 | 基于Flutter开发的第三方哔哩,目前最好用的一款

PiliPlus是一款基于Flutter开发的第三方哔哩哔哩客户端,它为用户提供了无广告干扰的观影环境。该应用整合了B站的所有核心功能,包括直播、番剧、影视和分区等内容,并支持原画质播放。最新版增加了记笔记功能,优化了字幕加载速度&a…...

多模态语义评估引擎算法优化:注意力机制改进实践

多模态语义评估引擎算法优化:注意力机制改进实践 1. 引言 多模态语义评估引擎是当前AI领域的热门研究方向,它能够同时处理文本、图像、音频等多种模态的信息,并准确评估它们之间的语义相关性。在实际应用中,这种技术可以用于智能…...

Audio Pixel Studio保姆级教程:音频元数据(ID3)自动写入与批量打标功能

Audio Pixel Studio保姆级教程:音频元数据(ID3)自动写入与批量打标功能 1. 引言:为什么你的音频文件需要“身份证”? 你有没有遇到过这样的烦恼?电脑里下载了一堆音频文件,有的是音乐&#xf…...

GPEN图像增强参数优化:科哥二次开发版不同场景下的最佳设置

GPEN图像增强参数优化:科哥二次开发版不同场景下的最佳设置 1. 引言:为什么需要参数优化? 如果你用过科哥二次开发的GPEN图像增强工具,可能会发现一个有趣的现象:同一张照片,用不同的参数处理&#xff0c…...

零基础部署Qwen2.5-7B-Instruct:5分钟搭建本地智能对话助手

零基础部署Qwen2.5-7B-Instruct:5分钟搭建本地智能对话助手 想体验专业级大模型的强大能力,但又担心云端服务的隐私问题和高昂成本?今天,我们就来手把手教你,如何在5分钟内,零基础搭建一个完全运行在你本地…...

通义千问3-Reranker-0.6B入门必看:轻量模型在移动端边缘部署探索

通义千问3-Reranker-0.6B入门必看:轻量模型在移动端边缘部署探索 1. 模型介绍与核心价值 Qwen3-Reranker-0.6B 是阿里云通义千问团队专门为文本检索和排序任务设计的新一代重排序模型。这个模型的核心使命很简单:帮你从一堆文本中找出最相关的内容。 …...

Qwen-Image-2512与LangGraph结合:复杂场景图像生成系统

Qwen-Image-2512与LangGraph结合:复杂场景图像生成系统 1. 引言 想象一下这样的场景:你需要生成一张"未来城市中,人们骑着飞行自行车穿梭在透明管道里,远处有悬浮的咖啡馆,天空中有彩虹色的人造云朵"的图像…...

网络安全视角下的Fish-Speech-1.5语音API防护策略

网络安全视角下的Fish-Speech-1.5语音API防护策略 想象一下,你刚部署好一个功能强大的语音合成API,它生成的语音自然流畅,客户赞不绝口。突然,你的服务器开始疯狂报警,CPU使用率飙升到100%,API响应时间从毫…...

GLM-4-9B-Chat-1M精彩案例:代码仓库错误定位效果展示

GLM-4-9B-Chat-1M精彩案例:代码仓库错误定位效果展示 1. 引言:当AI遇见代码调试 你有没有遇到过这样的情况:深夜加班调试代码,面对满屏的错误日志和复杂的调用栈,却始终找不到问题的根源?或者接手一个庞大…...

造相-Z-Image文生图引擎:本地部署、免费使用、效果惊艳

造相-Z-Image文生图引擎:本地部署、免费使用、效果惊艳 想体验一下只用几秒钟,就能把脑海里的画面变成高清大图的感觉吗?今天要介绍的“造相-Z-Image文生图引擎”,就是这样一个能让你在本地电脑上,免费、快速、高质量…...

Stable Yogi Leather-Dress-Collection 插件生态介绍:提升设计效率的必备扩展

Stable Yogi Leather-Dress-Collection 插件生态介绍:提升设计效率的必备扩展 你是不是也遇到过这样的情况?用Stable Yogi Leather-Dress-Collection生成皮革服装设计图时,总觉得差点意思——要么分辨率不够高,放大看细节就糊了&…...

Harmonyos应用实例92:分数的意义演示器

应用实例二:分数的意义演示器 知识点:理解单位“1”的含义,认识分数单位,理解分数与除法的关系。 功能:学生可以通过拖动滑块将一个单位圆或单位线段平均分成任意份数(分母),并选择其中几份(分子),应用动态生成对应的分数图形,并展示分数的读写、分数单位以及分数…...

Harmonyos应用实例91:3D视角切换器(观察物体)

应用实例一:3D视角切换器(观察物体) 知识点:能辨认从不同方向(前面、上面、左面)观察到的几何体的形状。 功能:学生可以通过手指滑动旋转一个由小正方体搭建的3D模型,并点击按钮切换到特定视角(前面、上面、左面),应用会高亮显示该视角下的平面图形。这能有效培养学…...

Harmonyos应用实例90. 综合实践:旅游方案设计师

10. 综合实践:旅游方案设计师 知识点:综合运用小数计算、统计、方案选择等知识解决实际问题。 功能:设定一个旅游场景(预算、天数、人数)。学生需要选择交通方式、住宿、景点门票等,系统自动计算总费用,并与预算对比。提供方案对比功能,培养学生规划和决策能力。 //…...

跨境电商ERP的核心概念的庖丁解牛

跨境电商 ERP 的核心概念,绝非简单的“进销存”软件,而是一套连接全球市场、管理复杂供应链、核算多维利润、控制合规风险的数字化管理体系。 它处于**卖家(运营/采购/财务)与平台(Amazon/Shopee/eBay)及服…...

PHP的SAAS版跨境电商ERP实战的庖丁解牛

PHP 构建 SaaS 版跨境电商 ERP 是软件工程与国际贸易规则的深度结合。 这不仅仅是写代码,而是构建一个多租户、多平台、多币种、多时区的复杂分布式系统。它要求数据绝对一致(库存、资金),接口高度稳定(平台 API 限制&…...

园艺杂枝粉碎机三维图

园艺杂枝粉碎机三维图作为机械设计的可视化表达,其核心作用在于直观呈现设备结构与功能逻辑。通过三维建模技术,可将进料口、粉碎腔、传动系统等关键模块进行空间定位,明确各部件的装配关系与运动轨迹。这种可视化表达不仅帮助设计者验证机械…...

Qwen3系统数据库设计:使用MySQL存储任务与字幕数据

Qwen3系统数据库设计:使用MySQL存储任务与字幕数据 今天咱们来聊聊怎么给一个智能字幕对齐系统——比如叫它Qwen3吧——设计一个靠谱的后端数据库。你可能已经用上了各种AI模型来处理视频和字幕,但生成的结果、处理的任务状态,这些数据总得有…...

Qwen3.5-35B-A3B-AWQ-4bit惊艳效果:电路图元件识别+功能逻辑中文解析

Qwen3.5-35B-A3B-AWQ-4bit惊艳效果:电路图元件识别功能逻辑中文解析 1. 模型能力展示:从电路图到中文解析 Qwen3.5-35B-A3B-AWQ-4bit作为一款面向视觉多模态理解的量化模型,在电路图分析领域展现出令人惊艳的能力。这个模型不仅能准确识别电…...

AIGlasses_for_navigation效果实测:复杂迷宫环境下的快速探索与地图构建

AIGlasses_for_navigation效果实测:复杂迷宫环境下的快速探索与地图构建 今天咱们不聊枯燥的理论,直接来看一个硬核的实战挑战。想象一下,你戴上一副特殊的“眼镜”,走进一个完全未知的复杂迷宫,你的任务是在最短时间…...

使用KART-RERANK为AE视频片段自动生成标签与智能检索方案

使用KART-RERANK为AE视频片段自动生成标签与智能检索方案 你是不是也遇到过这样的烦恼?电脑里存了成百上千个After Effects(AE)视频模板和素材片段,每次想找个“科技感蓝色光效开场”,都得在文件夹里大海捞针&#xf…...