虚拟机下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安装CPU版本的caffe_第1张图片

    注意:最好直接在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)


虚拟机下Ubuntu安装CPU版本的caffe_第2张图片


    安装完之后更新相应的库路径

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 的注释 

虚拟机下Ubuntu安装CPU版本的caffe_第3张图片


    2)PYTHON_INCLUDE下把

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

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

    

虚拟机下Ubuntu安装CPU版本的caffe_第4张图片


    编译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文件,

    将

虚拟机下Ubuntu安装CPU版本的caffe_第5张图片

    替换为:

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

   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)

虚拟机下Ubuntu安装CPU版本的caffe_第6张图片


    但是,实际上,caffe安装已经成功了。这个错误不是caffe安装错误产生的,而应该是测试代码的原因。

 

    不去管这个问题,换一种测试方法。

 

    其实caffe是否安装成功的测试方法有好几种。

    方法1)

    命令行进入caffe/python路径下,然后输入“python”,进入python环境,然后输入“import caffe”,如果不报错,则说明caffe安装成功,如下图:

虚拟机下Ubuntu安装CPU版本的caffe_第7张图片

    方法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


    可以看到已经开始训练了,如下图:

虚拟机下Ubuntu安装CPU版本的caffe_第8张图片




    总结:安装caffe真的挺麻烦,前前后后安装了好久,期间出现各种问题,所以安装caffe一定要耐心一点。相比于caffe,谷歌的深度学习框架Tensorflow的安装就简单多了,不要那么多步骤。



参考文献:

[新手学Caffe之一]Ubuntu无GPU环境下Caffe安装

Ubuntu 14.04 VirtualBox VM








你可能感兴趣的:(机器学习)