2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > deeplabV3+布置笔记——逢山开路 遇水搭桥篇

deeplabV3+布置笔记——逢山开路 遇水搭桥篇

时间:2022-08-01 22:00:09

相关推荐

deeplabV3+布置笔记——逢山开路 遇水搭桥篇

参考博客:DeepLab系列之V3+

下面详细描述我配置环境的步骤和踩过的坑

目录

1-下载源代码2-运行预测Demo3-准备自己训练模型1-按照readme里面检查环境2-使用VOC数据集训练模型2.1下载VOC数据集2.2提取标记的轮廓数据2.3数据转换2.4运行train.py2.5运行eval.py2.6运行vis.py2.7运行export_model.py

1-下载源代码

第一步下载源码:github

首先阅读根目录的readMe,如下截图:

2-运行预测Demo

下载代码首先跑demo,看看有没有问题,果然没有那么顺利,由于jupyter不便于调试,所以将代码复制到pycharm中进行调试问题

**问题1:**demo里用的是网络图片,我想用本地图片测试,这部分代码改了;

**问题2:**每次运行的时候总是要下载模型文件,占用时间。我将其4个模型都下载下来放到本地,直接加载模型路径就行了。

**问题3:**报错了一个cuda的问题,Unknown: Failed to get convolution algorithm. This is probably because cuDNN

解决方案:Unknown: Failed to get convolution algorithm. This is probably because cuDNN

3-准备自己训练模型

1-按照readme里面检查环境

外部运行

python model_test.py

**问题1:**提示我的电脑nets库没有,查了下应该是个依赖库。从github上下载把research下载下来放到项目目录里面,切换到research目录运行cmd,依次运行下面两行代码

python setup.py buildpython setup.py install

然后再在pycharm里把“research/slim”通过setting里面设置为源目录,这个问题就解决了。

**问题2:**提示No module named ‘tf_slim‘

简单粗暴pip install 就搞定了,如下:

pip install tf_slim

再次运行测试程序(python model_test.py),等待了一会儿提示运行成功,如下图

2-使用VOC数据集训练模型

他是用下面的脚本进行自动安装的,由于我的是windows10系统,所以打开看看他里面代码执行原理,手工执行。

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

2.1下载VOC数据集

他脚本里面也有下载数据集,不过相当慢所以我是提前下载了这个数据集,然后放到“./datasets/pascal_voc_seg/VOC”目录

2.2提取标记的轮廓数据

切换到“D:\Project\pythonDemo\Seg\deeplab\datasets”目录,注意sh里面的变量定义,替换成你电脑的路径。命令行:

#Removing the color map in ground truth annotations…

python D:\Project\pythonDemo\Seg\deeplab\datasets\remove_gt_colormap.py --original_gt_folder="./pascal_voc_seg/VOC/SegmentationClass" --output_dir="./pascal_voc_seg/VOC/SegmentationClassRaw"

没有任何成功提示程序运行完了,然后检查输出路径VOC/SegmentationClassRaw确实存在轮廓数据,如下图:

2.3数据转换

切换到“D:\Project\pythonDemo\Seg\deeplab\datasets”目录,注意sh里面的变量定义,替换成你电脑的路径(这里要手工建立文件夹tfrecord),命令行:

#Converting PASCAL VOC dataset…

python D:\Project\pythonDemo\Seg\deeplab\datasets\build_voc_data.py --image_folder="./pascal_voc_seg/VOC/JPEGImages" --semantic_segmentation_folder="./pascal_voc_seg/VOC/SegmentationClassRaw" --list_folder="./pascal_voc_seg/VOC/ImageSets/Segmentation" --image_format="jpg" --output_dir="./pascal_voc_seg/tfrecord"

运行成功界面:

检查输出文件夹:pascal_voc_seg/tfrecord,如下图:

2.4运行train.py

按照local_test.sh提示的,先训练十个迭代(Train 10 iterations.)

先按照本地的实际路径把对应的变量参数设置好

变量整理:===============================================CURRENT_DIR="D:/Project/pythonDemo/Seg"WORK_DIR="D:/Project/pythonDemo/Seg/deeplab"DATASET_DIR="datasets"# Set up the working directories.PASCAL_FOLDER="pascal_voc_seg"EXP_FOLDER="exp/train_on_trainval_set"INIT_FOLDER="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/init_models"TRAIN_LOGDIR="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train"EVAL_LOGDIR="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/eval"VIS_LOGDIR="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/vis"EXPORT_DIR="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/export"TF_INIT_ROOT="/models"TF_INIT_CKPT="deeplabv3_pascal_train_aug__01_04.tar.gz"PASCAL_DATASET="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/tfrecord"NUM_ITERATIONS=10#变量整理完了=======================================================

