用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](https://i-blog.csdnimg.cn/blog_migrate/e75ca51d02bfd9cfce7761e3de867cbf.jpeg)
INSTALL
![avatar](https://i-blog.csdnimg.cn/blog_migrate/44b906806ab017247c2aba355d1614b2.jpeg)
获得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