源代码参考地址: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
运行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的提示:
2.运行eval.py,输出MIOU的值
3.运行vis.py,查看可视化结果