虛擬機下Ubuntu安裝CPU版本的caffe

安裝環境:ubuntu14.04+CUDA_7.5.18


    由於虛擬機下的Ubuntu系統一般不包含GPU,故這次安裝時爲了在無GUP環境下運行caffe。 有GPU安裝caffe與無GPU安裝caffe的區別一般就兩點:

1.安裝CUDA的時候不安裝顯卡驅動;

2.最後安裝好caffe,運行程序時,將相關配置文件改爲CPU運行模式,而不是GPU運行模式。


    打開終端,


    安裝必要的環境

sudo apt-get update #更新軟件列表 
sudo apt-get upgrade #更新軟件 
sudo apt-get install build-essential #安裝build essentials


    安裝最新版本的kernel headers

sudo apt-get install linux-headers-`uname -r`


    安裝CUDA

    去英偉達官網下載,網址如下:https://developer.nvidia.com/cuda-downloads




    注意:最好直接在ubuntu系統上下載,如果先下載到windows系統,然後再複製到ubuntu系統下,可能會出現問題。

    

    然後切換到下載目錄,安裝。命令如下:

sudo sh cuda_7.5.18_linux.run

    說明:安裝的過程中會顯示最終用戶許可協議(EULA),很長,可以按‘q’退出閱讀,然後安裝的時候不要安裝顯卡驅動,具體如下:

Accept the EULA 
Do NOT install the graphics carddrivers 
Install the toolkit (leave path at default) 
Install symbolic link Install samples (leave path at default)




    安裝完之後更新相應的庫路徑

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc 
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib' >> ~/.bashrc 
source ~/.bashrc

    安裝必要的庫

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml

sudo easy_install pillow

    下載caffe

cd ~
git clone https://github.com/BVLC/caffe.git


    安裝python相關的依賴庫

cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install

    增加符號鏈接:

sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy


    修改Makefile.config

    先將Makefile.config.example複製爲Makefile.config,命令爲:

cp Makefile.config.example Makefile.config


    用gedit打開Makefile.config(或者直接用vim在終端中打開修改也可以)

    1)去掉 # CPU_ONLY: = 1 的註釋 



    2)PYTHON_INCLUDE下把

/usr/lib/python2.7/dist-packages/numpy/core/include
    改成:

/usr/local/lib/python2.7/dist-packages/numpy/core/include

    



    編譯caffe

make pycaffe
make all
make test


    可以編譯成功,caffe基本上就已經安裝成功了。

    

    接下來來測試一下吧。

   

    下載imagenet的caffe模型和label

./scripts/download_model_binary.py models/bvlc_reference_caffenet
./data/ilsvrc12/get_ilsvrc_aux.sh


    修改python文件夾下的classify.py文件,在裏面添加:

    parser.add_argument(
        "--print_results",
        action='store_true',
        help="Write output text to stdout rather than serializing to a file."
)

    最後測試一下是否安裝成功。

 

    回到caffe目錄下:

cd ~/caffe

    然後鍵入如下命令:

python python/classify.py --print_results examples/images/cat.jpg foo

    正常的結果應該顯示如下:

[('tabby', '0.27933'), ('tiger cat', '0.21915'), ('Egyptiancat', '0.16064'), ('lynx', '0.12844'), ('kit fox', '0.05155')]


    如果顯示不正常,顯示瞭如下信息:

    ValueError: Mean shape incompatible with input shape


    那麼

    打開python/caffe下的io.py文件,

    將


    替換爲:

if ms != self.inputs[in_][1:]:
    print(self.inputs[in_])
    in_shape = self.inputs[in_][1:]
    m_min, m_max = mean.min(), mean.max()
    normal_mean = (mean - m_min) / (m_max - m_min)
    mean = resize_image(normal_mean.transpose((1,2,0)),in_shape[1:]).transpose((2,0,1)) * (m_max - m_min) + m_min
    #raise ValueError('Mean shape incompatible with input shape.')


    按照官方給的教程這樣做了之後,我又重新鍵入如下命令運行了一遍。

python python/classify.py --print_results examples/images/cat.jpg foo

但是發現又出現瞭如下錯誤:

Classifying 1 inputs.

Traceback (most recent call last):

 File "python/classify.py", line 145, in <module>

   main(sys.argv)

 File "python/classify.py", line 136, in main

   predictions = classifier.predict(inputs, not args.center_only)

 File "/home/he/caffe/python/caffe/classifier.py", line 89, inpredict

   caffe_in[ix] = self.transformer.preprocess(self.inputs[0], in_)

 File "/home/he/caffe/python/caffe/io.py", line 159, inpreprocess

   caffe_in -= mean

ValueError: operands could not be broadcasttogether with shapes (3,227,227) (3,256,256) (3,227,227)



    但是,實際上,caffe安裝已經成功了。這個錯誤不是caffe安裝錯誤產生的,而應該是測試代碼的原因。

 

    不去管這個問題,換一種測試方法。

 

    其實caffe是否安裝成功的測試方法有好幾種。

    方法1)

    命令行進入caffe/python路徑下,然後輸入“python”,進入python環境,然後輸入“import caffe”,如果不報錯,則說明caffe安裝成功,如下圖:


    方法2)

    使用MNIST手寫數據集測試。

    依次輸入如下命令:

cd ~/caffe (or whatever you called your Caffe directory)
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh

    然後編輯examples/mnist文件夾下的lenet_solver.prototxt文件,將solver_mode模式從GPU改爲CPU。

    最後運行:

./examples/mnist/train_lenet.sh


    可以看到已經開始訓練了,如下圖:





    總結:安裝caffe真的挺麻煩,前前後後安裝了好久,期間出現各種問題,所以安裝caffe一定要耐心一點。相比於caffe,谷歌的深度學習框架Tensorflow的安裝就簡單多了,不要那麼多步驟。



參考文獻:

[新手學Caffe之一]Ubuntu無GPU環境下Caffe安裝

Ubuntu 14.04 VirtualBox VM








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章