深度學習(五)caffe環境搭建

ubuntu 系統下的Caffe環境搭建

原文地址:http://blog.csdn.net/hjimce/article/details/48781693

作者:hjimce

對於caffe的系統一般使用Linux系統,當然也有windows版本的caffe,不過如果你一開始使用了windows下面的caffe,後面學習的過程中,會經常遇到各種錯誤,網上下載的一些源碼、模型也往往不能快速的跑起來,因為貌似caffe的官方只提供了linux版本,而且caffe在不斷的快速迭代更新中,如果不使用原版的話,後面編譯出現什麼問題,自己怎麼錯的,自己都不知道。本篇博文主要講解快速搭建caffe環境:

電腦系統:ubuntu 14.04

顯卡:GTX 850

在ubuntu下要完整的搭建caffe,個人感覺最難的一步就是cuda的安裝了,特別是對於雙顯卡的電腦來說,很容易黑屏、無法登陸圖形界面,這個我安裝了n久,都沒裝成功,因為我的電腦筆記本雙顯卡,每次裝完cuda就黑屏,網上的教程一大堆,但都中看不中用,導致我重裝了二三十次的系統,最後才成功。這裡為了講caffe的安裝,我們先不使用GPU,進行安裝測試,因為沒有GPU我們依舊可以跑caffe,只是速度比較慢而已。

1、安裝caffe所需要的依賴庫

命令:

[python] view plain copy

  1. sudoapt-getinstalllibatlas-base-dev
  2. sudoapt-getinstalllibprotobuf-devlibleveldb-devlibsnappy-devlibopencv-devlibboost-all-devlibhdf5-serial-dev
  3. sudoapt-getinstalllibgflags-devlibgoogle-glog-devliblmdb-devprotobuf-compiler

這些庫要安裝挺久的,請耐心等待。

2、下載caffe。

到github上下載caffe:https://github.com/BVLC/caffe。下載完成後,解壓caffe源碼包。解壓後,我們打開文件,可以看到caffe的源碼包如下:

3、配置Make.config 文件。caffe文件解壓後,文件夾下面有一個Makefile.config.example文件,我們需要對這個文件進行重命名為:Make.config 。也就是去掉後綴example。然後我們打開這個文件,可以看到如下內容:

然後我們把:#CPU_ONLY:=1,那一行的注釋符號去掉:CPU_ONLY:=1。這是因為我們沒有安裝CUDA,還不能使用gpu,所以我們把配置改為只使用cpu。

4、編譯caffe。

方案一:

(1)在完成Make.config配置後,我們輸入命令:

[python] view plain copy

  1. makeall

進行caffe源碼編譯.這一步有可能遇到如下錯誤:

[cpp] view plain copy

  1. caffe/proto/caffe.pb.h:Nosuchfileordirectory

如果出現這個錯誤,那麼輸入命令:[cpp] view plain copy

  1. protocsrc/caffe/proto/caffe.proto--cpp_out=.
  2. mkdirinclude/caffe/proto
  3. mvsrc/caffe/proto/caffe.pb.hinclude/caffe/proto

然後在進行make all 就可以了

(2)編譯完成後,在安裝Python介面,輸入命令:

[python] view plain copy

  1. makepycaffe

這個如果不使用python介面,調用caffe模型的話也可以不用安裝,不過建議還是搞一下,就一句話的事。完事後,我們會發現caffe源碼目錄下,多了一個build文件,這個文件下面有個tools,打開這個文件夾:

這個文件夾下面的工具可是個好東西啊,以後我們會經常用到這些可執行文件,最常用的就是可執行文件:caffe,我們只要調用這個工具,就可以進行訓練。

(3)接著編譯test文件夾下面的源碼。命令如下:

[python] view plain copy

  1. maketest
  2. makeruntest

採用這種方案一般沒問題,不過我在使用c++調用的時候,會使用到鏈接庫:libcaffe.so.1.0.0-rc3,這種方法編譯後沒有生成這個文件;經過google查找,發現採用cmake編譯,才會生成libcaffe.so文件

方案二:直接採用cmake:

[cpp] view plain copy

  1. mkdirbuild
  2. cdbuild
  3. cmake..
  4. makeall-j8

5、測試階段

安裝完了,自然要測試一下能不能用咯。首先cd到caffe目錄,然後輸入命令:

[python] view plain copy

  1. shdata/mnist/get_mnist.sh
  2. shexamples/mnist/create_mnist.sh
  3. vimexamples/mnist/lenet_solver.prototxt

把lenet_solver.prototxt裡面的solver_mode 改為 CPU。因為我們還沒裝GPU,暫時只使用CPU就好了。

然後我們運行腳本:

[python] view plain copy

  1. ./examples/mnist/train_lenet.sh

這個時候,如果成功的話,就會開始跑起來:

說明:如果在使用caffe、或者編譯安裝caffe過程中,出現如下錯誤:

[python] view plain copy

  1. CXX/LD-o.build_release/tools/convert_imageset.bin
  2. .build_release/lib/libcaffe.so:undefinedreferencetocv::imread(cv::Stringconst&,int)".build_release/lib/libcaffe.so:undefinedreferencetocv::imencode(cv::Stringconst&,cv::_InputArrayconst&,std::vector>&,std::vector>const&)"

