在linux下折腾了一段时间,打算在笔记本上面折腾一下的时候发现新版本的caffe删除了./windows文件夹,纠结了半天重新解决。只是自已折腾能用,并不代表所有步骤都是最优,仅供参考。
(由于内容为配置成功后根据自已记忆编写,可能存在一些忘记的地方。)
在进行下列步骤前,应该已经装好了CUDA8,CUDNN5.1,VS2015,cmake 3.4.2, Anaconda3-4.2.0。
CUDA8、VS2015、cmake3.4.2、Anaconda3-4.2.0直接下载安装在某个位置即可,然后将CUDNN5.1中的三个文件夹复制到CUDA8的安装路径中就可以。
1、下载caffe后解压,进入到caffe-windows主目录。下载地址:https://github.com/BVLC/caffe/tree/windows,里面有官方说明。
2、跟以前步骤一样,复制主目录下的Makefile.config.example文件并重命名为Makefile.config。
3、修改Makefile.config文件中内容,以下为根据自已需要修改。
## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0
# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
# You should not set this flag if you will be reading LMDBs with any
# possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1
# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++
# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := D:/CUDA8
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr
# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
-gencode arch=compute_30,code=sm_30 \
-gencode arch=compute_35,code=sm_35 \
-gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
BLAS_INCLUDE := /path/to/your/blas
BLAS_LIB := /path/to/your/blas
# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib
# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
#PYTHON_INCLUDE := /usr/include/python2.7 \
# /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
ANACONDA_HOME := D:/Anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.5 \
$(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include
# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
# /usr/lib/python3.5/dist-packages/numpy/core/include
# We need to be able to find libpythonX.X.so or .dylib.
#PYTHON_LIB := /usr/lib
PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib
# NCCL acceleration switch (uncomment to build with NCCL)
# https://github.com/NVIDIA/nccl (last tested version: v1.2.3-1+cuda8.0)
# USE_NCCL := 1
# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1
# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute
# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1
# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0
# enable pretty build (comment to see full commands)
Q ?= @
4、进入scripts文件夹中,在scripts中打开cmd命令窗口(按住shift在文件夹中点击鼠标右键,或者使用cd e:\caffe-windows\scripts和e:两句命令切换进去)。
用记事本等文件打开build_win.cmd文件,找到:: Change the settings here to match your setup(我目前的文件约在70行)这句话,然后进行修改,如下:
:: Change the settings here to match your setup
:: Change MSVC_VERSION to 12 to use VS 2013
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
:: Change to 1 to use Ninja generator (builds much faster)
if NOT DEFINED WITH_NINJA set WITH_NINJA=0
:: Change to 1 to build caffe without CUDA support
if NOT DEFINED CPU_ONLY set CPU_ONLY=0
:: Change to generate CUDA code for one of the following GPU architectures
:: [Fermi Kepler Maxwell Pascal All]
if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Auto
:: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs
if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
:: Set to 1 to use NCCL
if NOT DEFINED USE_NCCL set USE_NCCL=0
:: Change to 1 to build a caffe.dll
if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
:: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported)
if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3
:: Change these options for your needs.
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 python is on your path leave this alone
if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python
:: Run the tests
if NOT DEFINED RUN_TESTS set RUN_TESTS=0
:: Run lint
if NOT DEFINED RUN_LINT set RUN_LINT=0
:: Build the install target
if NOT DEFINED RUN_INSTALL set RUN_INSTALL=0
在命令行中输入./build_win.cmd,如果配置没问题会编绎一段时间,最后会有几千个警告, 0 errors的提示,则认为成功了。这个时候可以打开caffe-windows\scripts\build\caffe.sln工程,跟以前就差不多了,不过好像是少了一东西,例如libcaffe。
若是在编绎过程中出现libraries_v140_x64_py35_1.1.0相关的错误,那么去网上下载libraries_v140_x64_py35_1.1.0.tar.bz2,放在报错提示的位置,例如我的是C:\Users\Think\.caffe\dependencies\download\然后删除掉caffe-windows\scripts下的build文件夹并重新编绎。(这个地方我在网上看到有说修改配置文件中的一个地方,然后可以把该文件放在一个地方就不会联 网下载出现问题,没细研究)
5、如果需要在python中调用caffe,那么简单的办法是将E:\caffe-windows\python\caffe文件夹复制到D:\Anaconda3\Lib\site-packages\内,然后在命令行中输入python进入到python界面中,输入import caffe成功即可在python中调用caffe的相关功能。(关于这个地方我觉得有其他简单的办法,但是我一直没找到,如果有哪位知道还请指点一下,感谢!)
6、如果需要在python中调用opencv,那么可以看看https://pypi.org/project/opencv-python/3.1.0.1/里面的介绍,打开Anaconda3的命令行,输入
pip install opencv-python
这个时候会应该提示你pip的版本太低,那么根据提示升级一下pip,然后再次执行。这样还有一个可能是会特别慢,如果你像我一样不愿意等,就在上面的网址里面下载opencv_python-3.1.0.1-cp35-cp35m-win_amd64.whl,然后使用
pip install d:\opencv_python-3.1.0.1-cp35-cp35m-win_amd64.whl
注意上面的路径。安装完成后进入python的命令行,输入python和import cv2,没有错误就算成功了,当然可以通过cv2.__version__查看版本。
7、可以在cmd命令行中先切换路径到C:\Program Files\NVIDIA Corporation\NVSMI\, 然后输入./nvidia-smi查看显卡情况,使用./nvidia-smi -l 3定时每3秒刷新一次。在linux下则是watch -n 3 nvidia-smi。
8、若要在caffe中添加新层,删除caffe-windows\scripts\build文件夹,按照添加新层的顺序添加完然后重新进行编绎即可。
其他配置使用过程中也不知道还有没有忘记的,若是有小伙伴参考这个成功了请告知一下,若有错误的地方我及时修改。