Windows下SSD安装验证步骤
1 软件版本
Win7、CUDA8、CUDNN5.1 for CUDA8、opencv2.4、VS2013
2 硬件型号
I7700K、内存16G、固态硬盘500G、华硕猛禽1080ti
3, win7系统安装过程
选择光盘安装或U盘安装都可,注:win7系统和win10系统的faster-rcnn安装过程应该是一样的
在涉密机上安装时,需要安装USB3.0驱动,使用华硕主板的光盘驱动安装。
1,查询NVIDIA驱动:首先去官网(http://www.nvidia.com/Download/index.aspx?lang=en-us)查看适合自己显卡的驱动:
下载的驱动版本如下:
1080Ti版本的最好不要用1070的驱动,去官网下载最新的驱动,下载的是387.92版本
2, 安装NVIDIA驱动:双击.exe文件即可安装,安装完毕后,在桌面空白处单击鼠标右键->个性化->选择Aero主题,若任务栏变为透明,则说明驱动安装成功。
1 ,下载CUDA
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:
2 ,安装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%;
3,重新启动计算机。
4,验证CUDA8.0已正确安装: 打开cmd,输入nvcc -V(若有信心安装正确,此步可忽略)
结果如下图:
若出现nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
解决方案:在Path末尾添加cl.exe的路径:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64
四,编译CUDA8.0自带的samples
1. 在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0目录下,用vs2017,打开Samples_vs20,7.sln如果这时候出现:
此时,是未找到CUDA 8.0.props
解决方案:将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\extras\visual_studio_integration\MSBuildExtensions下的4个文件复制到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations目录下,重新启动VS2017
2. 先选择release模式(debug会很慢),选中解决方案Samples_vs2013,重新生成解决方案
3. 需要说明的是个别例子编译失败,比如自己编译的时候成功135个,失败10个。失败的原因是缺乏相应的头文件;失败也没有什么影响
4. 编译成功后可在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64\Release目录下面找到全部例子的可执行文件
五,安装cuDNN(上传版需要去掉账号)
1 下载cuDNN
cuDNN是GPU加速计算深层神经网络的库
首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,需要注册一个账号才能下载:下载for windows7
2, 安装cuDNN
(1)下载完成后解压,cuda目录下有bin,include,lib三个文件夹
(2)拷贝目录至CUDA8.0的文件夹:分别将cuda\bin、cuda\include、cuda\lib\x64三个目录中的内容拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0对应的bin、include、lib\x64目录下即可
六, 安装SSD
下载链接:https://github.com/conner99/caffe,选择ssd-microsoft 分支
2, 修改CommonSettings.props文件
(1)打开caffe-ssd-microsoft文件夹,然后看到一个windows文件夹,然后继续打开windows文件夹,看到里面一个CommonSettings.props.example文件,复制出来一份,并改名字为CommonSettings.props
(2) 修改CommonSettings.props文件
CudaVersion改为8.0
<UseCuDNN>true</UseCuDNN>
根据自己显卡的计算能力更改CudaArchitecture
<CudaArchitecture>compute_61,sm_61</CudaArchitecture>
(1) 将libcaffe设置为启动项
(2) 一定要将解决方案改为“release”,因为下载的NugetPackages包和这个release是对应的;如果选择debug,则下载的NugetPackages包也是debug版的,会导致用release编译时报错
(3) C/C++ -> 常规 里的将警告提示为错误修改 为否
(4)右键选择“生成”,开始下载NugetPackages,由于网速的原因开始的时候不动,不要以为有问题,查看C:\Users\jc\AppData\Local\NuGet下的Cache文件中的内容,会发现文件在不断变大;在C:\Users\jc\AppData\Roaming\NuGet中也会产生文件
(5) 若工程编译时出现无法加载NugetPackages\opencv2.4.10等错误,是因为NugetPackages包没有加载成功
解决方法:
1) 如果原来C:\Users\jc\AppData\Local和C:\Users\jc\AppData\Roaming中的NuGet\Cache和NuGet文件夹存在,试着删除他们重新编译
2) 如果这两个文件夹不存在,试着添加他们重新编译
3) 这两个文件夹中的内容可能起着引导加载的作用,变化可能会导致编译的成功
(1)编译caffe时,报错:错误 4622 error C1189: #error : ERROR macro is defined. Define GLOG_NO_ABBRE
解决方法:
是一个宏定义的地方出现了冲突
在工程加上预编译宏GLOG_NO_ABBREVIATED_SEVERITIES:
C/C++ --> 预处理器 --> 预处理器定义 --> 加上GLOG_NO_ABBREVIATED_SEVERITIES,保存
参考网址:http://blog.csdn.net/pi9nc/article/details/20995817
(2)编译caffe时,报错:与boost相关的regex正则表达式库出现问题,在项目中我们不需要正则表达式,所以将相关语句注释掉即可
解决方法:
1) 打开libcaffe/include/layers/detection_output_layer.hpp,将与regex相关的头文件注释掉:
2) 打开libcaffe/src/layers/detection_output_layer.cpp,将所有出现regex和rv的语句注释掉
3) 打开libcaffe/cu/layers/detection_output_layer.cu,将所有出现regex和rv的语句注释掉
(3). 编译,报错:expected an identifier in caffe.pb.h
解决方法:修改libcaffe/cu/util/bbox_util.cu,注释掉所有带thrust的语句
(4). 编译,报错:找不到”.\caffe\3rdparty\hungarian.h”文件;找不到”.\src\caffe\3rdparty\hungarian.cpp”文件
解决方法:下载文件:http://pan.baidu.com/s/1mhYuf7y,密码:3jp2
将里面的hungarian.h和hungarian.cpp文件拷贝出来
1) 在D:\caffe-ssd-microsoft\include\caffe中新建文件夹3rdparty,将hungarian.h文件拷贝进来
2) 在D:\caffe-ssd-microsoft\src\caffe中新建文件夹3rdparty,将hungarian.cpp文件拷贝景来
3) 不需要在libcaffe工程中添加,重新编译,编译器会自动在libcaffe中添加两个文件及对应的3rdparty文件夹
4). 编译成功后接着编译caffe工程,因为ssd_detect.exe的运行依赖caffe.exe
5). 编译ssd_detect工程,最后得到ssd_detect.exe文件
5, 运行ssd_detect.exe报错解决方法
(1). 在caffe-ssd-microsoft下新建sse_dect.bat文件,添加内容
D:/caffe-ssd-microsoft/Build/x64/Release/ssd_detect.exe D:/caffe-ssd-microsoft/models/VGGNet/VOC0712/SSD_512x512/deploy.prototxt D:/caffe-ssd-microsoft/models/VGGNet/VOC0712/SSD_512x512/VGG_VOC0712_SSD_512x512_iter_16000.caffemodel D:/caffe-ssd-microsoft/examples/images/pictures.txt
对照上面的指令添加文件 ,双击运行.bat文件
(2). 出现错误
[libprotobuf ERROR google/protobuf/text_format.cc:274] Error parsing text-format caffe.NetParameter: 938:9: Message type "caffe.PriorBoxParameter" has no field named "step".
F0306 10:40:29.101408 39034 upgrade_proto.cpp:79] Check failed: ReadProtoFromTextFile(param_file, param) Failed to parse NetParameter file: models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt
*** Check failure stack trace: ***
解决方法:
对照linux下的caffe.proto文件进行更改,在1302行PriorBoxParameter中的末尾添加step、offset等成员:
(3)出现错误
caffe.NetParameter:1617:29:Invalid escape sequence in string literal
错误原因:
在windows中路径分隔符是’\’,直接把windows中的路径复制到protobuf文件中在解析的时候会出现这个错误
解决方法:将‘\’改为‘/’或者‘\\’
将models\VGGNet\VOC0712\SSD_512x512\deploy.prototxt中最后几行的输出路径改为‘/’格式的
(4) 出现错误
D:\caffe-ssd-microsoft\data\VOC0712缺少test_name_size.txt
解决方法:在D:\caffe-ssd-microsoft\data\VOC0712中添加test_name_size.txt(从linux版本中拷贝)
(5) 解决以上错误后重新编译,即可运行ssd_detect.exe