DeepLabV3+训练Cityscapes数据集实例

本文详细介绍了如何下载并准备Cityscapes数据集,使用DeepLabV3+模型进行语义分割任务的训练、验证及结果可视化的过程。包括数据集下载、脚本和模型初始化、数据集转换、模型训练、验证和结果展示等关键步骤。

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

1.数据集、脚本和模型下载
1.1下载Cityscapes
使用 Cityscapes官方数据:https://www.cityscapes-dataset.com/
Cityscapes数据集包括leftImg8bit(11GB)和对应的标注集gtFine(241MB)。

1.2下载脚本文件
在https://github.com/mcordts/cityscapesScripts下载cityscapesScripts脚本,用于处理Cityscapes 数据集。

1.3下载初始权重文件
http://download.tensorflow.org/models/deeplabv3_cityscapes_train_2018_02_06.tar.gz
更多预训练权重请参见:
https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md

1.4构建目录
A.在Ubuntu系统的主目录/home/XX/下建立一个新的目录data.
B.将cityscapes拷贝到data目录下
C.将脚本所在目录cityscapesScripts拷贝到data目录下
D.将预训练权重所在目录deeplabv3_cityscapes_train拷贝到data目录下

2.生成数据集的tfrecord
2.1修改shell转换脚本文件
    在/home/lw/models/research/deeplab/datasets目录中找到convert_cityscapes.sh,打开并修改数据集和脚本所在目录。(体现了第1.4构建目录的重要性)

2.2修改python脚本文件
    在/home/lw/data/cityscapes/cityscapesscripts/preparation中找到createTrainldLabelImgs.py文件,并添加系统变量,如下图矩形框中代码。否则,下面两行代码所引包找不到目录所在位置。

2.3执行脚本
    在终端跳到cd  /home/lw/models/research/deeplab/datasets,在该目录所在位置执行shell文件:
    sudo sh convert_cityscapes.sh
    则,会在/home/lw/data/cityscapes/目录成生成tfrecord文件

2.4修改成tfrecord文件
    由于所下载DeepLabV3+是版本为master版本,在执行时所用上述文件名tfrecord文件则会报错“段错误”,因此,需要将文件名修改为fine类型
    可以使用“ sudo mv 原文名 新文件”,修改为如下格式的文件

3.训练模型

python deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=2000 \
    --train_split="train_fine" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --train_crop_size="321,321" \
    --train_batch_size=4 \
    --fine_tune_batch_norm=false \
    --dataset="cityscapes" \
    --tf_initial_checkpoint='/home/lw/data/cityscapes/deeplabv3_cityscapes_train/model.ckpt' \
    --train_logdir='/home/lw/data/cityscapes/train' \
    --dataset_dir='/home/lw/data/cityscapes/tfrecord'

在终端将当前目录切换至train_logdir='/home/lw/data/cityscapes/train'的上一级目录,执行tensorboard,可以通过网页监控训练情况。

lw@lw:~/data/cityscapes$ tensorboard --logdir=train

会输出一网址,在浏览器中输出网址,则可以进行实时监控

 

4.验证模型效果

python deeplab/eval.py \
    --logtostderr \
    --eval_split="val_fine" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --eval_crop_size=1025,2049 \
    --dataset="cityscapes" \
    --checkpoint_dir='/home/lw/data/cityscapes/train' \
    --eval_logdir='/home/lw/data/cityscapes/eval' \
    --dataset_dir='/home/lw/data/cityscapes/tfrecord'

5.查看分割结果

python deeplab/vis.py \
    --logtostderr \
    --vis_split="val_fine" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --vis_crop_size=1025,2049 \
    --dataset="cityscapes" \
    --colormap_type="cityscapes" \
    --checkpoint_dir='/home/lw/data/cityscapes/train' \
    --vis_logdir='/home/lw/data/cityscapes/vis' \
	 --dataset_dir='/home/lw/data/cityscapes/tfrecord'

6.出现的一些错误:
执行官方给出的训练命令,会出现data split name train not recognized错误。
这是因为:在代码中已经没有“train”这个选项了,而是train_fine等等,这个问题在执行val和vis的时候都会遇到,将各自加后缀train_fine、val_fine就可以了。但是会发现这里改成train_fine后程序会意外停止。

 

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值