文章目录
陆陆续续折腾了好久,本来都放弃了,但是今天看了看新闻,心情有点低迷,写了会代码,又来看看caffe…以下记录win10安装caffe的过程
安装camke和vs2015
cmake>3.4
,我的是3.16.0
vs2015
社区版
下载caffe-windows
按照官网 教程即可, 但是最后build_win.cmd暂时不要执行
C:\Projects> git clone https://github.com/BVLC/caffe.git
C:\Projects> cd caffe
C:\Projects\caffe> git checkout windows
:: Edit any of the options inside build_win.cmd to suit your needs
C:\Projects\caffe> scripts\build_win.cmd
修改build_win.cmd
配置
) else (
:: 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=1
:: 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
)
其他地方没有注意过,暂时的主要配置从else开始底下一段代码
MSVC_VERSION=14
设置使用vs版本,vs2013=12, vs2015=14,我的理解是编译器,那是不是不下载vs,用mingw也行…WITH_NINJA=0
不知道什么东西,不过我们用不上,所以=0CPU_ONLY=1
垃圾电脑没有GPU,所以=1CMAKE_CONFIG=Release
debug&release 版本PYTHON_VERSION=3
选择你的python版本,如果你需要编译python接口的话只支持2.7和3.5BUILD_PYTHON=1
是否编译python接口BUILD_PYTHON_LAYER=1
是否使用python layer,我的目的就是使用python写caffe的datalayerPYTHON_EXE=python
如果python没有在你的系统路径的话,这里可以指定python路径,如果在他会默认优先从系统路径读取,我使用anaconda的环境,所以这里就不改了- 后面三个设置我才应该无关紧要吧…
python3.5
我习惯性用anaconda,当然其他也行只要你是python=2.7 or 3.5
新建一个 python=3.5
的环境(默认是3.7),激活环境
这个路径下提供了一些需要的依赖caffe/python/requirements.txt
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
我开始没看到,编译完caffe再安装的这些包
下载caffe编译依赖的库
你以为这就完了,其实也可说就是完了,理论上配置好环境,修改完配置就可以了,我尝试运行了 scripts\build_win.cmd
, 期待有个好的结果,但是事与愿违,所以在宁运行这行代码之前看完这一节再做决定
- 会下载一个约144M的文件,可能会下载失败,当然我尝试多次后成功了,后来发现可以从网上下载
打开Ta它他她 选择合适的版本下载,当然这样也十分简单。我差点忘了说,把压缩包下载下来放在以下路径下,将解压缩包放在download同级目录下即可
-c:/user/user_name/.caffe/dependencies/
--download/libraries_v140_x64_py35_1.1.0.tar.bz2
--libraries_v140_x64_py35_1.1.0
2. protoc编译出错
Checking Build System
Running C++/Python protocol buffer compiler on E:/coding/caffe3/src/caffe/proto/caffe.proto
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已 退出,
代码为 -1073741515。 [E:\coding\caffe3\build\src\caffe\caffeproto.vcxproj]
ERROR: Build failed
- solution 1: 更改
protobuf
版本
传说中的protoc
出错了,这很ok,意料之外但又在情理之中,意外是我用的你官方的文件啊,这个版本又不是我控制的…,我尝试使用
C:\Users\user_name\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\bin\protoc.exe
想要查看他的版本,结果这个程序不能运行,难道官方给的程序竟然是错的?
去protobuf
官网 直接下载release版
我手动将其换成了protoc=2.6.1
, 提示我too old
,
再换成protoc=3.1.0
(好像推荐python推荐下载的就是这个),结果提示我too new
呵呵…以下过程我不在详述,概括就是我试遍了这其间所有版本,不是too old
就是too new
,果然 问题和我想得不一样吗? - solution 2:搜索
caffe&MSB6006
确实有人遇到同样的问题,但是没能解决我的问题
本来就此放弃,准备去远程服务器了,但是今天11-25 是爱因斯坦完成广义相对论的日子啊,注定有着不平凡的事情要发生,于是solution 3
出来了
- solution 3:还是更改
protobuf
版本,对还是他…
将下载的protoc-3.1.0-win32
解压,
将\protoc-3.1.0-win32\include\google
替换C:\Users\user_name\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\include\google
;
将protoc-3.1.0-win32\bin\protoc.exe
替换C:\Users\user_name\.caffe\dependencies\libraries_v140_x64_py35_1.1.0\libraries\bin\protoc.exe
再次编译,诸君请看
(py35) E:\coding\caffe3>python
Python 3.5.5 | packaged by conda-forge | (default, Jul 24 2018, 01:52:17) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'caffe'
>>> import caffe
>>>
那么第一次导入为什么会失败呢?看下一节
将caffe/build/install/python/caffe移动到python/lib/site-package下
看标题就行了
测试
我还是希望有个测试代码可以用来测试,就放到后面使用python写datalayer吧
仅供参考,希望可以对大家有所帮助,祝大家都能幸福安康。
这个章节写的很罗嗦,请忽略他,在这个不是那么美好的日子里让人提不起劲来思考了…