利用deeplab v3+开源代码训练PASCAL VOC 2012数据集

deeplab v3+环境配置好之后则可以进行模型的训练
1、准备PASCAL VOC 2012数据集:可以在ubantu命令行上运行

#From the tensorflow/models/research/deeplab/datasets directory.
  sh download_and_convert_voc2012.sh

下载并把数据集转换成 TFRecord格式

我已有VOC 2012数据集压缩包,所以省了下载步骤。因此手动在\research\deeplab\datasets目录下创建一个名为pascal_voc_seg的文件夹,把压缩包放进该文件夹里,再运行 sh download_and_convert_voc2012.sh(代码无需改动),运行后会多了下图红色方框里的文件(在虚拟机ubantu 16.04运行的程序,一下截图为虚拟机共享文件夹里的截图):
在这里插入图片描述

在这里插入图片描述

运行效果图
至此,可以运行 train.py开始训练模型

2、train.py的运行
github示例链接:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/pascal.md

权重下载链接:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md
运行命令:

# From tensorflow/models/research/
python deeplab/train.py \
    --logtostderr \
    --training_number_of_steps=30000 \
    --train_split="train" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --train_crop_size=256 \          # 当主机内存不够大时会出现内存不够的错误,因此可根据情况适当减小数值
    --train_crop_size=256 \
    --train_batch_size=1 \
    --dataset="pascal_voc_seg" \
    --tf_initial_checkpoint='./deeplabv3_pascal_trainval/model.ckpt' \    # 加载权重(路径用单引号引起来)
    --train_logdir='./PATH_TO_TRAIN_DIR' \  # 保存训练的中间结果的路径,该文件夹为手动创建,如果之前的训练结果不要想重新训练,直接清空该文件夹
    --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord'     # 第二步生成的tfrecord的路径

注意点:(1)上述命令中=后面不能有空格

踩过的坑:PC内存太小时会出现以下错误,我把 --train_crop_size=513 改为256可以正常训练:
在这里插入图片描述

在这里插入图片描述

至此模型训练完成

2、运行eval.py,输出为MIOU值

运行命令:

python deeplab/eval.py \
    --logtostderr \
    --eval_split="val" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --eval_crop_size=513 \
    --eval_crop_size=513 \
    --dataset="pascal_voc_seg" \
    --checkpoint_dir='./PATH_TO_TRAIN_DIR' \      #上述训练中间结果保存路径
    --eval_logdir='./result_test_output' \  # 结果输出路径,该文件夹需手动创建
    --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord'  # 验证集tfrecord文件所在路径

踩过的坑:把–eval_crop_size=513 改为128则会出错,原因不明,错误如下图所示,不改则不会出错。
在这里插入图片描述

运行成功截图:
在这里插入图片描述

3、运行vis.py,查看结果

运行命令:

# From tensorflow/models/research/
python deeplab/vis.py \
    --logtostderr \
    --vis_split="val" \
    --model_variant="xception_65" \
    --atrous_rates=6 \
    --atrous_rates=12 \
    --atrous_rates=18 \
    --output_stride=16 \
    --decoder_output_stride=4 \
    --vis_crop_size=513 \
    --vis_crop_size=513 \
    --dataset="pascal_voc_seg" \
    --checkpoint_dir='./PATH_TO_TRAIN_DIR' \       #上述训练中间结果保存路径
    --vis_logdir='./vis_output' \      # 可视化预测结果保存路径,手动创建
    --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord'    # 生成的tfrecord数据集所在路径

运行效果图:
在这里插入图片描述

图片处理结果:
原图:
在这里插入图片描述

分割图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lfs666666/article/details/83042119