DeepLabV3+训练Cityscapes数据集实例

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

DeepLabV3+训练Cityscapes数据集实例_第1张图片

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

DeepLabV3+训练Cityscapes数据集实例_第2张图片

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

DeepLabV3+训练Cityscapes数据集实例_第3张图片

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构建目录的重要性)

DeepLabV3+训练Cityscapes数据集实例_第4张图片

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

DeepLabV3+训练Cityscapes数据集实例_第5张图片

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

DeepLabV3+训练Cityscapes数据集实例_第6张图片

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

DeepLabV3+训练Cityscapes数据集实例_第7张图片

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'

DeepLabV3+训练Cityscapes数据集实例_第8张图片

DeepLabV3+训练Cityscapes数据集实例_第9张图片

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

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

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

DeepLabV3+训练Cityscapes数据集实例_第10张图片

 

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'

DeepLabV3+训练Cityscapes数据集实例_第11张图片

DeepLabV3+训练Cityscapes数据集实例_第12张图片

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'

DeepLabV3+训练Cityscapes数据集实例_第13张图片

DeepLabV3+训练Cityscapes数据集实例_第14张图片

DeepLabV3+训练Cityscapes数据集实例_第15张图片

DeepLabV3+训练Cityscapes数据集实例_第16张图片DeepLabV3+训练Cityscapes数据集实例_第17张图片

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

DeepLabV3+训练Cityscapes数据集实例_第18张图片

 

 

 

你可能感兴趣的:(深度学习,自动驾驶,tensorflow)