caffe: Ubuntu16.04 + cuda8.0 + cudnn8.0 + opencv3.1.0 + python2.7 + matlab2014b + blas(mkl)
来源:互联网 发布:瑞士军刀软件 编辑:程序博客网 时间:2024/05/16 16:59
caffe环境这是第四次配了,第一次是CPU版本,比较简单,很容易就配成功了。后面两次是GPU版本,但总有一堆问题。这次边配环境边记录下来,如果再遇到问题也好查找。版本说明如下:
caffe: cuda8.0 + cudnn8.0 + opencv3.1.0 + python2.7 + matlab + blas(mkl)
1.重装系统
(这一步简单,就省略了。其中有一步preparing to install ubuntu,卡了有20分钟左右,好像是因为硬盘没有先格式化。我没有试,反正有时间,等着就好了。)
2. 安装五笔输入法
由于要边配边记录,所以就先安装输入法了。
(参考: http://www.2cto.com/os/201305/215680.html)
sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 im-switch -s ibussudo apt-get install ibus-table-wubi killall ibus-daemon ibus-daemon -drx
第一条语句是安裝IBus框架,有些版本自带了框架,则不需要安装。
第二条语句是启动IBus框架。(安装的时候提示im-switch: command not found
,原来是现在改成了im-config,然后在选项中选择ibus。)
第三条语句是安装五笔引擎。
第四条重启IBus输入法框架:Kill掉ibus进程(如果ibus没有运行,会显示:
ibus-daemon: no process found
然后
输入ibus-daemon -d
就出来了。)
第五条重启IBus输入法框架:重启进程
3. 装显卡驱动。
显卡型号:GTX950。
查看显卡型号:
lspci | grep VGA
再进入nvidia官网搜索对应的驱动版本。
由于命令行安装比较容易,所以采用命令行安装。
开始安装:
首先按住ctrl+Alt+F1进入文字界面,然后执行以下语句:
sudo apt-get purge nvidia-*sudo add-apt-repository ppa:graphics-drivers/ppasudo apt-get updatesudo apt-get install nvidia-370sudo reboot
重启后执行:
nvidia-smi
出现以下界面:
则代表显卡驱动安装成功。
顺便说一下截图功能:
进入System Settings--Keyboard--Shortcuts--Screenshots
我设置的:
选中的那个是Alt+print
gnome-screenshot -h
用来查看这些快捷方式
4. cuda8.0安装
简介:
CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台CUDA?是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。开发人员现在可以使用C语言来为CUDA?架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA?的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
文件可在https://developer.nvidia.com/cuda-downloads下载。
参考www.itdadao.com/articles/c15a234199p0.html安装。
下载完后进入目录:
cd Downloads/soft/
进行MD5检验,确保安装包正常:
sudo md5sum cuda.run
结果:
检验正确后,输入如下代码安装(第一行修改文件权限,第二行执行文件安装):
chmod 777 cuda.runsudo ./cuda.run --override
需要一直按住ENTER键。
后面选项答案依次为:
accept
n
y
/usr/local/cuda-8.0
y
y
/home/huhui
第三行配置询问是否要安装nvidia图形驱动器,一定要选n,因为之前已经安装过了,如果再安装则会报错。
如图:
5. CUDNN安装
下载地址:https://developer.nvidia.com/cudnn
cudnn-8.0-linux-x64-v5.1.tgz
进入下载目录:
cd Downloads/soft
我解压到上一层目录:(后面的-C ../不要就是解压到当前目录)
tar zxvf cudnn-8.0-linux-x64-v5.1.tgz -C ../
解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行如下命令复制头文件:
cd ../cuda/include/sudo cp cudnn.h /usr/local/cuda/include/
再cd命令切换进lib64文件夹,执行如下命令复制动态链接库:
cd ../lib64/sudo cp lib* /usr/local/cuda/lib64/
然后进入复制后的动态链接库进行新的链接。先进入目录:
cd /usr/local/cuda/lib64/
然后查看已有链接:
ls -al | grep libcudnn
删除原有动态文件:
sudo rm -rf libcudnn.so libcudnn.so.5
再次查看:
ls -al | grep libcudnn
已删除,现在建立新的链接:
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5sudo ln -s libcudnn.so.5 libcudnn.so
再次查看
ls -al | grep libcudnn
已链接好!
然后设置环境变量和动态链接库:
sudo gedit /etc/profile
然后再打开的文件末尾加上(“=”前后不要有空格)
export PATH=/usr/local/cuda/bin:$PATH
保存之后创建链接文件:
sudo vim /etc/ld.so.conf.d/cuda.conf
这时出现(若未出现问题可跳过)
于是检查一下vim是否安装:
rpm -qa|grep vim
rpm没有安装,按照提示执行:
sudo apt install rpm
再执行
rpm -qa|grep vim
什么结果也没有返回。于是在命令行输入:
vim
出现结果:
为安装vim,输入命令:
sudo apt install vim
再执行
sudo vim /etc/ld.so.conf.d/cuda.conf
现在可以打开了。在文件加入以下内容:
/usr/local/cuda/lib64
按下esc,按下wq保存后退出。并在终端输入以下命令使该链接生效:
sudo ldconfig
使用sample里面的例子来测试还需要编译。因为当前的cuda还不支持gcc5.0以上的版本,在编译之前,我们需要修改配置文件,否则无法编译成功。(之前试过降低gcc版本,搞了很久没成功,这样改会有warning,但是还是先这样吧。)
cd /usr/local/cuda-8.0/include/sudo cp host_config.h host_config.h.baksudo gedit host_config.h
113行如下:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 3)
说明GCC版本要在5.3以下。查看自己的gcc版本:
gcc --version
5.4的版本,所以这句话需要改,于是我把3直接改成9:
#if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9)
保存后退出。然后进入用例文件进行编译(注意执行第二步命令时候需要较长时间是正常现象):
cd ~/NVIDIA_CUDA-8.0_Samples/sudo make -j16
编译成功。
cd bin/x86_64/linux/release/sudo ./deviceQuery
运行结果:
说明显卡驱动和cuda安装成功。
6. BLAS(MKL)安装
简介
BLAS,即基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序,是一个应用程序接口的标准。caffe官网上推荐了三种实现:ATLAS, MKL, or OpenBLAS。其中atlas可以直接通过命令行安装.在此,采用intel的MKL库。https://software.intel.com/en-us/qualify-for-free-software/student,该链接进入后,申请学生版本的Parallel Studio XE Cluster Edition,这里注册要学校的邮箱拿去注册。该文件有3.9GB,下载完成后切换进文件所在目录解压缩该文件.
cd ~/Downloads/soft/
同样我解压到上层目录:
tar zxvf parallel_studio_xe_2017.tgz -C ../
获取权限:
cd ../chmod 777 parallel_studio_xe_2017/ -Rcd parallel_studio_xe_2017/sudo ./install_GUI.sh
上述命令后会跳出一个安装界面,其中需要输入license,从网站上获取: https://signin.intel.com/?TYPE=33554433&REALMOID=06-0a1c2c51-0321-465b-989e-ece55a46b7a2&GUID=&SMAUTHREASON=0&METHOD=GET&SMAGENTNAME=
注意邮件中的“connected to the Internet, please go to Intel® Software Development Products Registration Center to generate a license file.”中的链接,https://registrationcenter.intel.com/en/products/license/?SN=2JXL-XPH448ZS,打开后点击
Intel® Parallel Studio XE Cluster Edition for Linux* (all tools)
后的Download即出现序列号2HWS-XSRJT7VC,输入即可。
安装完成后进行相关文件链接:
sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
在打开的文件中添加库文件
/opt/intel/lib/intel64/opt/intel/mkl/lib/intel64
添加完成后编译生效
sudo ldconfig
7. OpenCV3.1.0安装与配置
最难的就是这一步,之前两次的问题基本都出现在这里。
从官网下载:http://opencv.org/downloads.html
解压:
unzip opencv-3.1.0.zip -d ../cd ../opencv-3.1.0mkdir buildcd build
安装一些依赖项:
sudo apt-get updatesudo apt-get install build-essentialsudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devsudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-devcmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
在CMakeLists.txt 中加入一行:
cd ../vim CMakeLists.txt
在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
然后按esc和:wq保存退出。
编译安装:
cd build/cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j16
(在配置过程会出现– ICV: Downloading ippicv_linux_20151201.tgz…错误。可以到 ippicv_linux_20151201.tgz 下载。
将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入一行,然后再次cmake即可,如下:
cd ~/Downloads/mv ippicv_linux_20151201.tgz opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ vim opencv-3.1.0/CMakeLists.txt
在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")
然后按esc和:wq保存退出。)
这一步遇到了问题:
参考http://answers.opencv.org/question/95148/cudalegacy-not-compile-nppigraphcut-missing/
vim ../modules/cudalegacy/src/graphcuts.cpp
将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
保存后退出。
再次make -j16
发现编译成功。
sudo make install
8. Python安装与配置
选择的是anaconda linux64 2.7版本python2.7 。下载完成之后,最好也要进行md5sum的检验。完成之后,cd进入下载文件所在的目录,在命令行输入:
cd ~/Downloads/soft/bash Anaconda2-4.1.1-Linux-x86_64.sh
yes
(ENTER)
yes
这一选项把PATH=/home/huhui/anaconda2/bin加到了环境变量中。添加库:
sudo gedit ~/.bashrc
添加
export LD_LIBRARY_PATH=/home/huhui/anaconda2/lib:$LD_LIBRARY_PATH
重启电脑之后,在命令行输入:
ipython
就可以看到python的版本。
9. matlab的安装与配置
下载matlab安装包及crack文件。我的是别人拷给我的两个文件夹,所以也不需要我下载和解压。
cd Downloads/soft/r2014b_linux64/sudo ./install
添加入环境变量:
vim ~/.bashrc
添加:
export PATH=/usr/local/MATLAB/R2014b/bin/:$PATH
保存退出后
source ~/.bashrc
用echo $PATH
来检验:
这里命令行输入matlab
还是会报错:
我们还需要将Crack/linux目录下的libmwservices.so文件拷贝到/usr/local/MATLAB/R2014a/bin/glnxa64:
cd ~/Downloads/soft/MATLAB_R2014B_MAC_LINUX_cracksudo cp libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/
这里命令行输入matlab
就可以打开matlab了
10. caffe的安装和配置
安装各种依赖包
sudo apt-get updatesudo apt-get upgradesudo apt-get install -y build-essential cmake git pkg-configsudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compilersudo apt-get install -y libatlas-base-devsudo apt-get install -y --no-install-recommends libboost-all-devsudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-devsudo apt-get install -y python-pipsudo apt-get install -y python-devsudo apt-get install -y python-numpy python-scipysudo apt-get install -y libopencv-dev
下载caffe:
cd ~git clone https://github.com/BVLC/caffe.git //从github上git caffe
安装配置caffe:
cd caffecp Makefile.config.example Makefile.configsudo gedit Makefile.config
配置文件修改(看英文提示根据具体修改): OPENCV_VERSION := 3
#取消注释符号#,应用opencv3 BLAS := mkl
#BLAS库应用英特尔的mkl
注释第66行自带的python ANACONDA_HOME := /home/huhui/anaconda2
#将具体anaconda2路径写入
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ $(ANACONDA_HOME)/include/python2.7 \ $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
#PYTHON_INCLUDE
之前的注释#去掉,以及之后两行前的#也去掉
PYTHON_LIB := $(ANACONDA_HOME)/libINCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serialLIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
为了之后编译matlab,这里提前在配置文件中修改matlab路劲,改完后保存退出:
MATLAB_DIR := /usr/local/MATLAB/R2014b
为hdf5之类的文件创建新的链接
\首先执行下面两句话:
cd /usr/lib/x86_64-linux-gnu/find . -type f -exec sed -i -e 's^"hdf5/serial/hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5/serial/hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;
执行
ls -al | grep libhdf
然后根据情况执行下面两句:
sudo ln -s libhdf5_serial.so.10.1.0 libhdf5_.so
sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
注意:这里的10.1.0和10.0.2根据不同的系统可能对应的数字会不同,比如在ubuntu16.04中其数字就是10.1.0.
具体的数字可以在输入命令时候使用tab键补全查看
打开makefile文件搜索并替换
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
为
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
在命令行输入: source ~/.bashrc
#编译立即生效
然后进入caffe目录:
make all -j4
报错
添加环境变量即可:
sudo vim ~/.bashrcexport LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATHsource ~/.bashrc
出现错误的原因是执行convert_cifar_data.bin时会链接/usr/local/lib/libopencv_imgcodecs.so,而这个库需要调到TIFFxx的函数,所以需要找到这些函数在哪个库里。然后执行
find / -name "*libtiff*"
发现libtiff.so在/usr/lib/x86_64-linux-gnu目录下。然后查看环境变量
echo $LD_LIBRARY_PATH
发现没有该目录。于是添加进环境变量:
sudo vim ~/.bashrcexport LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATHsource ~/.bashrc
即可编译成功。
编译matlab:
make matcaffemake mattest
报错:
(参考http://itbilu.com/linux/management/NymXRUieg.html)源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
将/usr/local/MATLAB/R2014b/sys/os/glnxa64下的libstdc++.so.6 更改名称为libstd++.so.6_back:
cd /usr/local/MATLAB/R2014b/sys/os/glnxa64/sudo mv libstdc++.so.6 libstdc++.so.6_backsudo ldconfig
11. 编译自己的例子
至此caffe环境算是配好了。但是自己的例子还是跑不了。编译我的extract_features_v0.0.6得到结果:
第一次是是找不到ippicv对应的库(结果忘了截图了),于是就如下操作:
find / -name "libippicv*"
发现了libippicv.a文件在/usr/local/share/OpenCV/3rdparty/lib/目录下,由于好像平常没用到这个库,我就把这个路径加到了g++编译项后面:
LDFLAGS = -L /usr/local/share/OpenCV/3rdparty/lib/ `pkg-config --cflags --libs opencv` -lm
另一种解决方法:
调opencv的时候找不到ippicv的库(http://blog.csdn.net/dengshuai_super/article/details/51895120)
从opencv.pc中可以看出,pkg-config加载库的路径是/usr/local/lib,我们去这这个路径下看看,发现没有-lippicv对应的库,别的选项都有对应的库,然后我们把-lsudo make installsudo /bin/bash -c ‘echo “/usr/local/lib” > /etc/ld.so.conf.d/opencv.conf’sudo ldconfigippicv对应的库(libippicv.a)放到这个路径下就好啦了。
我的libippicv.a在/usr/local/share/OpenCV/3rdparty/lib/
这个路径下。你的也在你自己opencv文件夹的对应路径下。
先cd 到上面这个路径下,然后cp liboppicv.a /usr/local/lib
将这个库文件复制到/usr/local/lib
下就好了。
再次编译报下一个错:
/usr/local/lib/libopencv_imgproc.so.3.1: error adding symbols: DSO missing from command linecollect2: error: ld returned 1 exit statusMakefile:140: recipe for target 'myprogram' failedmake: *** [myprogram] Error 1
进/usr/local/lib/目录查找:
ls -al | grep libopencv_imgproc.so.3.1
结果如下:
huhui@huhui-ubuntu1604:/usr/local/lib$ ls -al | grep libopencv_imgproc.so.3.1lrwxrwxrwx 1 root root 24 10月 11 22:33 libopencv_imgproc.so -> libopencv_imgproc.so.3.1lrwxrwxrwx 1 root root 26 10月 11 22:33 libopencv_imgproc.so.3.1 -> libopencv_imgproc.so.3.1.0-rw-r--r-- 1 root root 26370776 10月 11 22:32 libopencv_imgproc.so.3.1.0
查看是否加进了环境变量:
echo $LD_LIBRARY_PATH
结果
/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:/home/huhui/anaconda2/lib:
没有/usr/local/lib
目录,于是跟之前方法一样加上。注意要在同一个窗口操作,我之前在另一个窗口操作的,结果没有添加成功。
sudo vim ~/.bashrcexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHsource ~/.bashrc
再次编译这个错误没有了,是另外的错误:
找不到google的库。
原来是makefile里写链接的时候把-lglog写成了-glog(好傻)。改过来之后,还差blas的库找不到,于是一样的方法,发现它在/usr/lib/
里,所以加到环境变量里。发现还有错,就在g++编译选项中加一条-lblas就可以了。终于编译成功!
12. 运行自己写的python代码
代码在./caffe/python/generate_my_models.py
首先加入环境变量:
sudo vim ~/.bashrcexport PYTHONPATH=/home/huhui/caffe/python
注意后面没有caffe。
import caffe
时:
ImportError: No module named _caffe
我直接make pycaffe
就解决了。
然后报错:
ImportError: No module named google.protobuf.internal
以下是之前试过的解决方法,没有用。
//============================================================
/*********************************************************************************
*还是这样靠谱:http://blog.csdn.net/wuzuyu365/article/details/52431062
*我装的是anaconda2, 解决方法是在其中安装protobuf最新版本
*
*
*sudo chmod 777 -R anaconda2
*conda install protobuf
*
*
*这样就解决了
*原来是没有装python版本的protobuf。
*
*
*
*参考文章http://blog.sina.com.cn/s/blog_7948610e0100rwux.html
*http://www.cnblogs.com/empty16/p/4828476.html
*
*
*sudo pip install --upgrade protobuf
*pip install -U scikit-image
*
*现在import caffe
时报错Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or *libmkl_def.so.
。参考https://github.com/BVLC/caffe/issues/3884:
*(Are you using Anaconda? The problem might not be related with caffe. Try
*
*python -c ‘import sklearn.linear_model.tests.test_randomized_l1’
*
*If you can reproduce the error, that means the problem is not related with caffe but anaconda.
*The latest version of numpy and scipy uses mkl by default. If you want to disable that, you can *execute
*
*conda install nomkl
*
*that solves my problem. Hope that can solve yours, too.
*More details:
*scikit-learn/scikit-learn#5046
*https://www.continuum.io/blog/developer-blog/anaconda-25-release-now-mkl-optimizations
*)
*
*
*python -c 'import sklearn.linear_model.tests.test_randomized_l1'
*conda install nomkl
*
*重新进入caffe文件夹下编译,发现编不过了:
*
*
*In file included from src/caffe/util/signal_handler.cpp:7:0:
*./include/caffe/util/signal_handler.h:4:34: fatal error: caffe/proto/caffe.pb.h: No such file or *directory
*compilation terminated.
*Makefile:576: recipe for target '.build_debug/src/caffe/util/signal_handler.o' failed
*make: *** [.build_debug/src/caffe/util/signal_handler.o] Error 1
*make: *** Waiting for unfinished jobs....
*In file included from ./include/caffe/util/hdf5.hpp:9:0,
* from src/caffe/util/hdf5.cpp:1:
*./include/caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: No such file or directory
*compilation terminated.
*Makefile:576: recipe for target '.build_debug/src/caffe/util/hdf5.o' failed
*make: *** [.build_debug/src/caffe/util/hdf5.o] Error 1
*
*
*看来是protobuf的版本没安装对。
*执行
*
*
* sudo apt-get remove libprotobuf-dev
*
*卸载旧版本,再重试。
******************************************************************************/
//=================================================================================
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
以下是该问题的正确解决方法:
第一个碰到的问题就是旧版本和新版本都卸载不干净,编译的时候完全通不过,报错如下:
proto/caffe.pb.h:17:2: error: #error This file was generated by an older version of protoc
解决方法:
1. 先查找libprotobuf
find / -name “libprotobuf”
发现
huhui@huhui-ubuntu1604:~/Downloads/protobuf-2.6.1$ la -al /usr/lib/x86_64-linux-gnu/ | grep proto-rw-r--r-- 1 root root 395968 3月 30 2016 libmirprotobuf.so.3-rw-r--r-- 1 root root 2362284 10月 24 2015 libprotobuf.a-rw-r--r-- 1 root root 395748 10月 24 2015 libprotobuf-lite.alrwxrwxrwx 1 root root 25 10月 24 2015 libprotobuf-lite.so -> libprotobuf-lite.so.9.0.1lrwxrwxrwx 1 root root 25 10月 11 15:46 libprotobuf-lite.so.9 -> libprotobuf-lite.so.9.0.1-rw-r--r-- 1 root root 199176 10月 24 2015 libprotobuf-lite.so.9.0.1lrwxrwxrwx 1 root root 20 10月 24 2015 libprotobuf.so -> libprotobuf.so.9.0.1lrwxrwxrwx 1 root root 20 10月 11 15:46 libprotobuf.so.9 -> libprotobuf.so.9.0.1-rw-r--r-- 1 root root 1170328 10月 24 2015 libprotobuf.so.9.0.1lrwxrwxrwx 1 root root 18 10月 24 2015 libprotoc.so.9 -> libprotoc.so.9.0.1-rw-r--r-- 1 root root 1036544 10月 24 2015 libprotoc.so.9.0.1huhui@huhui-ubuntu1604:~/Downloads/protobuf-2.6.1$ huhui@huhui-ubuntu1604:~/Downloads/protobuf-2.6.1$ huhui@huhui-ubuntu1604:~/Downloads/protobuf-2.6.1$ la -al /home/huhui/anaconda2/lib/ | grep proto-rw-r--r-- 1 huhui huhui 15062152 7月 31 04:07 libprotobuf.a-rwxr-xr-x 1 huhui huhui 983 10月 12 19:12 libprotobuf.la-rw-r--r-- 1 huhui huhui 1277358 7月 31 04:07 libprotobuf-lite.a-rwxr-xr-x 1 huhui huhui 1018 10月 12 19:12 libprotobuf-lite.lalrwxrwxrwx 1 huhui huhui 26 10月 12 19:12 libprotobuf-lite.so -> libprotobuf-lite.so.10.0.0lrwxrwxrwx 1 huhui huhui 26 10月 12 19:12 libprotobuf-lite.so.10 -> libprotobuf-lite.so.10.0.0-rwxr-xr-x 1 huhui huhui 753692 7月 31 04:07 libprotobuf-lite.so.10.0.0lrwxrwxrwx 1 huhui huhui 21 10月 12 19:12 libprotobuf.so -> libprotobuf.so.10.0.0lrwxrwxrwx 1 huhui huhui 21 10月 12 19:12 libprotobuf.so.10 -> libprotobuf.so.10.0.0-rwxr-xr-x 1 huhui huhui 7313964 7月 31 04:07 libprotobuf.so.10.0.0-rw-r--r-- 1 huhui huhui 13617312 7月 31 04:07 libprotoc.a-rwxr-xr-x 1 huhui huhui 1010 10月 12 19:12 libprotoc.lalrwxrwxrwx 1 huhui huhui 19 10月 12 19:12 libprotoc.so -> libprotoc.so.10.0.0lrwxrwxrwx 1 huhui huhui 19 10月 12 19:12 libprotoc.so.10 -> libprotoc.so.10.0.0-rwxr-xr-x 1 huhui huhui 4591133 7月 31 04:07 libprotoc.so.10.0.0
发现目前存在两个 protobuf 版本,分别是 /home/huhui/anaconda2/lib/libprotoc.so.10 与 /usr/lib/x86_64-linux-gnu/libprotoc.so.9。
因此需要删除新版本的 /home/huhui/anaconda2/lib/libprotoc.so.10
sudo rm -rf /home/huhui/anaconda2
然后按照前面步骤,重装 python,问题解决;
现在是第二个问题,就是回到了开始的状态,caffe内部编译都可以通过,但运行python会报protobuf版本不一样的错。(其实如果不是之前按照错误的方法解决问题,全部搞乱了,前面一步是不需要的。)以下是正确解决方法:
(1)执行protoc --version
查看原始protobuf版本,发现是2.6.1。
(2)从https://github.com/google/protobuf/tree/v2.6.1上下载protobuf-2.6.1.zip,解压并进入protobuf-2.6.1/python目录。(如果是刚开始就遇到这个问题可能是不需要下载的,可以找找看,当然我不确定,因为没试过。)
(2)按照 README.txt 中步骤执行以下操作,安装python 版本的 protobuf, 具体如下:
python setup.py buildpython setup.py google_testpython setup.py install
结果:
Finished processing dependencies for protobuf==2.6.1
python版本的protobuf与C++版本的版本号相同,都为2.6.1。
再回去编译,就可以通过了!
还有问题,就是opencv的库cv2调不了。
原因是没装python-opencv
package. sudo apt-get install python-opencv
现在再运行,发现还是找不到cv2,所以我们找下这个库在哪里:
find / -name "*cv2*so"
有用的就是这两个:
/usr/lib/python2.7/dist-packages/cv2.x86_64-linux-gnu.so/usr/local/lib/python2.7/dist-packages/cv2.so
但是我不知道是哪个。我就先把这两个路径先加到PYTHON文件中去:
sys.path.append('/usr/lib/python2.7/dist-packages/')sys.path.append('/usr/local/lib/python2.7/dist-packages/')
发现可以找到了。然后分别注释掉这两句发现起作用的是后面一个路径,即
sys.path.append('/usr/local/lib/python2.7/dist-packages/')
所以只需要保留这一句就好了。(当然一眼就能看出来的同学就不用这么试啦)
现在再运行python的程序,发现调不了cv。
ImportError: No module named cv
import numpy的时候出现:
AttributeError: ‘module’ object has no attribute ‘bool_’
这个问题是把PYTHONPATH配置到了caffe-master/python/caffe底下,应该配置到caffe-master/python里就好了。一定要谨慎配置PYTHONPATH,否则容易导致其他的问题
- caffe: Ubuntu16.04 + cuda8.0 + cudnn8.0 + opencv3.1.0 + python2.7 + matlab2014b + blas(mkl)
- caffe--ubuntu16.04+cuda8.0+opencv3.0+python2.7(Anaconda)+matlab(台式机,独显为GTXNVIDIA1060)AN3.4.
- 看这一篇就够了ubuntu16.04,cuda8.0,cudnnV5.1,python2.7,opencv3.3+contrib,caffe
- Ubuntu14.04+搜狗输入法+Cuda+opencv3.0+matlab2014b+mkl+caffe 安装
- 【caffe】ubuntu16.04+CUDA8.0+OpenCV3.0+Caffe 安装记录
- Ubuntu16.04+gtx1060+cuda8.0+cudnn8.0+tensorflow安装
- 安装ubuntu16.04+cuda8.0+caffe+python+matlab+opencv3.0
- Ubuntu16.04下Caffe环境搭建:cuda8.0 + opencv3.2.0
- GTX1080+Ubuntu16.04+Cuda8.0+Anaconda2+Opencv3+Matlab2014a+caffe
- ubuntu16.04+cuda8.0+opencv3.1+GTX1080配置caffe
- ubuntu16.04+caffe+cuda8.0+cudnn5.1+opencv3.1配置
- Ubuntu16.04,CUDA8.0,Caffe-ssd,OpenCV3.1配置指南
- ubuntu16.04+cuda8.0+cudnn6+opencv3.1 搭建caffe tensorflow
- 不纠结——caffe安装之旅(ubuntu16.10+gcc4.9+python2.7+cuda8.0+opencv3)
- CAFFE+1080Ti+CUDA8.0+CUDNN8.0+OPENCV3.0+MATLAB安装教程
- Ubuntu16.04 opencv3 python2.7 caffe(CPU_ONLY)
- Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
- ubuntu16.04+Cuda8.0+CuDnn v5+OpenCV3.1.0+Matlab2014+Python+Caffe安装
- jQuery plugin: Autocomplete 参数及实例
- LeetCode OJ-35-Search Insert Position
- count, sum和 if,case when
- css背景渐变兼容性问题解决
- 很好用的Java web分页工具类
- caffe: Ubuntu16.04 + cuda8.0 + cudnn8.0 + opencv3.1.0 + python2.7 + matlab2014b + blas(mkl)
- Hibernate从入门到精通(二)Hibernate实例演示
- 【论文笔记】Recover Canonical-View Faces in the Wild with Deep Neural Network
- 《运维之下》——第九章:网络成长之路
- vmware FAQ
- 400% 的飞跃-web 页面加载速度优化实战
- java中HashMap详解
- android fragment
- 浅谈浏览器端JavaScript跨域解决方法