那麼請修改上面的Makefile文件(不是Makefile.config):[python] view plain copy

  1. LIBRARIES+=gloggflagsprotobufleveldbsnappy
  2. lmdbboost_systemhdf5_hlhdf5m
  3. opencv_coreopencv_highguiopencv_imgprocopencv_imgcodecs

也就是在libraries後面,加上opencv的相關庫文件。

接著就開始caffe搞起吧,推薦個caffe模型網站:https://github.com/BVLC/caffe/wiki/Model-Zoo。本來個人不是很喜歡caffe的,就是因為這個網站吸引了我,這個網站可以搞到好多caffe模型、源碼,非常適合於我們學習。

二、在Eclipse中使用編譯調試caffe

1、首先就是安裝Eclipse,然後安裝c++開發插件,這個可以百度搜一下,eclipse下面怎麼進行c++開發。

2.導入caffe makefile工程到eclipse (由於是英文版,下面描述也用英文,省的翻譯,方便大家調試)(1)File→New→Project→C/C++ →Makefile Project with Existing Code.(2)Create a new Makefile Project from existing codeProjectname:caffe-masterExisting code location:/home/user/caffe-workspace/caffe-masterLanguage:choose C and C++Toolchain:choose Linux GCC(3)Then click on caffe-master in Project Explorer (set Window→Open Perspective → C/C++).

(4)Now Go File → Properties → Run/Debug settings.Click New.., and choose C/C++ application(5)Fill launch configurationproperties· Arguments:fill train –solver=examples/mnist/lenet_solver.prototxtand change working directory from default to /home/user/caffe-workspace/caffe-master(change to your own directory)(6)Now you can use debug caffe code: Run-> Debug

三、C++函數調用相關路徑,makefile

[python] view plain copy

  1. CC=g++
  2. CXXFLAGS=-O2-Wall-D__STDC_CONSTANT_MACROS
  3. INCLUDE=-I/usr/local/cuda/include-I.-I/usr/local/cuda/include-I/home/hjimce/caffe/include/-I/home/hjimce/caffe/src/
  4. LIBRARY=-L/usr/local/x86_64-linux-gnu/-lprotobuf
  5. -L/usr/lib/x86_64-linux-gnu/-lglog
  6. -L/usr/local/cuda/lib64/-lcudart-lcublas-lcurand
  7. -L/usr/local/lib/-lm-lpthread-lavutil-lavformat-lavcodec-lswscale-lopencv_core-lopencv_imgproc-lopencv_highgui
  8. -L/usr/lib/python2.7/config-x86_64-linux-gnu/-lpython2.7
  9. -L/sur/lib32/-lrt
  10. -L../../caffe/build/lib/-lcaffe
  11. all:
  12. $(CC)$(INCLUDE)$(OBJS)testcpp.cpp-oexercise$(LIBRARY)

windows下的caffe環境搭建

最近在ubuntu搞了一個月的caffe,總感覺很不爽,因為ubuntn下面的c++集成開發工具,eclipse用起來沒有vs爽,因為對caffe的函數名不是很熟悉,所以需要藉助vs的c++助手。然後前一個月大部分也是調用pycaffe,但是最近感覺需要對caffe的c++函數比較熟悉,才能把自己的能力進一步提高,於是就開始搞起了windows 下的caffe,藉助vs的強大功能,快速學習caffe。一開始採用vs2012,最後各種錯誤,最後改成vs2013很容易就編譯成功了。

最後推薦一個windows下caffe安裝網站:http://thirdeyesqueegee.com/deepdream/2015/07/13/running-deep-dream-on-windows-with-full-cuda-acceleration/ 這個包含了python的集成開發環境anaconda,caffe的全套功能。

************作者:hjimce 時間:2015.10.10 聯繫QQ:1393852684 原創文章,轉載請保留原文地址、作者等信息***************

附錄:在使用pycaffe遇到如下錯誤

[python] view plain copy

  1. raiseValueError("Meanshapeincompatiblewithinputshape.")
  2. ValueError:Meanshapeincompatiblewithinputshape.

那麼把./python/caffe/io.py文件夾下面的代碼:[python] view plain copy

  1. ifms!=self.inputs[in_][1:]:
  2. raiseValueError("Meanshapeincompatiblewithinputshape.")

改成:[python] view plain copy

  1. ifms!=self.inputs[in_][1:]:
  2. print(self.inputs[in_])
  3. in_shape=self.inputs[in_][1:]
  4. m_min,m_max=mean.min(),mean.max()
  5. normal_mean=(mean-m_min)/(m_max-m_min)
  6. mean=resize_image(normal_mean.transpose((1,2,0)),
  7. in_shape[1:]).transpose((2,0,1))*
  8. (m_max-m_min)+m_min
  9. #raiseValueError("Meanshapeincompatiblewithinputshape.")

推薦閱讀:

無量壽經科注第四回學習班  (第一六九集)
無量壽經科注第四回學習班  (第二O九集)
學習過築壇的人生(創13:1
值得每個男生學習的4個撩妹套路
學習吉他分解和弦的演奏

TAG:學習 | 環境 | 深度學習 | 深度 |