linux下对caffe和caffe opencv3.1这些库的调用怎么编译

1212人阅读
深度学习(28)
简单的说,caffe并不像opencv那样。有个官方的例程,可以让小伙伴们方便的入手。正因为如此,本文将详细讲解如何在linux下在自己写的工程中调用caffe库。
本文测试平台Ubuntu14.04+corei7+TitanX
如果自己的caffe是用CMakeLists编译安装的,那么就会在/usr/local/lib/cmake/下方生成相应的.cmake的配置文件,这样在其他程序调用CMakeLists的时候就可以,就可以根据这些.cmake文件来找到需要调用的库。
这样的话,可以运行如下的CMakeLists来编译自己的调用了caffe库的程序
cmake_minimum_required(VERSION 2.8)
find_package(Caffe)
include_directories(${Caffe_INCLUDE_DIRS})
add_definitions(${Caffe_DEFINITIONS})
add_executable(caffeinated_application main.cpp)
target_link_libraries(caffeinated_application ${Caffe_LIBRARIES})
只调用opencv的CMakeLists
cmake_minimum_required (VERSION 2.8)
PROJECT(main)
# Requires OpenCV v2.4.1 or later
FIND_PACKAGE( OpenCV REQUIRED )
IF (${OpenCV_VERSION} VERSION_LESS 2.4.1)
MESSAGE(FATAL_ERROR &OpenCV version is not compatible : ${OpenCV_VERSION}. requires atleast OpenCV v2.4.1&)
ADD_EXECUTABLE( ${PROJECT_NAME} ${SRC} )
TARGET_LINK_LIBRARIES( ${PROJECT_NAME}
${OpenCV_LIBS} )
很不巧,自己的caffe是根据Makefile.config编译的,那么这时候就需要自己指定相应的库的路径了,CMakeLists如下,其中opencv调用的库根据自己的需要添加,将cafferoot替换为自己的caffe根目录,opencvroot替换为自己的opencv根目录
cmake_minimum_required (VERSION 2.8)
project (classification)
add_executable(classification classification.cpp)
include_directories ( /cafferoot/include
/usr/local/include
/usr/local/cuda/include )
target_link_libraries(classification / cafferoot /build/lib/libcaffe.so
/opencvroot /build/lib/libopencv_highgui.so
/ opencvroot /build/lib/libopencv_core.so
/ opencvroot /build/lib/libopencv_imgproc.so
/usr/local/lib/libglog.so
/usr/lib/x86_64-linux-gnu/libboost_system.so
实验测试:
为了测试刚才的CMakeLists的可行性,本文对caffe自带的cafferoot/examples/cpp_classification/(cafferoot为自己电脑的caffe安装的根目录)下面的classification.cpp进行编译,生成相应的exe。
cd cafferoot/examples/cpp_classification/
mkdir build
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:68839次
积分:1419
积分:1419
排名:千里之外
原创:51篇
评论:326条
(2)(3)(8)(3)(10)(5)(3)(14)(4)(3)(1)caffe在笔记本ubuntu10.04 64位下的无GPU安装&&& 笔者花了很长时间才装完,主要是cuda安装和opencv安装比较费劲,cuda找不到32位的安装包只好重装64位的ubuntu系统,opencv也是尝试了很久才解决,这里建议用2.4.9版本。其实如果没用GPU的话不需要安装cuda,不过为了后续兼容性的考虑,系统强烈建议64位的。下面是对自己的安装过程记录备忘,有些主要参考网上的文章,所以有些过程就直接用了原来文章中的内容。caffe在git上的源码:/BVLC/caffe环境:&&& ubuntu 14.04 64位&&& 无GPU准备工作:*首先验证你是否有nvidia的显卡(/cuda-gpus这个网站查看你是否有支持gpu的显卡):$ lspci | grep -i nvidia &*查看linux发行版本uname -m && cat /etc/*release看第一行*看gcc版本$ gcc --version Step1、安装cuda(无GPU安装可以直接跳过这一步,所以这里直接跳过。要说明的是cuda 32位尚未找到合适的安装包,所以这里的linux要64位的)*在cuda官网(/cuda-downloads#linux)下载对应版本.*下载完成之后可以使用如下命令安装它,注意文件名修改为cuda-repo-ubuntu-14_amd64.deb$ sudo dpkg -i cuda-repo-&distro&_&version&_&architecture&.deb (或者在图形界面下直接双击下载的deb文件)Network Install和Local Install的区别:一个是文件小,在线更新;一个是文件大,可以离线安装。(Q: What is the difference between the Network Installer and the Local Installer?A: The Local Installer has all of the components embedded into it (toolkit, driver, samples). This makes the installer very large, but once downloaded, it can be installed without an internet connection. The Network Installer is a small executable that will only download the necessary components dynamically during the installation so an internet connection is required.) 安装好仓库文件后,更新本地仓库:$ sudo apt-get update最后开始安装cuda以及显卡驱动(安装cuda的同时就会把显卡驱动也全部安装好,这个真的很方便。但是下载的时间有点长。)$ sudo apt-get install cuda &安装完之后你需要设置环境变量:&&& $ export PATH=/usr/local/cuda-6.5/bin:$PATH &&&& $ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH &设置完毕之后,你还可以选择是否安装cuda附带的示例代码(&dir&表示你要安装的位置,你可以将&dir&替换成~):&&& $ cuda-install-samples-6.5.sh &dir& &接下来做一些验证工作(我的电脑没有GPU,所以验证跳过):查看显卡的驱动版本&&& cat /proc/driver/nvidia/version &查看nvcc编译器的版本&&& nvcc -V i &编译cuda的示例代码:&&& cd ~/NVIDIA_CUDA-6.5_Samples &然后make一下编译代码。进入bin路径运行devicequery&&& cd ~/NVIDIA_CUDA-6.5_Samples/bin &&&& ./ deviceQuery &Step2、预装依赖准备Caffe has several dependencies.&&& CUDA is required for GPU mode.&&&&&&& library version 7.0 and the latest driver version are recommended, but 6.* is fine too&&&&&&& 5.5, and 5.0 are compatible but considered legacy&&& BLAS via ATLAS, MKL, or OpenBLAS.&&& Boost &= 1.55&&& OpenCV &= 2.4 including 3.0&&& protobuf, glog, gflags&&& IO libraries hdf5, leveldb, snappy, lmdbPycaffe and Matcaffe interfaces have their own natural needs.&&& For Python Caffe: Python 2.7 or Python 3.3+, numpy (&= 1.7), boost-provided boost.python&&& For MATLAB Caffe: MATLAB with the mex compiler.cuDNN Caffe: for fastest operation Caffe is accelerated by drop-in integration of NVIDIA cuDNN. To speed up your Caffe models, install cuDNN then uncomment the USE_CUDNN := 1 flag in Makefile.config when installing Caffe. Acceleration is automatic. For now cuDNN v1 is integrated but see PR #1731 for v2.CPU-only Caffe: for cold-brewed CPU-only Caffe uncomment the CPU_ONLY := 1 flag in Makefile.config to configure and build Caffe without CUDA. This is helpful for cloud or cluster deployment.(最后一步在编译caffe前会说明)具体操作:下面3个应该在build-essential里了,不过这里保险起见,我先装上了。&&& sudo apt-get install g++&&& sudo apt-get install git&&& sudo apt-get install freeglut3-devbuild-essential:&&& sudo apt-get install build-essential&&& sudo apt-get update安装ATLAS for Ubuntu:&&&& # sudo apt-get install libatlas-base-dev&&&& # sudo apt-get install libprotobuf-dev&&&& # sudo apt-get install libleveldb-dev&&&& # sudo apt-get install libsnappy-dev&&&& # sudo apt-get install libopencv-dev&&&& # sudo apt-get install libboost-all-dev&&&& # sudo apt-get install libhdf5-serial-dev&&&& # sudo apt-get install libgflags-dev&&&& # sudo apt-get install libgoogle-glog-dev&&&& # sudo apt-get install liblmdb-dev&&&& # sudo apt-get install protobuf-compiler安装Opencv:&&&& # cd ~/caffe&&&& # git clone /jayrambhia/Install-OpenCV&&&& # cd Install-OpenCV/Ubuntu&&&& # sudo ./dependencies.sh&&&& # cd 2.4&&&& # sudo sh ./opencv2_4_9.sh*这里有几点要注意的,也是花了很长时间解决的一个坑:&&& 首先2.4.8的源找不到了,所以不要用2.4.8&&& 其次2.4.10编译有问题,不过可以尝试解决下,这里没用这里最好不要自己直接装,因为有很多的依赖,去git clone /jayrambhia/Install-OpenCV或者/jayrambhia/Install-OpenCV都可以下载脚本。这里最新的就是2.4.9,如果要装2.4.10的话把脚本拷贝一份做对应修改就行了。&&& *由于wget opencv2.4.9.zip源文件非常慢,这里的办法是去sourceforge对应下载页面,选择其他服务器下载镜像,可以下载到本地,注意同时修改相应脚本,把wget注释掉。&&& make opencv的时候会报错,这里将脚本的cmake替换为如下:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF ..即加上最后3个,编译ok,然后继续。Step3:编译Caffe下载caffe安装包,下载地址:/BVLC/caffe&&& 解压该压缩包,解压缩命令:&&& unzip /home/liuxiabing/下载/caffe-master.zip &&&& 注:如果解压位置出错了,可以使用以下命令删除该目录及所有的子目录:&&& sudo rm -rf caffe-master &&&& 进入caffe根目录, 首先复制一份Makefile.config,命令:&&& cp Makefile.config.example Makefile.config &&&& 然后修改里面的内容,主要需要修改的参数包括:&&& CPU_ONLY 是否只使用CPU模式,由于我没有NVIDIA的显卡,就没有安装CUDA,因此需要打开这个选项。&&& 其余的一些配置可以根据需要修改:&&& BLAS (使用intel mkl还是OpenBLAS)&&& MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)&&& DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序&&& 完成上述设置后,开始编译: &&&& make all -j4 &&&& make test &&&& make runtest &&& 注意:-j4 是指使用几个线程来同时编译,可以加快速度,j后面的数字可以根据CPU core的个数来决定,如果CPU是4核的,则参数为-j4,也可以不添加这个参数,直接使用“make all”,这样速度可能会慢一点儿。Step4:利用mnist数据集进行测试*运行下载数据的脚本的时候发现mnist数据网站打不开,幸好之前在ufldl实验中保存了一份mnist的数据集,放到data/mnist目录下重命名了一下最后直接运行ok。使用MNIST数据集进行测试&&& Caffe默认情况会安装在$CAFFE_ROOT,就是解压到的那个目录,例如:$ home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html&&& (1)数据预处理&&& 可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:&&& $ cd data/mnist &&&& $ sudo sh ./get_mnist.sh &&&& (2)重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式,执行命令如下: &&& $ sudo sh ./examples/mnist/create_mnist.sh &&&& 生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集&&& 注:新版caffe都需要从根目录上执行,如果使用下列命令执行:&&& # cd examples/mnist &&&& # sudo sh ./create_mnist.sh &&&& 可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found&&& (3)训练mnist&&& 如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为&&&&& solver_mode:CPU,修改后结果如下所示:&&& # solver mode: CPU or GPU &&&& solver_mode: CPU &&&& 修改时可以使用vi编辑命令,如果是只读文件,不能编辑,可以用sudo命令,比如:&&& sudo vi lenet_solver.prototxt &&&&& 先进入命令模式,使用a进入编辑模式,修改完之后,使用esc退出编辑模式,进入末行模式,再使用“:wq”保存修改并退出(“:q!”为退出但不保存修改)&& 修改完成后,再执行下面的命令进行训练:&&& $ cd examples/mnist &&&& $ sudo sh ./train_lenet.sh &最终训练完的模型存储为一个二进制的protobuf文件,CPU模式下训练这样的数据集大概需要20分钟,比较慢。至此,Caffe安装的所有步骤完结。参考:官方安装文档:&&& http://caffe.berkeleyvision.org/installation.htmlcaffe+Ubuntu14.0.4 64bit 环境配置说明(无CUDA,caffe在CPU下运行) :&&& http://blog.csdn.net/liuxiabing150/article/details/(*注意无GPU模式下的配置)全新 ubuntu 14.04 系统安装 caffe:&&& /plus/view.php?aid=356全新 ubuntu 14.04 系统安装 caffe(使用mkl)&&& /plus/view.php?aid=375安装cuda的说明:&&& http://blog.csdn.net/xizero00/article/details/自动安装opencv的脚本:&&& /jayrambhia/Install-OpenCVcaffe安装说明参考:&&& /platero/p/3993877.htmlCaffe 安装配置(CentOS + 无GPU):&&& /articles/uiuA3eCaffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明:&&& /platero/p/3993877.html【泡咖啡1】linux下caffe编译以及python环境配置手记_Python教程_网络编程_码蚁之家_
【泡咖啡1】linux下caffe编译以及python环境配置手记
caffe是一个深度学习的库,相信搞深度学习的话,不是用这个库就是用theano吧。要想使用caffe首先第一步就是要配置好caffe的环境。在这里,我主要说的是在debian的linux环境下如何配置好caffe的库。因为python编写程序比较方便,在文章最后,我还会具体说明如何配置python环境。本文章为本人原创,部分内容整理自网络,若有不妥之处请联系本人删除。非盈利性质网站转载请在文章开头处著名本文作者:77695,来源/cj695/。盈利性质网站转载请与作者联系,联系方式在文章后面。如未联系,本人将通过一切可能且合法的途径追缴相应稿酬。请在转载时保留此声明。
1、前期准备
首先从github上下载好caffe库:/BVLC/caffe,解压,得到这些东西
使用这一句话创建一个makefile.config的副本
接下来就是修改makefile.config,在这个文件里面对应的注释讲的很清楚,需要哪一项,吧对应那一项前面&#&去掉就好了
先拿make all测试,提示错误如下:
make: protoc:命令未找到make: *** [.build_release/src/caffe/proto/caffe.pb.h] 错误 127
2、编译以及安装protoc
那就下载protobuf吧,在github下载,解压/google/protobuf:
$ ./autogen.sh
原来先要安装curl:额,貌似curl安装不成功那就跳过吧。因为curl祈祷的作用就是下载文件,但/files/gtest-1.7.0.zip这个东西还是要下,那就直接下载吧,可能需要科学上网,这个方法那就八仙过海各显省通,我就不赘述。
下载好以后把压缩包移动过去。
找到对应位置注释掉curl
再次运行,提示错误
./autogen.sh: 40: ./autogen.sh: autoreconf: not found
原因是没安装 automake 工具
运行命令安装:sudo apt-get install autoconf automake libtool
再一次./autogen.sh,成功!然后依次运行以下命令
$ ./configure
$ make check
$ make install
执行完make check以后出现:
就说明没什么问题了,就可以继续执行make install
执行完以后切换到caffe目录,先make clean一下,接着make all
还是提示找不到库,
3、安装一系列依赖库
再执行安装一些库:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev,稍等
再执行make clean,接着make all,提示:
./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: 没有那个文件或目录。说明protobuf的库已经差不多了。
4、安装gflags
这里继续安装gflags:/schuhschuh/gflags/archive/master.zip 下载。解压
cd gflags-master mkdir build && cd build export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 make sudo make install在执行第三句话的时候可能会提示版本较低,直接在这里
http://www.cmake.org/install/
下载最新版本的cmake就好了(下载.sh的文件直接运行就可以了)。要配置一下环境变量
然后接着执行下面两条命令,就好了。弄完之后继续切换到caffe目录,先make clean一下,接着make all
./include/caffe/util/mkl_alternate.hpp:11:19: fatal error: cblas.h: 没有那个文件或目录compilation terminated.
说明gflag安装成功了,
5、编译安装ATLAS
接下来开始搞定cblas的问题。BLAS(Basic Linear Algebra Subprograms,基础线性代数程序集)是一个应用程序接口(API)标准。他的实现有很多,caffe用的是其中的三种实现ATLAS, MKL, or OpenBLAS.这里我准备使用ATLAS:http://sourceforge.net/projects/math-atlas/files/ 先下载,解压。按照官方文档写的,依次执行如下命令
首先选择高性能cpu模式:
/usr/bin/cpufreq-selector -g performance然后在ATLAS目录下建立文件夹
mkdir Linux_C2D64SSE3
# create BLDdir
cd Linux_C2D64SSE3
# enter BLDdir
../configure -b 64 -D c -DPentiumCPS=2800 -Fa alg -fPIC --with-netlib-lapack-tarfile=/home/haiyu/Programs_Install/lapack-3.5.0.tgz --prefix=/usr/local/atlas粗体参数需要根据个人系统修改:-b 指定编译出库的类型(32位库还是64位库)&&&&&& -D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz /proc/cpuinfo 得到&&&&&& -Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库&&&&&& --prefix 为安装路径&&&&&& --with-netlib-lapack-tarfile 则是lapack压缩包路径
make build
# tune & build lib
make check
# sanity check correct answer
make ptcheck
# sanity check parallel
# check if lib is fast
make install
# copy libs to install dir
这里还需要一个lapack的库,在这里下载http://www.netlib.org/lapack/,下载之后直接把/home/whaley/dload/lapack-3.4.1.tgz替换成对应的路径就好了
在执行../configure的时候,会提示gfortran:命令未找到,直接用apt-get安装即可。然后make build之后就可以休息去了。等一个小时再过来看吧。
ok。。现在是第二天。昨天晚上凌晨3点的时候终于看到它提示DONE了。这速度。太!&快&!了!继续执行接下来的命令几个可以忽略的就忽略了,然后再切换到CAFFE目录make clean/all,依旧提示
但这个时候在atla的prefix指定的安装路径下已经有include/cblas.h
执行这两条,添加目录到include环境变量
6、安装lmdb
接着make,提示错误lmdb没装
git clone git://gitorious.org/mdb/mdb.git&
cd mdb/libraries/liblmdb&
make && make install&
运行完,再回到caffe目录编译
AR -o .build_release/lib/libcaffe.aLD -o .build_release/lib/libcaffe.so/usr/bin/ld: cannot find -lcblas/usr/bin/ld: cannot find -latlascollect2: error: ld returned 1 exit status
7、安装其他依赖包
解决办法:安装这些包
apt-get install libatlas-devapt-get install liblapack-devapt-get install& libatlas-base-dev
又提示这个错误.build_release/lib/libcaffe.so: undefined reference to `google::protobuf,重新编译protobuf
make uninstallmake clean
./configure --prefix=/usr
make check
make install
搞定,返回caffe,编译成功!!!!!!!!!!!!!此处有掌声!!!!!
然后把目录添加到PYTHON环境变量就行了
export PYTHONPATH=$PYTHONPATH:/home/cj695/protobuf/python/最后还要找到protobuf的Python目录
python setup.py build
python setup.py test
python setup.py install
激动人心的一颗来了!!!!!!!!!!!打开python,import caffe。。这一刻,我哭了!!!!!!!!!!!!!
8、总结一下
耗费两天时间,卡时间比较多的主要有两个地方,首先查错一定要从上往下查。基本上最上面的错误才是最根本的错误;其次,在安装过程中对配置做过的修改一定要记清楚,别自己把安装路径改了结果还不知道是怎么回事。
另外,如果在安装gflags的时候出现问题,可以实验一下用apt-get安装gflag,命令如下:
sudo apt-get install python-gflags
caffe的配置大概也就这些内容,希望这篇文章能够对你有所帮助
上一篇: 下一篇:
联系邮箱:(#改为@)

我要回帖

更多关于 opencv调用caffe模型 的文章

 

随机推荐