由于比赛过程无法联网,需要将ubuntu下在Tensorflow上训练的SSD MobileNet网络模型完全离线移植到win7系统。采坑无数后成功安装,记录一下整体安装过程。
前言
一开始是在win7 64位离线安装的Anaconda3-4.2.0 + Tensorflow1.0.1-GPU + CUDA8.0 + cuDNN5.1 + OpenCV3.4.2,然而在运行SSD MobileNet的过程中训练结束后将模型导出为pb文件时报错:
ImportError: cannot import name rewriter_config_pb2;
或者报错:
AttributeError: ‘module’ object has no attribute ‘mark_flag_as_required’.
错误原因是无法导入rewriter_config_pb2模块,查询了各种论坛,总结出两种解决方案:
1)、将SSD工程文件中models/research/object_detection/exporter.py的line 71/72:
rewrite_options = rewriter_config_pb2.RewriterConfig(
layout_optimizer=rewriter_config_pb2.RewriterConfig.ON)
更改为:rewrite_options = rewriter_config_pb2.RewriterConfig();
或者单独将‘layout_optimizer’更改为‘optimize_tensor_layout’;
解决方案参考:https://github.com/tensorflow/models/issues/3251
2)、版本太低,升级Tensorflow至1.4.0以上可解决。
解决方案参考:https://cloud.tencent.com/developer/article/1341546
由于第一个解决方案没有效果,因此重新安装了全部环境,更改为Anaconda3-4.2.0 + Tensorflow1.4.0-GPU + CUDA8.0 + cuDNN6.0 + OpenCV3.4.2。建议一开始就直接安装高版本Tensorflow,可以避免踩坑。
现将完整的安装过程记录如下:
【1、安装Anaconda】
安装包选择:Anaconda3-4.2.0-windows-x86_64(内置python3.5编译环境)
下载地址:https://repo.continuum.io/archive/ 此为所有anaconda版本链接
Anaconda是集成了很多关于python科学计算的第三方库,安装方便,并且将各个库之间的依赖连接的很好,可以省去python各个依赖库之间的繁琐安装,轻松搭建起tensorflow的编译环境。更多关于Anaconda的介绍可以通过以下网址查看:https://baike.baidu.com/item/anaconda/20407441
安装步骤:按照安装流程顺序安装即可。注意最后应将路径加入Path的选项勾上,否则可能会导致无法启动Anaconda。
【2、安装protobuf-3.1.0】
安装包选择:protoc-3.1.0-win32与protobuf-python-3.1.0.tar
下载地址:https://github.com/google/protobuf/releases?after=v3.2.0
安装步骤:
1)、下载并解压protoc-3.1.0-win32,将bin文件夹中的protoc.exe拷贝到C:\windows\system32中;
2)、在Anaconda的安装路径下进入到Anaconda3\Lib\site-packages目录下,新建tensorflow文件夹用来存放tensorflow的安装文件;
3)、下载并解压protobuf-python-3.1.0.tar,将解压后的文件重命名为protobuf-3.1.0拷贝到新建的tensorflow文件夹中,并且将第2步得到的protoc.exe文件拷贝到protobuf-3.1.0\src文件夹中;
4)、通过cmd命令进入到protobuf-3.1.0\python\setup.py的目录下,执行命令python setup.py install;
【3、安装tensorflow1.4.0】
安装包选择:tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl
下载地址:https://pypi.org/project/tensorflow-gpu/1.4.0/#files
安装步骤:将安装包tensorflow_gpu-1.4.0-cp35-cp35m-win_amd64.whl复制到Anaconda3\Lib\site-packages\tensorflow文件夹中,通过cmd命令进入到Anaconda3\Lib\site-packages\tensorflow目录下,执行命令pip install tensorflow-1.0.1-cp35-cp35m- win_amd64.whl进行安装。
待安装结束后,打开Anaconda,进入Ipython,输入import tensorflow as tf,如果显示如下错误,则说明后续需继续安装CUDA与cuDNN。
【4、安装CUDA8.0】
安装包选择:CUDA8.0版本,双击进行安装。 下载地址:https://developer.nvidia.com/cuda-toolkit
(需要注册账号)
CUDA是Nvidia推出的通用并行计算架构,能使程序高速运行。
安装完毕后需验证CUDA是否正确安装,验证步骤如下:
1)、查看CUDA安装版本
打开cmd,输入nvcc -V指令。如果如下图结果显示,一般证明已安装CUDA,为了进一步确认其功能需进行后续步骤的验证。
2)、编译CUDA自带的samples
在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0目录下,用vs2013,打开Samples_vs2013.sln,在Release下,选中解决方案Samples_vs2013,重新生成解决方案。
第一次编译的时候,提示找不到”d3dx9.h”、”d3dx10.h”、”d3dx11.h”头文件,需下载DXSDK_Jun10.exe,按照默认安装。
下载地址:https://www.microsoft.com/en-us/download/confirmation.aspx?id=6812
安装June 2010 DirectX SDK过程中会出现错误S1023,说明电脑已安装Microsoft Visual C++ 2010 Redistributable。需要在控制面板中打开卸载程序界面,卸载Microsoft Visual C++ 2010 x86 Redistributable与Microsoft Visual C++ 2010 x64 Redistributable,再次安装安装June 2010 DirectX SDK方可正确安装。安装结束后需安装Visual C++ 2010 Redistributable Package进行复原。
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=26999
重新打开Samples_vs2013.sln,再次重新编译,能够全部编译成功。
3)、测试CUDA是否运行正常
执行C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release目录下的deviceQuery.exe和bandwidthTest.exe示例,如能正确显示结果则证明CUDA运行正常。
4)、将CUDA添加到系统路径
在计算机上点击右键,打开属性->高级系统设置->环境变量,可以看到系统中多了CUDA_PATH和CUDA_PATH_V8_0两个环境变量。还要在系统中添加以下几个环境变量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
最后在系统变量 PATH 的末尾添加:
;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;
重新启动计算机。
【5、安装cuDNN6.0】
安装包选择:cuDNN_v6.0 for windows7 下载地址:https://developer.nvidia.com/cudnn
(需要注册账号)
将压缩包进行解压,得到的include、bin、lib中的文件分别复制到CUDA安装路径C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0下对应的include、bin、lib文件中。
安装完毕后进入Ipython,输入import tensorflow as tf,如果显示如下,则证明CUDA与cuDNN均已成功安装。
【6、安装opencv3.4.1】
安装包选择:opencv_python-3.4.1-cp35-cp35m-win_amd64.whl
下载地址:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/
安装步骤:把该资源包放到Anaconda3安装路径下的…\py3\Lib\site-packages文件夹中,使用Anaconda Prompt工具cd进入目录…\py3\Lib\site-packages,然后输入命令pip install opencv_python-3.4.1-cp35-cp35m-win_amd64.whl即可成功安装opencv。
安装完毕后cmd进入python环境,输入import cv2,如不报错证明openCV已成功安装。
至此,Win7 64位下的Tensorflow离线环境已全部搭建完毕,可以愉快地进行深度学习网络的搭建与训练了。
参考的博客列表:
https://blog.csdn.net/xiaogss/article/details/80817318
https://www.cnblogs.com/hzm12/p/6422701.html
附:【Tensorflow不同版本与CUDA及cuDNN版本对应关系】
需按照各个对应的版本进行Tensorflow、Python、CUDA、cuDNN的安装,规避掉因版本冲突导致的各种玄学问题。
Windows端安装方案参考:https://tensorflow.google.cn/install/source_windows
CPU版本的Tensorflow
Version | Python version | Compiler | Build tools |
---|---|---|---|
tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
GPU版本的Tensorflow
Version | Python version | Compiler | Build tools | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
努力的小码农乔木同学
记于 2019.10.30