deeplab源代码已经被谷歌集成在GitHub中tensorflow/models。
之后我会持续更新讲解整个deeplab源代码中各个文件、代码和文档,以及对源代码的详细注释讲解。
本文不设计deeplab理论,因此就算不了解deeplab原理和模型结构的读者仍可操作。
deeplab文件目录图如下(Note:此处需下载官方github上最新的models文件,很多网上的较老的models中会缺少不少的文件)
deeplab 依赖以下的一些库:(此处官方github上也有介绍,见https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/installation.md)
Special Note:
先讲一下tensorflow_gpu
,cuda
和cudnn
三者之间的版本对应关系:
tensorflow_gpu1.5/1.6/以上
—— cuda9.0
—— cudnn7.0
tensorflow_gpu1.3/1.4
—— cuda8.0
—— cudnn6.0/5.0
而deeplab要求tensorflow1.6以上,即电脑,工作站或服务器上cuda一定要是v9.0.
在 deeplab/g3doc/installation.md 中提到,安装deeplab需要将 research/slim 路径加入 PYTHONPATH 中去,官方给出的方法是在每次运行之前都执行,但仅在linux系统中起作用
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
windows 系统下的解决方案为:在py脚本中动态添加地址
将 deeplab 文件夹下的 train.py, eval.py, vis.py, export_model.py 和model_test.py这5个脚本的开头加语句,没错四个文件都要加(必须加在 import deeplab 语句之前)。
import sys
sys.path.append(r'D:\Code\tf-models\research')
sys.path.append(r'D:\Code\tf-models\research\slim') # 以上两处的路径请按照真实的路径添加
在tensorflow/models/research/下运行model_test.py
# From tensorflow/models/research/
python deeplab/model_test.py
如果环境正确,则提示:
Ran 5 tests in 10.758s
解决1(来自github中tensorflow/models/issues/5523):
因为作者使用python2写的源代码,而我使用python> = 3.0,因此model_test.py的第140行的代码无效,因为在python2中dict.keys()返回的是列表,而在python3中dict.keys()返回的是迭代器。即:
self.assertListEqual(scales_to_model_results.keys(),
expected_endpoints)
改为:
self.assertListEqual(list(scales_to_model_results.keys()),
expected_endpoints)
Note1:源代码中的类似filename_test.py
(文件名带有_test)的格式文件都是用来测试filename.py所需要的环境是否正确。如
Note2:(如果有必要)
local_test.sh
: 测试整个有关deeplab训练voc2012数据集的代码是否能正常运行,默认为xception模型
local_test_mobilenetv2.sh
: 测试mobilenetv2模型时,整个deeplab模型代码是否能够正常运行
此处.sh文件可在git bash上运行,不同于linux系统,具体在tensorflow/models/research/deeplab/文件下:
# From tensorflow/models/research/deeplab
# local_test_mobilenetv2.sh同理
./local_test.sh
到此,第一阶段结束,deeplab环境配置成功