DeeplabV3+训练数据集 流程记录(附带自己下载数据集流程)

训练DeepLabv3+学习记录

最近需要使用语义分割模型进行岩壁裂隙分割,了解到DeepLabv3+可实现该任务,胡jh教师学生黄pl师兄、陈jy教授等业界内有大量使用该算法,且算法较新,效果较好,硬件资源需求中等,可以跑一遍试试。
使用项目为Bubbliiiing所创建,有b站视频教程、博客做参考。

1.环境配置

1.1安装Anaconda

https://blog.csdn.net/Sayega/article/details/143035515

1.2安装CUDA、cuDNN

需要安装对应版本
参考上述地址

1.3下载项目

https://github.com/bubbliiiing/deeplabv3-plus-pytorch

1.4安装Pycharm

1.5安装Pytorch

打开Anaconda Prompt,新建虚拟环境,参考上述地址,安装对应版本

1.6在Pycharm打开项目

打开项目,选择刚才在conda创建的虚拟环境

至此,我们环境配置完成。

2.数据准备

2.1准备数据集

2.1.1可以自己使用Lableme行制作数据集

打开虚拟环境,安装。
https://blog.csdn.net/hhb3329/article/details/127710655spm=1001.2014.3001.5502
打开Lableme,打开一个文件夹,文件夹中全是图片:
picturedir/
├──001.jpg
├──002.jpg
├──…
├──800.jpg
标注。
保存文件得到:
picturedir
├──001.jpg
├──001.json
├──002.jpg
├──002.json
├──…
├──800.json
├──800.jpg

2.1.2也可以自己下载数据集

从kaggle下载数据集
https://www.kaggle.com

### 使用Deeplabv3+进行公路裂纹检测 #### 方法概述 为了利用DeepLabv3+实现公路裂纹检测,可以采用类似于墙体裂缝检测的工作流程。该方法涉及构建并训练一个能够区分道路表面正常区域与裂纹区域的卷积神经网络模型。 #### 实现步骤详解 ##### 数据准备阶段 收集大量带有标注的道路图像作为训练集,其中每张图片需附带对应的二值掩码图——白色代表裂纹位置,黑色表示背景部分[^1]。 ##### 模型搭建过程 选用预训练过的ResNet或其他适合迁移学习的基础骨干网结构初始化DeepLabV3+架构;随后调整最后一层分类器以适应特定任务需求(即两类:裂纹与否)。此操作可通过修改官方提供的PyTorch版本DeepLab V3 Plus源代码完成。 ##### 训练配置设定 设置合适的超参数组合用于优化权重更新策略,比如选择Adam优化器配合适当的学习率衰减机制,并定义损失函数为交叉熵误差或Dice系数等度量方式来评估预测精度。 ##### 测试验证环节 当模型收敛稳定后,在独立测试集中检验其泛化能力,记录各项性能指标如准确率、召回率以及F1得分等统计数值以便后续改进方案制定。 #### Python脚本示例 下面给出一段简单的Python程序片段展示如何加载已保存的最佳模型并对单幅输入图像执行推断: ```python from PIL import Image import torch from torchvision.transforms.functional import to_tensor, to_pil_image def detect_road_crack(image_path): device = 'cuda' if torch.cuda.is_available() else 'cpu' model = torch.load('best_model.pth', map_location=device).eval() img = Image.open(image_path).convert('RGB') input_tensor = to_tensor(img).unsqueeze(0).to(device) with torch.no_grad(): output = model(input_tensor)[0] mask = (output.sigmoid().squeeze().cpu().numpy()>0.5)*255 result_img = to_pil_image(torch.from_numpy(mask.astype('uint8'))) return result_img ``` 对于批量处理多张待测样本,则可参照如下模板编写相应功能模块: ```python import os from tqdm import tqdm def batch_process_images(src_folder='input/', dst_folder='output/'): if not os.path.exists(dst_folder): os.mkdir(dst_folder) files = [f for f in os.listdir(src_folder) if f.endswith('.jpg') or f.endswith('.png')] for file_name in tqdm(files): src_file = os.path.join(src_folder, file_name) res_img = detect_road_crack(src_file) res_img.save(os.path.join(dst_folder, file_name)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值