1环境搭建
https://wenku.baidu.com/view/ef375d8587c24028905fc377.html
https://blog.csdn.net/nk_wavelet/article/details/78935511?utm_source=blogxgwz0
https://blog.csdn.net/qwfzpk/article/details/79112097
https://blog.csdn.net/qxconverse/article/details/76376718
https://www.cnblogs.com/zjutzz/p/9532483.html
1.VS安装
VS社区版(个人免费):
http://download.microsoft.com/download/B/4/8/B4870509-05CB-447C-878F-2F80E4CB464C/vs2015.com_chs.iso
https://ultraiso.en.softonic.com/download安装utrol iso 打开iso文件,提取到目标文件夹
安装时选自定义安装,只选一个
2.cuda安装
第一步
下载cuda
第二步
运行安装
直接默认路径即可
安装完毕环境变量中多了
增加其余几个变量
在Path末尾添加
重新启动计算机以使环境变量生效
打开vs2015,新建控制台项目,空项目打勾。点击源文件->添加->新建项
右键项目
选择如图所示
右键属性
之后进行项目配置
x64配置
项目->属性->配置属性
编辑添加
3.安装cudnn
解压后 拷贝到相对应的目录C:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v7.5
工程属性页-链接器-输入中添加cudnn.lib的附件依赖项
4.安装cmake
5.安装anaconda
安装2.7
6.caffe安装
安装后,运行GeFroce Experience,点击“驱动程序”—>“检测更新”
解压caffe
简要说明
直接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.csdn.net/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.csdn.net/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里手动改一下就可以了。
之后
打开Caffe.sln进行编译,又经过漫长的等待,在scripts\build\tools\Debug(或Release)中生成了caffe-d.exe,此时caffe就算是编译完了
完整的例子见
https://www.cnblogs.com/david97/p/8961168.html
7.安装opencv
如果你是别的版本的Opencv,可以根据你的系统选择X64(64位操作系统)X86(36位操作系统),vc14表示VS2015,vc12表示VS2013
在系统环境变量中添加:
D:\opencv\opencv\build\x64\vc14\bin
va2015的配置
测试代码:
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main() {
// 读入一张图片(游戏原画)
Mat img = imread("pic.jpg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
下面就是具体的操作步骤:
环境:
VisualStudio 2013 (必需)
CUDA 7.5(可选)
cudnn v3 or v4 (可选)
事实上Caffe还有很多其他的依赖库,如boost,OpenCV等。Microsoft版本的Caffe使用了NuGet来管理,编译时会自动进行下载。
首先在https://github.com/Microsoft/caffe将项目clone下来,保存在本地,根目录我们后文称之为CAFFE_ROOT 下图即为根目录
有上图可以看到CAFFE_ROOT 内有一个和官方Caffe很不同的地方,多了一个windows文件夹。打开文件夹就是微软已经为我们建立好的vs工程,
在开始之前需要先将CAFFE_ROOT\windows\CommonSettings.props.example 文件复制一份,并命名为CommonSettings.props 这里保存着编译
的一些设置内容。打开CAFFE_ROOT\windows\CommonSettings.props 里面有几点重要的设置需要注意
<CpuOnlyBuild>false</CpuOnlyBuild>
<UseCuDNN>true</UseCuDNN>
第一个设置为true表示只使用CPU,不使用CUDA,第二个选择true表示使用CuDNN,反之为false。其他的还有一些Cuda版本,Python支持,MATLAB支持,这里都选false。
如果选择开启CUDA的话,需要在NVIDIA官网下载[7.5版本的CUDA](https://developer.nvidia.com/cuda-downloads)进行安装。
我编译的环境如下(只开启了CUDA)
<CpuOnlyBuild>false</CpuOnlyBuild>
<UseCuDNN>false</UseCuDNN>
<CudaVersion>7.5</CudaVersion>
<PythonSupport>false</PythonSupport>
<MatlabSupport>false</MatlabSupport>
打开 CAFFE_ROOT\windows\Caffe.sln 对libcaffe和caffe项目做如下设置
项目→属性→C/C++→常规→将警告视为错误 设置为否
如果不设置的话在编译boost库的时候会由于文字编码的警告而报错
-
选择编译环境为Release,x64(其他环境同理)。首先编译libcaffe,在libcaffe上右键生成就可以了
- libcaffe编译成功后再编译caffe,所有编译成功和运行需要的dll文件都会存储在
CAFFE_ROOT\Build\x64\Release
下
opencv_objdetect2410.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
libboost_date_time-vc120-mt-1_59.lib
libboost_filesystem-vc120-mt-1_59.lib
libboost_system-vc120-mt-1_59.lib
libglog.lib
libcaffe.lib
gflags.lib
gflags_nothreads.lib
hdf5.lib
hdf5_hl.lib
libprotobuf.lib
libopenblas.dll.a
Shlwapi.lib
opencv_core2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
LevelDb.lib
lmdb.lib
opencv_video2410.lib