参考博文: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自家搞得一款:这个还没试过。。。
建议大家把要用的安装包都备份好,以备不时之需。
官方原版:https://github.com/BVLC/caffe/tree/windows
打开官方原版网址,可以看到下面的说明:
字面上的意思是指,上面是已经编译好的二进制文件应该。按照下面的安装需求去选择你的配置。
vs2013 vs2015 都有
要下载旧版本还得加入他们的DEV 计划,登录一下自己的windows账号,下载一个得了。3.7G得一会。
https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/
安装比较简单,不详细介绍了。。。
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
简单安装一下。
可以先不安装,暂时用不到。
就是Software Development,没有这个CUDA的SAMPLES有十几个编译通不过。
下载地址:KitDXSDK_Jun10.exehttps://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812
这部分是支持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,博主一开始下载安装了9.0版本,喜欢比较新的,但是看到caffe github官网写着支持到8.0,一脸懵逼,但偶尔看到有人说9.0也行,但还是心虚,决定全部卸载重装了。
下载地址:https://developer.nvidia.com/cuda-toolkit-archive
如果需要卸载的时候看控制面板里面的,cuda 8.0字眼的都删除,应该剩下下面这些东西了。
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
地址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) 我所在实习公司自己电脑官网云盘都下载不了(神坑啊),耽误了不少时间,最后还是用了公司一台服务器下载下来的。。。
下载个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执行后可能碰到的问题及解决方案(这些都是我碰到的问题):
参考: 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
删除生成的 scripts下的build 文件夹,重启 cmd,重新编译。
依赖包没下载成功,这时候程序已经生成一个文件路径了,但里面没有文件,我们把刚刚的文件放进来就行了。
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版本不能使用,最后还是花了积分在CSDN上下载的。
下载地址: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里面进行操作了。
本篇到此为止了。