安裝環境: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
接下來來測試一下吧。
下載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安裝