conda create -n your_env_name python=X.X
,比如conda create -n pytorch1 python=3.5
。#激活虚拟环境
source activate your_env_name(修改为你的虚拟环境名称)
#退出虚拟环境
source deactivate
#删除虚拟环境
conda remove -n your_env_name(修改为你的虚拟环境名称) --all
opencv安装(源码编译)
难点有2个,找到适合自己电脑和需求的opencv版本,设置源码编译的路径。
参考教程:ubuntu16.04安装opencv完整教程
注意将教程中的虚拟环境改为自己的conda建立的虚拟环境即可。
caffe安装(源码编译)
参考教程:手把手教你在Ubuntu 16.04下配置GPU版Caffe
从step3开始参考。
除教程中出现的错误及修改方法外,我安装中遇到的报错和坑记录如下(如不特别指明,修改内容均为makefile.config):
(1)fatal error: pyconfig.h: No such file or directory #include “pyconfig.h”
参考:caffe编译:fatal error: pyconfig.h: No such file or directory #include “pyconfig.h”
解决方法:将caffe/makefile.config文件的python include 修改为如下:
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python3.5 \
$(ANACONDA_HOME)/lib/python3.5/site-packages/numpy/core/include \
/usr/include/python3.5
(2)nvcc fatal : Unsupported gpu architecture ‘compute_20’
参考:nvcc fatal : Unsupported gpu architecture ‘compute_20’
因为我装的是CUDA9.0,所以将caffe/makefile.config文件中下面两行删除就可以了
-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \
(3)Caffe .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用
参考:Caffe .build_release/lib/libcaffe.so:对‘cv::imread(cv::String const&, int)’未定义的引用
因为你用了opencv 3.x的缘故,只需在caffe/Makefile的最后一行加上:
LIBRARIES += glog gflags protobuf leveldb snappy \
lmdb boost_system boost_filesystem hdf5_hl hdf5 m \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio
(4)ubunut14.04配置caffe时出现 error while loading shared libraries: libopencv_core.so.3.2: cannot open share
参考:error while loading shared libraries: libopencv_core.so.3.2: cannot open share
从这个提示可以知道系统找不到libopencv_core.so.3.2在哪儿,而系统是通过/etc/ld.so.conf中的路径找.so这个文件的。将libopencv_core.so.3.2的路径加入到.conf文件中就可以了。.so文件一般存放在/usr/local/lib目录下,博主进入这个文件目录下果然发现了这个文件。
对ld.so.conf这个文件进行编辑是需要获取超级权限的
cd ~ # 先返回到根目录
sudo vim /etc/ld.so.conf #获取超级权限,并用vim编辑器打开该文件
#在末尾加入/usr/local/lib即可
sudo ldconfig
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.
(5)Ubuntu 16.04下安装Caffe解决 undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
参考:Ubuntu 16.04下安装Caffe解决 undefined symbol: _ZN5boost6python6detail11init_moduleER11PyModuleDefPFvvE
原因是boost_python的版本不匹配,默认python版本为3.5,而boost_python为2.7。
解决方法:
先在系统的/usr/lib/x86_64-linux-gnu/路径下查找boost_python文件的版本是否与python版本匹配,我的电脑中文件名为:
libboost_python-py35.so.1.58.0
说明版本为python3.5,匹配。若不匹配则安装对应的boost_python版本。
接下来打开caffe/Makefile文件,将第208行的
PYTHON_LIBRARIES := boost_python python2.7
#改为
PYTHON_LIBRARIES := boost_python-py35 #py35需要改为你自己的python版本,如py34,py33
如果仍旧不对,使用PYTHON_LIBRARIES ?= boost_python-py35 python3.5m
https://stackoverflow.com/questions/42175360/how-to-install-caffe-for-python3-in-ubuntu
(6)caffe 在一个电脑上安装第二次,出现版本兼容问题
参考:cudnn版本问题(注意:同一个电脑可能会配置多个caffe版本,要以一个版本为准)
报错信息:
/usr/local/cuda/include/cudnn.h:500:27: note: declared here
cudnnStatus_t CUDNNWINAPI cudnnSetConvolution2dDescriptor( cudnnConvolutionDescriptor_t convDesc,
^
Makefile:575: recipe for target ‘.build_release/src/caffe/parallel.o’ failed
make: *** [.build_release/src/caffe/parallel.o] Error 1
解决方法:把caffe里面的所有与cudnn相关的.h 和.cpp 替换成第一次配置caffe时候 所用的cudnn的版本
具体操作:
用caffe-master/include/caffe/util (第一次配置caffe目录)下面的cudnn.hpp替换对应的旧版本cudnn.hpp
对应的cpp 文件为:用 caffe-master/src/caffe/util (第一次配置caffe目录)下面的cudnn.cpp替换对应的旧版本cudnn.cpp
caffe-master/include/caffe/layers(第一次配置caffe目录)下面 文件名含有cudnn的所有文件 替换所有对应的旧版本*.cpp和*.cu文件
然后重新编译应该就没有错误了。
A 开始编译
cd caffe/
进入caffe 目录下,依次执行一下命令:
make all -j32
make test -j32
make runtest -j32
make pycaffe # 编译Caffe的python接口
make distribute
如果出错,自己分析或者去网络搜索相应解决办法。修改后,必须重新make clean
,再次make all -j32
注意:32是根据自己电脑cpu的核数确定的,一般为2,4,8,16,32等2的幂次,可以加快编译速度。
(7)make test过程的报错
src/caffe/test/test_neuron_layer.cpp:17:38: fatal error: caffe/layers/log_layer.hpp: 没有那个文件或目录/
src/caffe/test/test_neuron_layer.cpp:17:38: fatal error: caffe/layers/log_layer.hpp: No such file or directory
compilation terminated.
Makefile:581: recipe for target ‘.build_release/src/caffe/test/test_neuron_layer.o’ failed
解决办法:
主要是缺少log_layer相应的源文件。
在github上找一份caffe源码,在src和include里面的layer找到log_layer.cpp、log_layer.cu、log_layer.hpp并添加到caffe-sphereface代码相应的文件下面。
(8)make runtest 或者import时报错
参考:
ubuntu 给caffe配置python3.5,报错dateutil/rrule.py raise ValueError, “Can’t create weekday with n == 0”
Invalid syntax error in rrule.py when importing caffe in python3.6
File “/home/bamboo/anaconda3/envs/pt04/lib/python3.5/site-packages/dateutil/rrule.py”, line 55
raise ValueError, “Can’t create weekday with n == 0”
^
SyntaxError: invalid syntax
pip install python-dateutil --upgrade #正确
pip install --upgrade python-util # 错误
千万注意:不可以在pip前面添加sudo。因为需要将库安装到普通用户可以访问,而非仅管理员访问。
(B)添加路径
打开终端,
然后将caffe源码目录中的python文件夹配置到PYTHONPATH这个环境变量里面去←注意别漏了这一步
sudo gedit ~/.bashrc #打开
export PYTHONPATH=/home/bamboo/anzhaungbao/caffe35(caffe编译路径)/caffe/python:$PYTHONPATH
#修改完成后保存,退出。
source ~/.bashrc #是更改生效
如果出现python2变为python3的情况,则需要注销或者重启即可。
make方式编译的caffe不需要install,直接使用解压的这个文件夹里的东西
(C)测试
1)使用 python -c "import caffe;print(caffe.__version__)
或者打开python,import caffe 测试。
2)MNIST数据集测试
配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
mnist数据集测试:
1.将终端定位到Caffe根目录
cd ~/caffe
2.下载MNIST数据库并解压缩
bash ./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式
bash ./examples/mnist/create_mnist.sh
4.训练网络
bash ./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如下图:
可以看到最终训练精度是0.9914。
参考:
1.ubuntu14.04 编译安装CPU版caffe (https://www.cnblogs.com/zealousness/p/8757678.html)
2.Ubuntu】Ubuntu设置和查看环境变量 (https://blog.csdn.net/White_Idiot/article/details/78253004)
3.Ubuntu16.04 Caffe 安装步骤记录(超详尽) (https://blog.csdn.net/yhaolpz/article/details/71375762)