开始将外部参数对应的填好,放到pycharm参数设置里面

--logtostderr --training_number_of_steps=10 --train_split="trainval" --model_variant="xception_65" --atrous_rates=6 --atrous_rates=12 --atrous_rates=18 --output_stride=16 --decoder_output_stride=4 --train_crop_size="513,513" --train_batch_size=4 --fine_tune_batch_norm=true --tf_initial_checkpoint="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/init_models/deeplabv3_pascal_train_aug/model.ckpt" --train_logdir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train" --dataset_dir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/tfrecord"

第一次运行出错,需要加上下面两行代码可以正确输出。

import osos.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:1'

程序运行结果如下图:

检查输出文件夹D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train,如下图:

这是一个怪异的小插曲,这个图片永久保存,留着以后的某一天或许能解开答案。我本来截取的是本地文件夹“D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train”,粘贴上去怎么是下面这个图,本来没有在意,准备删除的时候细思极恐,故保留在这篇技术博客中间。我电脑上的所有软件或网页上从没有见过这个图片,我截图后粘贴进去就是这个图,电脑数据串行了还是平行时空混乱了???这个水印也是我的博客。zph .12.30

这是我的整个电脑屏幕截图,搞了两个显示器分屏显示的,一边调试一边写博客。

好了,上面小插曲绝对真实,现在还是个迷,或许三维空间的我们有很多东西理解不了吧,言归正传,继续向下运行eval.py文件

2.5运行eval.py

按照local_test.sh提示的

# Run evaluation. This performs eval over the full val split (1449 images) and# will take a while.# Using the provided checkpoint, one should expect mIOU=82.20%.

先按照本地的实际路径把对应的变量参数进行替换,外部传参改好后如下

--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,513" --checkpoint_dir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train" --eval_logdir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/eval" --dataset_dir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/tfrecord" --max_number_of_evaluations=1

第一次运行出错,需要加上下面两行代码可以正确输出。

import osos.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:1'

下面这个图是我运行了两次的(一直发现GPU没有用上,进行了一次调试,运行一次时间太长,半个小时到一个小时,等后面再慢慢解决吧),第一次结果0.82左右与作者设想的差不多,第二次运行0.89了。

2.6运行vis.py

按照local_test.sh提示的将结果可视化

#Visualize the results.

整理好命令行如下,放进pycharm中外部传参进去运行

--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,513" --checkpoint_dir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train" --vis_logdir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/vis" --dataset_dir="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/tfrecord" --max_number_of_iterations=1

第一次运行出错,需要加上下面两行代码可以正确输出。

import osos.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:1'

午睡去了,运行自己停止,应该也有半个小时到一个小时左右

2.7运行export_model.py

按照local_test.sh提示应该是要导出模型

# Export the trained checkpoint.

整理好输入变量路径

CKPT_PATH="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train/model.ckpt-10"EXPORT_PATH="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/export/frozen_inference_graph.pb"

整理好传参命令:

--logtostderr --checkpoint_path="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train/model.ckpt-10" --export_path="D:/Project/pythonDemo/Seg/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/export/frozen_inference_graph.pb" --model_variant="xception_65" --atrous_rates=6 --atrous_rates=12 --atrous_rates=18 --output_stride=16 --decoder_output_stride=4 --num_classes=21 --crop_size=513 --crop_size=513 --inference_scales=1.0

运行成功,如下图:

检查导出模型文件夹,成功生成模型文件

最后还有下面这段话:

# Run inference with the exported checkpoint.# Please refer to the provided deeplab_demo.ipynb for an example.

说的是生成的模型是pb格式的模型文件,怎么使用可以参考“deeplab_demo.ipynb”进行单独使用。

回过头来看deeplab_demo.ipynb代码,是通过下面这段代码加载的:

至此,这篇布置笔记差不多了,贯穿了数据集准备、模型训练、模型导出、模型使用。如果要用自己标注的数据集进行训练起始远远还不够,一些参数的设置,如何调参问题,出现异常怎么解决,后面需要花很多时间来一一解决。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。