虚拟机下Ubuntu安装CPU版本的caffe
安装环境:ubuntu14.04+CUDA_7.5.18 由于虚拟机下的Ubuntu系统一般不包含GPU,故这次安装时为了在无GUP环境下运行caffe。有GPU安装caffe与无GPU安装caffe的区别一般就两点:1.安装CUDA的时候不安装显卡驱动;2.最后安装好caffe,运行程序时,将相关配置文件改为CPU运行模式,而不是GPU运行模式。
安装环境: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安装
Ubuntu 14.04 VirtualBox VM
更多推荐
所有评论(0)