Windows下用cmake编译Caffe并使用

本文详细介绍了在Windows环境下,使用CMake编译Caffe并配置pycaffe的具体步骤。涵盖了环境搭建、依赖项下载、CUDA配置修改及常见问题解决,适合初学者及开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows下用cmake编译Caffe,配置pycaffe

2018年8月24日 23:35:41,2018-12-06 09:32:50(update)
by ChrisZZ

简要说明

直接git clone了caffe-BVLC然后checkout到windows分支,编译还是可能遇到问题。这里记录一下。

环境说明

系统: Windows10
编译器:Visual Studio 2013/2015
构建器:CMake 3.12
Caffe: BVLC官方Caffe的windows分支
Python: python2.7,用anaconda装的。注意python.exe所在目录放到系统PATH环境变量中
CUDA: 9.2 (可选)
CuDNN:7.0(可选)
终端: cmd窗口

具体步骤

1. 下载代码

进cmd敲:

d:
cd work
git clone https://github.com/BVLC/caffe caffe-BVLC
cd caffe-BVLC
git checkout -b windows origin/windows

2.改正配置

2.1 cuda配置

纯cpu编译的调过这一小节。
cmake/Cuda.cmake,第7行,去掉20和21的算力支持(否则新版cuda会报错),改成:

set(Caffe_known_gpu_archs "30 35 50 52 60 61")

cmake/Cuda.cmake,第40行左右,手动设定nvcc架构版本,例如我是1080Ti显卡,使用6.1:

set(__nvcc_out "6.1")

(为啥这里的自动获取计算能力版本有问题?大概是字符编码导致输出很多警告,警告信息影响了正确结果的获取)
(每个Nvidia显卡型号对应的compute ability表见:https://blog.youkuaiyun.com/real_myth/article/details/44308169)

2.2 下载依赖项

为了避免cmake下载遭遇网络问题,以及修改配置项的方便,根据scripts/download_prebuilt_dependencies.py手动下载依赖文件:
(如果你网路还可以,那么忽略这一小节,脚本会自动下载)

WIN_DEPENDENCIES_URLS = {
    ('v120', '2.7'):("https://github.com/willyd/caffe-builder/releases/download/v1.1.0/libraries_v120_x64_py27_1.1.0.tar.bz2",
                  "ba833d86d19b162a04d68b09b06df5e0dad947d4"),
    ('v140', '2.7'):("https://github.com/willyd/caffe-builder/releases/download/v1.1.0/libraries_v140_x64_py27_1.1.0.tar.bz2",
                  "17eecb095bd3b0774a87a38624a77ce35e497cd2"),
    ('v140', '3.5'):("https://github.com/willyd/caffe-builder/releases/download/v1.1.0/libraries_v140_x64_py35_1.1.0.tar.bz2",
                  "f060403fd1a7448d866d27c0e5b7dced39c0a607"),
}

下载后的压缩包放到C:\Users\chris.caffe\dependencies\download\目录下,然后解压到download的同级目录

2.3 再次修改cuda相关配置

接下来,如果你要用cuda编译,那么一定要修改C:\Users\chris.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61\boost\config\compiler\nvcc.hpp:注释掉最后三行:

#if !defined(__CUDACC_VER__) || (__CUDACC_VER__ < 70500)
#   define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif

(原因:cuda7.5以后,__CUDACC_VER__被废除,应当使用__CUDACC_VER_MAJOR___CUDACC_VER_MINOR__等,参考https://github.com/BVLC/caffe/issues/5994、https://blog.youkuaiyun.com/qq_37817177/article/details/80604294)。

2.4 开始编译

回到刚才的cmd,继续敲(#后面是注释,不用敲进去)

set PATH=%PATH%;C:\Windows\Microsoft.NET\Framework\v4.0.30319  #临时添加MSBuild.exe的路径
set MSVC_VERSION=12 #12对应到我用的vs2013.  build_win.cmd中默认为vs2015,也就是13
set WITH_NINJA=0  # 不使用ninja,用visual studio。因为编译中间出了问题在vs里面好查看。
# set CPU_ONLY=1  # 如果没有GPU,或者就是想编译CPU版本,则开启
set RUN_INSTALL=1 #安装。默认走的非appveyor分支,RUN_INSTALL为0,这不是坑人么。

.\scripts\build_win.cmd # 前面我写明的修改项都完成后,本行会顺利执行。

编译期间出现“锟斤拷”的乱码可以忽略,最后:
成功编译

成功编译和安装

build_win.cmd脚本中的设定,默认编译的是release模式的。修改脚本,或者干脆打开cmake生成的build/Caffe.sln工程来编译debug版本。

2.5 配置pycaffe

因为目前不搞训练了,系统上只装一个caffe版本,不存在多个版本冲突问题。那么就方便点,把build/install/python/caffe文件夹,拷贝到D:\soft\Anaconda2\Lib下。

以后再开VSCode时,import caffe再也不会报红了。

3 使用caffe.lib

比如不想在原始的caffe工程中添加自己的代码,这样保持了caffe自身代码不变,只要在自己的使用了caffe库的工程中正确设定,就独立的开发自己的代码了。

假设自己的这个工程也是基于cmake构建,最关键的一点是,正确配置了前面编译的caffe的依赖项,而不是自己再去重新配一遍..

set(CAFFE_DEPENDENCIES_DIR "C:/Users/Administrator/.caffe/dependencies/libraries_v120_x64_py27_1.1.0")
include(${CAFFE_DEPENDENCIES_DIR}/libraries/caffe-builder-config.cmake)

完整的例子见:
https://github.com/zchrissirhcz/toolbox/tree/master/cmake_examples/caffe_cpp_play_better

值得注意的是:前面编译出来的caffe-BVLC的,其构建类型要与自己的工程一致,也就是debug搭配debug,release搭配release。我这里实验发现debug模式下个别库名字不对,缺少“d”或者"-d",在Visual Studio里手动改一下就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值