安了好久的GPU版本,最后还是没有成功,只能先安装一个CPU看看效果。

这个过程发现,报错的主要原因还是在于makefile.config的一些内容跟自己电脑不匹配,所以当大家遇到问题的时候,不妨先看看是否这个文件的一些参数配置不对。

因为每个问题网上解决方案都很多,想到我在安装Gpu版本的时候把内核删了,替换另一个内核,结果电脑直接罢工,然后连电脑都要直接重装了、、、、、、

我安装的是anaconda3,不过建立了py2.7的虚拟环境进行搭建。

conda create --name py27 python=2.7
source activate py27
如果要退出:
source deactivate
一、安装依赖包

首先确定你的下载源

gedit /etc/apt/sources.list
建议使用阿里云等下载源。

1 deb http://mirrors.aliyun.com/ubuntu/ xenial main
2 deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
3 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
4 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
5 deb http://mirrors.aliyun.com/ubuntu/ xenial universe
6 deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
7 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
8 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
9 deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
10 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
11 deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
12 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
打开linux命令行,先执行下面指令:

sudo apt-get update
再依次执行以下语句,安装依赖包:

sudo apt-get install libprotobuf-dev
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libgflags-dev
sudo apt-get install libgoogle-glog-dev
sudo apt-get install liblmdb-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install --no-install-recommends libboost-all-dev
执行完此条命令之后会出现如下图某些包无法下载,根据提示执行命令:
/-------------------------------------------------------
1、重新设置root密码
Terminal中输入sudo passwd root,在提示信息后输入root密码两次

2、配置登录信息
打开配置文件
sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在配置中添加
greeter-show-manual-login=true

3、登录
重启后在登录选项中选择login,一次填入用户名(也就是root)和密码即可以root身份登录系统
/-------------------------------------------------------
apt-get upgrade(亲测可用)

apt-get update --fix-missing
二、下载caffe源码

没有安装git的话需要先装一下git
apt-get install git
下载Caffe源码
git clone https://github.com/BVLC/caffe.git

三、编译caffe
1.进入caffe目录下:
cd caffe
2.生成Makefile.config文件:
cp Makefile.config.example Makefile.config
3.修改Makefile.config文件中的配置:
1)编辑Makefile.config文件:

sudo gedit Makefile.config
2)去掉CPU_ONLY:=1前面的#号:

3)配置引用文件路径:
由于Ubuntu16.04文件结构的变化,#Whatever else you find you need goes here.处要改成下面这样:

Whatever else you find you need goes here.

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

4.执行编译,执行以下指令:
make all
make test
make runtest
我编译的过程中报错如下:

CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)’ .build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector<unsigned char, std::allocator >&, std::vector<int, std::allocator > const&)’
.build_release/lib/libcaffe.so: undefined reference to `cv::imdecode(cv::_InputArray const&, int)’
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/convert_imageset.bin] Error 1
一看是opencv相关的,查阅资料,网上各种修改的,幸亏没有照着去搞。最后是通过修改了Makefile.config文件。

因为我查看自己opencv_version的版本是3以上的,估摸问题也在这,如下,OPENCV_VERSION := 3前的#号去掉。

Uncomment if you’re using OpenCV 3

OPENCV_VERSION := 3

(亲测可用)
那是因为你用了opencv 3.x的缘故,只需在Makefile的最后一行加上:

LIBRARIES += glog gflags protobuf leveldb snappy
lmdb boost_system boost_filesystem hdf5_hl hdf5 m
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs opencv_videoio

执行完make runtest指令后,会出现下面的图,则代表caffe已经编译完成。

四、编译python接口
caffe具有python和C++接口,因为比较常用的是python接口,这里演示如何编译python接口。

1.安装pip以及numpy:
sudo apt-get install python-pip
sudo apt-get install python-numpy
2.安装python接口依赖库:
在安装依赖库前,需要先安装gfortran编辑器:

sudo apt-get install gfortran
然后安装依赖库,首先进入caffe目录下的python文件中:

cd caffe/python
安装依赖库:

此处又强烈建议安装pip镜像源,不然速度超级慢,没有安装的去往:

梦里寻梦:(一)同时安装Anaconda2和3,设置国内镜像源

zhuanlan.zhihu.com
图标
for req in $(cat requirements.txt); do pip install $req; done
安装完后,执行下面一条语句,该语句的作用是检查依赖库是否都已经安装成功,如果成功会显示requirement already saitisfied,如果未成功会继续安装:

sudo pip install -r requirements.txt
我在这个过程中会报错,有些内容拉不下来,解决方法是把pip镜像源多添加几个,阿里云、清华什么的都加进去,就解决了。

原作者在执行完上面一条语句后,出现了错误(错误显示为红色字体),错误提示是:command “python setup.py egg_info” failed with error code 1 in XXX。

原因是没有指定ipython的版本,执行下面语句可解决该问题:

sudo pip install ipython==5.3.0
这时,再执行 sudo pip install -r requirements.txt 发现没有了红色字体的错误提示,说明依赖库安装成功。

3.添加环境变量:
打开配置文件bashrc:

sudo gedit ~/.bashrc
在文件的最后面添加:

export PYTHONPATH=~/caffe/python:$PYTHONPATH

保存文件后关闭,然后输入下面语句,使环境变量生效:

source ~/.bashrc
4.编译python接口:
首先进入caffe目录下:

cd ~/caffe
然后开始编译pycaffe:

make pycaffe
这个过程又出现了这个问题:

python/caffe/_caffe.cpp:1:52: fatal error: Python.h: No such file or directory

#include <Python.h> // NOLINT(build/include_alpha)
原因在于caffe找不到Python,还是到makefile.config进行修改:

原文是默认如下
ANACONDA_HOME := $(HOME)/anaconda
修改成自己的地址,比如我是虚拟环境
ANACONDA_HOME := $(HOME)/anaconda3/envs/py27
编译完后,若无错误提示,则说明编译成功。

5.验证python接口:

进入Python环境:
python
import caffe

说明python接口编译成功。如果显示no model named caffe则说明python接口编译失败,重新检查上述步骤或百度解决。至此整个caffe安装编译的过程就全部结束了。

参考文献
https://zhuanlan.zhihu.com/p/127303000