deeplabv3+开源代码运行

源代码参考地址:https://github.com/tensorflow/models/tree/master/research/deeplab

测试安装参考地址:https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md

测试与安装

将models文件夹从github上clone到 anaconda3/lib/python3.6/site-packages/tensorflow

cd anaconda3/lib/python3.6/site-packages/tensorflow
git clone git://github.com/tensorflow/models

测试是否成功安装好Tensorflow DeepLab

cd tensorflow/models/research/
python deeplab/model_test.py

 但是会出现报错:ModuleNotFoundError: No module named 'nets'

解决办法:修改配置文件,在配置文件中加入

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`\slim

重新测试就显示成功

继续进入deeplab文件夹中,运行 PASCAL VOC 2012数据集上的代码,进行测试

cd deeplab
sh local_test.sh

在PASCAL VOC 2012数据及上运行Deeplab

运行Deeplab参考地址:https://github.com/tensorflow/models/tree/master/research/deeplab

下载数据集,将数据集转换为TFRecord

在datasets文件夹下有script脚本,来下载转换数据集

cd datasets
sh download_and_convert_voc2012.sh

解压报错:

 删除pascal_voc_seg文件夹后,重新执行sh命令

训练和评估的推荐路径

+ datasets
  + pascal_voc_seg
    + VOCdevkit
      + VOC2012
        + JPEGImages
        + SegmentationClass
    + tfrecord
    + exp
      + train_on_train_set
        + train
        + eval
        + vis

在数据集PASCAL VOC 2012上训练Deeplab时, train/eval/vis 结果存在文件夹train_on_train_set中。 

运行train/eval/vis

1.运行train.py

使用xception_65进行本地训练:

报错:ModuleNotFoundError: No module named 'nets'

解决办法:

将nets的存储路径加入配置文件中,首先找到nets的存储路径

vi ~/.bashrc

#加入
export PYTHONPATH=$PYTHONPATH:"/home/bxx-mct/anaconda3/lib/python3.6/site-packages/tensorflow/models/research/slim"

esc
:wq

#退出后
source ~/.bashrc
#保存
# From tensorflow/models/research/
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" \
    --eval_logdir='./train_log'\  #保存训练的中间结果的路径,该文件夹为手动创建,如果之前的训练结果不要想重新训练,直接清空该文件夹
    --dataset_dir='./deeplab/datasets/pascal_voc_seg/tfrecord'  #第二步生成的tfrecord的路径

${PATH_TO_INITIAL_CHECKPOINT}是初始checkpoint,通常是ImageNet 预训练checkpoint,${PATH_TO_TRAIN_DIR} 是训练checkpoints和写进events的路径,${PATH_TO_DATASET} 是PASCAL VOC 2012数据集所在的路径。

开始训练

对 {train,eval,vis}.py的提示:

  1.  为了重现我们的结果,需要使用large batch size (> 12),并设置fine_tune_batch_norm = True。在这里,我们只是在训练期间使用small batch size来进行演示。如果用户的GPU内存有限,请从我们提供的已训练了批处理规范参数的checkpoints进行微调,并使用fine_tune_batch_norm = False来使用较小的学习率。
  2. 如果output_stride=8,将atrous_rates 从 [6, 12, 18] 变为 [12, 24, 36]。
  3. 如果不想使用decoder,可以跳过decoder_output_stride

2.运行eval.py,输出MIOU的值

3.运行vis.py,查看可视化结果

猜你喜欢

转载自blog.csdn.net/weixin_42702666/article/details/88061590