caffe环境的配置 win10 + vs2015 + cuda8.0 + cudnn5.1

xiaoxiao2021-02-28  15

参考博文:https://blog.csdn.net/cym1990/article/details/78563349

配置环境:win10 + vs2015 + cuda8.0 + cudnn5.1 for win10 + cmake3.4+ + anaconda版本随意

caffe + 它的依赖包

注意版本问题:

vs2015和vs2013的caffe版本是有区别的,不然vs打开caffe/windows工程的时候是会报错的。

截至2018/6/26号之前,caffe还只支持到cuda8.0。(根据caffe github 说明判断的,不过至少保证8.0能用)

caffe也有几个版本:

官方原版:https://github.com/BVLC/caffe/tree/windows

mircosoft自家搞得一款:这个还没试过。。。

安装大体顺序:

vs -> cuda -> cudnn -> cmake -> anaconda ->编译caffe->测试安装

建议大家把要用的安装包都备份好,以备不时之需。

下载caffe:

官方原版:https://github.com/BVLC/caffe/tree/windows

打开官方原版网址,可以看到下面的说明:

字面上的意思是指,上面是已经编译好的二进制文件应该。按照下面的安装需求去选择你的配置。

下载vs2015:

vs2013  vs2015 都有

要下载旧版本还得加入他们的DEV 计划,登录一下自己的windows账号,下载一个得了。3.7G得一会。

https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/

安装比较简单,不详细介绍了。。。

下载cmake:

https://cmake.org/download/

在上面这个网址可以下载:cmake 3.10.0-rc5

不过之前碰巧已经下载了另一个版本,并亲测有效:cmake-3.9.6-win64-x64.msi 

下载链接:https://cmake.org/files/v3.9/cmake-3.9.6-win64-x64.msi

简单安装一下。

DirectXSDK

可以先不安装,暂时用不到。

就是Software Development,没有这个CUDA的SAMPLES有十几个编译通不过。

下载地址:KitDXSDK_Jun10.exe

https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812

anaconda

这部分是支持python接口才需要的,如果不需要应该可以不下载安装,后面的配置文件改成不支持python即可,但博主是留着python以防万一用到的。

安装下来是3.6的版本,这里要把系统默认python环境改成python3.5,参考这个官方说明:

https://conda.io/docs/user-guide/tasks/manage-python.html

conda create -n py35 python=3.5 anaconda activate py35 #但是当退出之后仍然是默认的3.6 命令行执行: conda info --envs #可以看到有一个root,一个py35,找到py35这个包的安装路径。

然后在windows的环境变量中,把py35这个环境的路径和这个路径下的scripts路径添加到path路径中:

并在系统变量的path路径中删除掉原来的miniconda3/bin和miniconda3/scripts路径,这个再进入命令行中输入python, 默认就是python3.5了。

cuda :

博主一开始下载安装了9.0版本,喜欢比较新的,但是看到caffe github官网写着支持到8.0,一脸懵逼,但偶尔看到有人说9.0也行,但还是心虚,决定全部卸载重装了。

下载地址:https://developer.nvidia.com/cuda-toolkit-archive

    

        

注意:

如果需要卸载的时候看控制面板里面的,cuda 8.0字眼的都删除,应该剩下下面这些东西了。

下载cudnn 

https://developer.nvidia.com/rdp/cudnn-archive

Nvidia官网搜索cudnn archive,我暂时打不开链接(公司神坑),同事给的是:cudnn6.0 for cuda8.0 for win10 的library。  但5.1, 5.0版本应该也行的。

把解压后的文件复制到cuda8.0的安装的文件夹里,一般是下面这样的。其实就是把cudnn的几个二进制文件复制到对应目录下。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0

下载相应的caffe依赖包

地址https://github.com/willyd/caffe-builder/releases/ (注意我这里下载的是:libraries_v140_x64_py35_1.1.0.tar.bz2(注意vs版本和python版本,vs2013下载那个120版本),这个文件非常难下载,我下载了很多次都没下载下来,如果有需要的,请看百度云链接: https://pan.baidu.com/s/1bp4hJiv 密码: zwn8)  我所在实习公司自己电脑官网云盘都下载不了(神坑啊),耽误了不少时间,最后还是用了公司一台服务器下载下来的。。。

配置caffe

下载个notepad++吧,编辑 caffe-windows\scripts\build_win.cmd

修改里面的环境配置,执行的时候将由Cmake生成VS可以打开的工程。也不知道是不是我装了cuda9.0又卸载安装了cuda8.0,装了vs2015后又各种乱七八糟德卸载,重装的操作之后搞坏了什么东西,总之出了很多错,但运气不错,都一一解决了。

按照官方说明 ‘Edit any of the options inside build_win.cmd to suit your needs’

