VS2017编译caffe

caffe的windows分支支持的VS版本是2013和2015,而我安装的是Visual Studio Community 2017, 直接使用cmake是不行的。

根据报错信息,凡是不行的地方让VS2017直接使用VS2015的配置,就可以使用caffe工程提供的预编译的二进制的依赖库了。

CMake脚本的修改

cmake/WindowsDownloadPrebuiltDependencies.cmake需要增加

set(DEPENDENCIES_URL_1912_27 "${DEPENDENCIES_URL_BASE}/v${DEPENDENCIES_VERSION}/${DEPENDENCIES_NAME_1900_27}${DEPENDENCIES_FILE_EXT}")
set(DEPENDENCIES_SHA_1912_27 "17eecb095bd3b0774a87a38624a77ce35e497cd2")

1912就是VS2017的,1900是2015的。

依赖包中OpenCV的配置

预编译的OpenCV中也缺少VS2017的信息,.caffe\dependencies\libraries\OpenCVConfig.cmake中增加VS2017的信息

  elseif(MSVC_VERSION EQUAL 1900)
    set(OpenCV_RUNTIME vc14)
  elseif(MSVC_VERSION EQUAL 1912)
    set(OpenCV_RUNTIME vc14)
  endif()

BLAS选择OpenBLAS,我这苏菲也没有N记卡,不用CUDA。选择VS2017 amd64编译起,cmake搞起,成功编译出工程, VS打开sln,编译也成功。Debug配置下
C:\Users\renwe\Projects\caffe\build>.\tools\Debug\caffe-d.exe --help,Release配置下C:\Users\renwe\Projects\caffe\build>.\tools\Release\caffe.exe --help成功运行。

YEAH!对了,

python版本选择

我看了caffe仅支持2.7和3.5版本的python,那VS2016里安装的python3.6我就放弃吧,有miniconda这种神器我何必自己折腾呢。选择了安装了miniconda2版本(想着Caffe2还不支持py3)。

mnist走一波

caffe工程目录下(我的C:\Users\renwe\Projects\caffe> )开PowerShell:

.\data\mnist\get_mnist.ps1
.\examples\mnist\create_mnist.ps1
.\examples\mnist\train_lenet.ps1

注意1:PowerShell运行脚本的权限,默认可能是不能执行的,修改命令Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
注意2:VS工程配置的问题,可执行文件都在各自的Debug和Release字目录中。适当修改下ps1脚本就OK了。
最后训练完测试完

I0331 02:00:46.701665 15772 solver.cpp:310] Iteration 10000, loss = 0.00280334
I0331 02:00:46.701665 15772 solver.cpp:330] Iteration 10000, Testing net (#0)
I0331 02:00:56.045547 19868 data_layer.cpp:73] Restarting data prefetching from start.
I0331 02:00:56.420552 15772 solver.cpp:397]     Test net output #0: accuracy = 0.9901
I0331 02:00:56.420552 15772 solver.cpp:397]     Test net output #1: loss = 0.0309957 (* 1 = 0.0309957 loss)
I0331 02:00:56.420552 15772 solver.cpp:315] Optimization Done.
I0331 02:00:56.420552 15772 caffe.cpp:260] Optimization Done.

发表评论

电子邮件地址不会被公开。 必填项已用*标注