用vs2015编译并配置caffe(CPU only)

来源:互联网 发布:电路图软件 编辑:程序博客网 时间:2024/06/04 23:24

用vs2015编译并配置caffe(CPU only)

1 环境准备

  • Visual Studio 2015
  • CMake 3.4 or higher #只用3.4及以上版本才支持vs2015
  • anaconda python2.7 #anaconda集成了大量优秀的python第三方科学计算库
  • git

  vs2015自然是用来编译caffe项目的,但是这个caffe项目文件和vs2013环境下有所不同,需要通过cmake工具make出来。直接用vs2015编译vs2013的项目是会出错的。

2 文件下载

2.1 准备项目文件

克隆项目,进入windows分支

C:\Projects> git clone  https://github.com/BVLC/caffe.gitC:\Projects> cd caffeC:\Projects\caffe> git checkout windows

2.2 准备预编译库

在该文件cmake/WindowsCreateLinkHeader.cmake中,有自动下载的脚本,奈何最近开大会,校园网感人,各种中断。我们可以直接从中提取连接然后下载,这里我提供两种下载方式

百度云 https://pan.baidu.com/s/1sl6XFRZ (感谢博主@xiaoxiyang1990提供)
github https://github.com/willyd/caffe-builder/releases/download(博主刚刚访问就是404,哭)

下载好了以后,在根目录下新建文件加build,把文件解压到caffe/bulid目录,文件很大,解压大小在1G左右。

3 cmake编译生成vs2015项目

3.1 修改配置文件

打开caffe/scripts,用notepad++打编辑控制台脚本文件build_win.cmd,从第69行else处开始,根据需求做相应修改

    if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14 #vs的版本,如果是vs2013为12,vs2015为14,此处我们不做修改    if NOT DEFINED WITH_NINJA set WITH_NINJA=0 #此处改为1,我们使用vs编译,不借助ninja,虽然官方说ninja更快    if NOT DEFINED CPU_ONLY set CPU_ONLY=1 #我们只配置CPU版本,此处值1    if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto    if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release    if NOT DEFINED USE_NCCL set USE_NCCL=0    if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0    if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=2 #python版本,python2.7写2,python3.5写3    if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1    if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1    if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0    if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python    if NOT DEFINED RUN_TESTS set RUN_TESTS=0    if NOT DEFINED RUN_LINT set RUN_LINT=0    if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0

然后在cmd或者powershell下运行build_win.cmd,不出问题就是一路同行。
* 报错中出现ninja字样,就是因为配置文件没有把ninja项改为0

4 vs2015编译caffe

4.1 编译

cmake的结果是生成了bulid文件夹,打开caffe\scripts\build\Caffe.sln,就进入了caffe的vs2015项目了。

先生成解决方案,

avatar

再生成INSTALL

avatar

获得caffe的可执行文件caffe\scripts\build\install\bin\caffe-d.exe
到此为止,caffe算是编译完成了。

5 测试

采用minist数据集验caffe。
数据下载地址: https://pan.baidu.com/s/1o7YrhKe (感谢博主@延卿

把文件解压到caffe\examples\mnist,
打开lenet_train_test.prototxt,修改如下两个mnist层,共四个参数

name: "LeNet"layer {  name: "mnist"  type: "Data"  top: "data"  top: "label"  include {    phase: TRAIN  }  transform_param {    scale: 0.00390625  }  data_param {    source: "A:/Caffe/caffe/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: "A:/Caffe/caffe/examples/mnist/mnist-test-leveldb"  #修改为绝对路径    batch_size: 1    backend: LEVELDB #修改为:LEVELDB  }}

然后修改lenet_solver.prototxt

# The train/test net protocol buffer definitionnet:"A:/Caffe/caffe/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.01momentum: 0.9weight_decay: 0.0005# The learning rate policylr_policy: "inv"gamma: 0.0001power: 0.75# Display every 100 iterationsdisplay: 100# The maximum number of iterationsmax_iter: 1000 # 迭代次数,可以改的小一点# snapshot intermediate resultssnapshot: 500snapshot_prefix: "A:/Caffe/caffe/examples/mnist/lenet"# solver mode: CPU or GPUsolver_mode: CPU # 只使用CPU训练

再cmd中执行A:\Caffe\caffe\scripts\build\tools\Debug\caffe-d.exe train --solver=A:\Caffe\caffe\examples\mnist\lenet_solver.prototxt开始训练。
不出问题最后出现accurance=xx,loss=xx,并且程序停止,则表示运行成功。生成模型caffe\examples\mnist\lenet_iter_1000.caffemodel

原创粉丝点击