参考博客:DeepLab系列之V3+
下面详细描述我配置环境的步骤和踩过的坑

目录

  • 1-下载源代码
  • 2-运行预测Demo
  • 3-准备自己训练模型
    • 1-按照readme里面检查环境
    • 2-使用VOC2012数据集训练模型
      • 2.1下载VOC2012数据集
      • 2.2提取标记的轮廓数据
      • 2.3数据转换
      • 2.4运行train.py
      • 2.5运行eval.py
      • 2.6运行vis.py
      • 2.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 build
python setup.py install

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

**问题2:**提示No module named ‘tf_slim‘
简单粗暴pip install 就搞定了,如下:

pip install tf_slim

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

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

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

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

2.1下载VOC2012数据集

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

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/VOC2012/SegmentationClass" --output_dir="./pascal_voc_seg/VOC2012/SegmentationClassRaw"


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

2.3数据转换

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

python D:\Project\pythonDemo\Seg\deeplab\datasets\build_voc2012_data.py --image_folder="./pascal_voc_seg/VOC2012/JPEGImages" --semantic_segmentation_folder="./pascal_voc_seg/VOC2012/SegmentationClassRaw" --list_folder="./pascal_voc_seg/VOC2012/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="http://download.tensorflow.org/models"
TF_INIT_CKPT="deeplabv3_pascal_train_aug_2018_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 os
os.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 2020.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 os
os.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 os
os.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代码,是通过下面这段代码加载的:

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

deeplabV3+布置笔记——逢山开路,遇水搭桥篇相关推荐

  1. 2022-2028年中国遇水膨胀橡胶行业市场研究及前瞻分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了遇水膨胀橡胶行业相关概述.中国遇水膨胀橡胶行业运行环境.分析了中国遇 ...

  2. 10打开没有反应_118个遇水反应化学品清单及高压反应釜操作经验

    以下是做了 3 年多的高压加氢反应的一些经验交流,希望能够起到抛砖引玉的作用 .高压釜一般用于还原氢解.在高压.易燃.自燃物品,氧气同时存在下很容易发生安全事故,给操作者造成终身遗憾.为此将使用高压釜 ...

  3. Linux C基础笔记(4)终结篇

    Linux C基础笔记(4)终结篇 补充申明:Linux C基础笔记共分为四部分,第一部分是Linux下基本命令,以及vi编辑器的使用还有C中的数据类型,第二部分为运算符.常量变量和输入输出.第三部分 ...

  4. MyBatis学习笔记(1)—使用篇

    MyBatis学习笔记(1)-使用篇 MyBatis学习笔记(2)-映射关系篇 MyBatis学习笔记(3)-高级映射之一对一映射 Mybatis学习笔记(4)-高级映射之一对多映射 Mybatis学 ...

  5. FPGA系统性学习笔记连载_Day1数字电路基础篇

    FPGA系统性学习笔记连载_Day1数字电路基础篇 连载<叁芯智能FPGA设计与研发就业班-第一天> <数字电路基础1> 原创作者:紫枫术河 转载请联系群主授权,否则追究责任 ...

  6. 强化学习笔记(一)基础篇

    强化学习笔记(一)基础篇 目录 1.强化学习相关概念 2.强化学习与监督学习和非监督学习的区别 3.强化学习分类 4.三对重要概念 目录 写在前面:本文系小编学习邹伟老师等人编著的<强化学习&g ...

  7. 【回眸】今天本想水一篇博客……

    今天本想水一篇博客-- 前言 最近不是快到期末了嘛,笔者自己本身也是忙的焦头烂额,被各种实验报告支配的恐惧,被各种大作业要求支配的恐惧,甚至还有之前参加的好多活动等等,都在忙碌的十二月,真的是忙到头晕 ...

  8. ip68级防水可以泡多久_IP68级别的防水遇水就废,明明只防水溅,为什么还大肆宣传防水!...

    IP68级别的防水遇水就废,明明只防水溅,为什么还大肆宣传防水! 手机外观的整体性越来越高,塑料和金属被玻璃完全代替并使用在旗舰手机上,这两个因素造就了现在发布的一系列手机外观上的相同,这对于哪些品牌 ...

  9. HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作

    HFSS学习笔记(一)基础篇 操作界面简介和使用前的准备工作 一.HFSS工作界面简介 各区域的功能: 二.设计的步骤 1.创建工程文件 2.进行设计前的准备工作 一.HFSS工作界面简介 各区域的功 ...

最新文章

  1. Oracle 12c 新特性之 temp undo
  2. 016--VS2013 C++ 透明动画
  3. Golang for循环使用多个变量
  4. ABAP 查询性能提高之我见
  5. QT的QNdefRecord类的使用
  6. $.ajax 跨域请求 Web Api
  7. 我是怎么用机器学习技术找到女票的
  8. Z-Stack Home Developer's Guide—2. Overview中文翻译【Z-Stack Home 1.2.0开发文档】
  9. 非root安装php nginx,非root用户安装nginx
  10. python metaclass应用
  11. CentosNginx
  12. 作为互联网面临的最大危险之一,当前的 DDoS 趋势如何?
  13. (转)嵌入式按键驱动,支持短按、长按、双击(中断方式)
  14. H5分享到微信朋友圈与好友实现思路
  15. 怎么查充电器支不支持pd快充协议_新买的iPhone11不能快充?很可能是因为你没用对充电器...
  16. 2021-10-11 今日总结
  17. 【HDU 5755】Gambler Bo(高斯消元)
  18. java poi 生成excel_利用POI生成EXCEL文件的方法实例
  19. “生态环境—空气质量”业务理解
  20. 高德地图——车随轨迹点移动

热门文章

  1. python学习笔记之pdf文档提取
  2. python爱心源代码集锦(16款)
  3. ZigBee、WiFi、蓝牙的区别
  4. 迁移到行业标准格式PKCS12
  5. 不是华为手机可以装鸿蒙,不是华为手机,也能用上鸿蒙系统
  6. Pytorch学习笔记——fan_in和fan_out
  7. JPG、PNG、BMP、RAW傻傻分不清楚?一文帮你解析常见的图像文件格式及其差异
  8. 解决Cleartext HTTP traffic to 01.minipic.eastday.com not permitted
  9. PANSS 阳性与阴性症状量表
  10. Win10 Linux子系统编译Android系统源码