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

用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.git
C:\Projects> cd caffe
C:\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 definition
net:
"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.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: 1000 # 迭代次数,可以改的小一点
# snapshot intermediate results
snapshot: 500
snapshot_prefix: "A:/Caffe/caffe/examples/mnist/lenet"
# solver mode: CPU or GPU
solver_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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值