deeplab v3+ 代码 复现 简单 官方 voc2012

本文详细介绍如何使用TensorFlow的DeepLab模型进行图像语义分割任务的训练与测试,包括安装slim工具包、准备VOCdevkit数据集、下载预训练模型、修改local_test.sh配置及自动下载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了使local_test.sh顺利运行。

代码来源于官方,就是论文作者:

https://github.com/tensorflow/models/tree/master/research/deeplab

那肯定是需要先下载代码的。

1.安装slim工具包。很简单

只需要两步,下载,安装。必须安装不然import net 会报错

https://blog.csdn.net/u013249853/article/details/100089276

2.手工准备好数据库文件,或者自动下载。

总共包含两个文件,一个是数据,voc,另一个是checkpoint。下面两种准备方式,请在情况的允许下使用自动方式。

 

手工准备

需要在deeplab文件夹下准备这两个文件第一个是VOCdevkit,里面是官方的trainval包解压

"VOCtrainval_11-May-2012.tar"解压

第二个是从https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md下载的

http://download.tensorflow.org/models/deeplabv3_pascal_train_aug_2018_01_04.tar.gz点击这个应该就行

或者

xception65_coco_voc_trainaug16 
8
[1.0] 
[0.5:0.25:1.75]
No 
Yes
54.17B 
3055.35B
0.7 
223.2
82.20% (val) 
83.58% (val)
439MB

放到下图所示位置

local_test.py中:

sh download_and_convert_voc2012.sh

负责下载voc数据

wget -nd -c "${TF_INIT_ROOT}/${TF_INIT_CKPT}"

负责下载模型压缩包

所以你需要将上面两行注释掉要不他还是会下载。

手工主要是考虑到网速问题。

这里必须提一下,如果提示你checkpoint有问题,建议删除checkpoint文件也就是这里的init_model包,并且执行自动下载。

 

自动下载

直接运行local_test.py即可。

 

之后就是输出train.py结果:

另外如果不训练,那么将iteration 也就是local_test.sh里面的

NUM_ITERATIONS=10

改成1000次什么的

保存的variable值将会在:.../deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train

### 如何复现 DeepLabV3+ 模型 #### 环境准备 为了成功复现 DeepLabV3+ 模型,在 Ubuntu 18.04 中使用 PyTorch 进行开发前需完成一系列环境配置工作[^1]。这包括安装必要的依赖库以及设置好 Python 的虚拟环境。 对于依赖项而言,通常涉及 CUDA、cuDNN 和其他机器学习框架的支持文件;而 Python 方面则建议利用 `conda` 或者 `venv` 来管理项目所需的包版本控制。具体操作可以参照官方文档或其他社区资源来获取最新指导说明。 #### 数据集处理 Cityscapes 是一个广泛用于语义分割任务的数据集之一。当着手于该数据集上的实验时,应当遵循特定流程来进行预处理,比如图像尺寸调整、标签编码转换等步骤以适应网络输入需求。此外还需要注意划分训练集与验证集的比例分配情况,确保模型评估的有效性和可靠性。 #### 构建模型架构 DeepLabV3+ 结构由两大部分组成——编码器(Encoder)和解码器(Decoder),其中前者基于改进后的 Xception 或 ResNet 主干网提取特征图谱,后者负责恢复空间分辨率并融合多尺度上下文信息实现精准像素级分类预测[^2]。 以下是简化版的 PyTorch 实现代码片段: ```python import torch.nn as nn from torchvision.models.segmentation import deeplabv3_resnet101 class CustomDeepLab(nn.Module): def __init__(self, num_classes=19): super(CustomDeepLab, self).__init__() self.deeplab = deeplabv3_resnet101(pretrained=True) self.deeplab.classifier[-1] = nn.Conv2d( in_channels=self.deeplab.classifier[-1].in_channels, out_channels=num_classes, kernel_size=(1, 1), stride=(1, 1)) def forward(self, x): return self.deeplab(x)['out'] ``` 这段代码展示了如何自定义最后一层卷积核数量以便匹配 Cityscapes 数据集中类别数目(默认为19类),同时也加载了预训练权重加快收敛速度。 #### 训练过程 设定合适的超参数组合是至关重要的环节,例如批次大小(batch size)、初始学习率(initial learning rate)及其衰减策略(schedule)等因素都会影响最终性能表现。同时考虑到 GPU 显存限制条件合理规划每轮迭代所使用的样本量也是不可忽视的一环。 另外值得注意的是损失函数的选择同样重要,交叉熵误差(cross entropy loss)常被应用于此类场景下作为优化目标函数的一部分。 #### 测试与推理 经过充分训练之后就可以进入测试阶段了。此时应采用独立测试集合对整个系统的泛化能力进行全面检验,并记录各项指标得分如 mIoU(mean Intersection over Union)等评价标准用来衡量算法优劣程度。 最后便是实际应用中的在线推断部分,即给定任意一张待分析图片后能够快速返回其对应的逐像素标注结果。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值