这个文件是针对待会的make行为的配置,非常重要!

修改python环境,如果选择不支持python接口可以略过。大概29行位置:

if !PYTHON_VERSION! EQU 3 ( set CONDA_ROOT=C:\Users\jiangzhang\AppData\Local\conda\conda\envs\py35 #修改成刚刚自己新建的anaconda python3.5的环境 )

大概70行位置

:: Change the settings here to match your setup :: Change MSVC_VERSION to 12 to use VS 2013 if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14 #默认14对应vs2015 :: Change to 1 to use Ninja generator (builds much faster) if NOT DEFINED WITH_NINJA set WITH_NINJA=0 #vs2015为0 :: Change to 1 to build caffe without CUDA support if NOT DEFINED CPU_ONLY set CPU_ONLY=0 #只编译针对cpu的工程设置1,显然我们要用gpu :: Change to generate CUDA code for one of the following GPU architectures :: [Fermi Kepler Maxwell Pascal All] if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto :: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release :: Set to 1 to use NCCL if NOT DEFINED USE_NCCL set USE_NCCL=0 :: Change to 1 to build a caffe.dll if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0 :: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported) if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3 #3对应python3.5, 2对应python2.7 :: Change these options for your needs. if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1 #是否有python接口的设置,1为是 if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1 #是否有python接口的设置,1为是 if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0 #解释同上 :: If python is on your path leave this alone if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python :: Run the tests if NOT DEFINED RUN_TESTS set RUN_TESTS=0 :: Run lint if NOT DEFINED RUN_LINT set RUN_LINT=0 :: Build the install target if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0

160行添加cudnn路径

-DCUDNN_ROOT=D:/Program Files/caffe/cudnn-8.0-windows10-x64-v5.1/cuda ^

cmake -G"!CMAKE_GENERATOR!" ^ -DBLAS=Open ^ -DCMAKE_BUILD_TYPE:STRING=%CMAKE_CONFIG% ^ -DBUILD_SHARED_LIBS:BOOL=%CMAKE_BUILD_SHARED_LIBS% ^ -DBUILD_python:BOOL=%BUILD_PYTHON% ^ -DBUILD_python_layer:BOOL=%BUILD_PYTHON_LAYER% ^ -DBUILD_matlab:BOOL=%BUILD_MATLAB% ^ -DCPU_ONLY:BOOL=%CPU_ONLY% ^ -DCOPY_PREREQUISITES:BOOL=1 ^ -DINSTALL_PREREQUISITES:BOOL=1 ^ -DUSE_NCCL:BOOL=!USE_NCCL! ^ -DCUDA_ARCH_NAME:STRING=%CUDA_ARCH_NAME% ^ -DCUDNN_ROOT=D:/Program Files/caffe/cudnn-8.0-windows10-x64-v6.0/cuda ^ "%~dp0\.."

之后可以不用按照官网解释,直接双击执行 scripts\build_win.cmd

但如果直接闪退说明出现问题了,那还得用cmd运行这个文件,因为直接双击异常后直接关闭,看不到错误信息。

cmd执行后可能碰到的问题及解决方案(这些都是我碰到的问题):

ERROR: Cannot determine the location of the VS Common Tools folder.

参考: https://blog.csdn.net/ked/article/details/25052955但是注意版本不同,原理一样。

直接修改vcvars32.bat 文件指定具体路径:

打开计算机->属性->高级系统设置

新建变量VS140COMNTOOLS,属性值设置为C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\

打开编译VC\bin目录下的vcvars32.bat文件,在第一行添加下列语句:

@echo Setting environment for using Microsoft Visual Studio 2015 x64 tools #注意版本 @SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 14.0 #注意版本 @SET VCINSTALLDIR=c:\Program Files\Microsoft Visual Studio 14.0\VC #注意版本 @SET FrameworkDir32=c:\Windows\Microsoft.NET\Framework @SET FrameworkVersion32=v4.0.30319 @SET Framework35Version=v3.5

  并注释掉下列语句:

::@call :GetVSCommonToolsDir ::@if "%VS140COMNTOOLS%"=="" goto error_no_VS140COMNTOOLSDIR #所以刚刚新建的环境变量名是VS140COMNTOOLS ::@call "%VS140COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit %1 %2

CMake Error: Error: generator : Visual Studio 14 2015 Win64 Does not match the generator used previously: Ninja

删除生成的 scripts下的build 文件夹,重启 cmd,重新编译。

cmake/WindowsDownloadPrebuiltDependencies.cmake:71 (file):

依赖包没下载成功,这时候程序已经生成一个文件路径了,但里面没有文件,我们把刚刚的文件放进来就行了。

libraries_v140_x64_py35_1.1.0.tar.bz2这个文件放到C:/Users/HUST/.caffe/dependencies/download中,再次运行,就OK了; 

突破重围,最后终于来到了这个乱七八糟的画面,需要很久,表示很紧张。别点击这些乱七八糟的东西,会被暂停的。不知道的还以为是有问题呢,用时37分钟,终于好了。(有个什么worning可以先不处理)

接下来用vs打开在caffe\scripts\build文件夹下生成的caffe.sln。然后Debug/Release  64位下,右键下方图片上的ALL_BUILD生成。

又是20分钟过去了。。。

这一步大概的解释:生成caffe的可执行文件,大量的.dll文件就是,scripts/build/tools/release里面就是可执行的caffe的文件。

另外我们关心的文件都是在D:\ws\caffe-windows\src\caffe下如:layers目录下的文件都是各种层的定义。

D:\ws\caffe-windows\src\caffe\proto下的caffe.proto记录的就是针对上面layer 的参数解释,

测试安装

测试lenet 跑mnist数据集分类,很方便,这是自带的examples里面现成的。

首先准备数据,三个途径:

途径1. 执行D:\ws\caffe-windows\data\mnist里面的get_mnist.sh下载,但是要使得wn10可以运行.sh文件,需要bash。这里可以参考下面这个博文:

https://jingyan.baidu.com/article/e73e26c0be8b6624adb6a7ba.html

注意:有些版本的win10也不支持这个,我实习公司的就不行。(巨坑+1)

打开就闪退,网上找到的解决方法,闪退没事了,但提示系统不支持。

如果你的可以,执行D:\ws\caffe-windows\data\mnist里面的get_mnist.sh下载,然后执行D:\ws\caffe-windows\examples\mnist 里的create_mnist.sh 进行数据转换,会生成mnist-train-leveldb、mnist-test-leveldb两个文件夹

途径2. 下载GIT来运行.sh文件,我嫌麻烦没弄。

参考:https://blog.csdn.net/zzfenglin/article/details/53147604

途径3. 事实上,实习公司电脑真的是醉了,win10的 bash 我的Windows版本不能使用,最后还是花了积分在上下载的。

下载地址:https://download.csdn.net/download/u012878523/8140305

所以还是自个下载了。解压后两个文件夹的文件名为:mnist-train-leveldb、mnist-test-leveldb 注意这个文件名后面会用到的。放在 D:\ws\caffe-windows\examples\mnist

接下来修改两个关键的文件

1. D:\ws\caffe-windows\examples\mnist 目录下的 lenet_train_test.prototxt 

可以用notepad来修改比较清晰

修改后的图片:

修改的位置 name: "LeNet" layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { scale: 0.00390625 } data_param { source: "D:/ws/caffe-windows/examples/mnist/mnist-train-leveldb" //修改为绝对路径 batch_size: 64 backend: LEVELDB //格式改成LEVELDB } } layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TEST } transform_param { scale: 0.00390625 } data_param { source: "D:/ws/caffe-windows/examples/mnist/mnist-test-leveldb" //修改为绝对路径 batch_size: 100 backend: LEVELDB //格式改成LEVELDB }

2.同目录下的 lenet_solver.prototxt

# The train/test net protocol buffer definition net: "D:/ws/caffe-windows/examples/mnist/lenet_train_test.prototxt" //绝对路径 # test_iter specifies how many forward passes the test should carry out. # In the case of MNIST, we have test batch size 100 and 100 test iterations, # covering the full 10,000 testing images. test_iter: 100 # Carry out testing every 500 training iterations. test_interval: 500 # The base learning rate, momentum and the weight decay of the network. base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 # The learning rate policy lr_policy: "inv" gamma: 0.0001 power: 0.75 # Display every 100 iterations display: 100 # The maximum number of iterations max_iter: 10000 # snapshot intermediate results snapshot: 5000 snapshot_prefix: "D:/ws/caffe-windows/examples/mnist/lenet" //绝对路径 # solver mode: CPU or GPU solver_mode: GPU //我们要的是GPU

开始训练

写一个批处理文件,或者cmd去运行的方式执行测试

批处理方式:写一个run.bat文件,内容如下:

D:\ws\caffe-windows\scripts\build\tools\Release\caffe.exe train --solver=D:\ws\caffe-windows\examples\mnist\lenet_solver.prototxt pause

Win+R cmd方式:直接win+R cmd输入

D:\ws\caffe-windows\scripts\build\tools\Release\caffe.exe train --solver=D:\ws\caffe-windows\examples\mnist\lenet_solver.prototxt

之后执行没问题的话会到这个界面

至少说明caffe配置没有问题啦。之后就是试试自己导入一个自己的模型,在VS里面进行操作了。

本篇到此为止了。

转载请注明原文地址: https://www.6miu.com/read-1650038.html

最新回复(0)