安了好久的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
执行完此条命令之后会出现如下图某些包无法下载,根据提示执行命令:
apt-get update --fix-missing
apt-get upgrade
二、下载caffe源码
使用git指令下载caffe源码,如果还没有安装git,见该篇文章:
梦里寻梦:(三)Ubuntu 安装git及密钥配置zhuanlan.zhihu.com再执行下面指令下载caffe源码:
git clone git://github.com/BVLC/caffe.git
如果下载速度还是慢,建议在git上fork后,用G码云下载,这又是另一个故事了。
三、编译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前面的#号:
![5745f464c6e88e0b4e33496c83955dc6.png](https://i-blog.csdnimg.cn/blog_migrate/2a423646fe667c968c5eb3e704b13c55.png)
3)配置引用文件路径:
将原来的内容:
![65a0ac3771b9b13c78fd6845ea13c95a.png](https://i-blog.csdnimg.cn/blog_migrate/edc8cc307cd504d59eeb6ad1a03183e2.png)
替换为:
![ad578ead36947cb84065941f90f2d1ea.png](https://i-blog.csdnimg.cn/blog_migrate/f477590e77387937701ef94205706643.png)
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
执行完make runtest指令后,会出现下面的图,则代表caffe已经编译完成。
![75c6301bf43a8df46dc2812aa8a4790b.png](https://i-blog.csdnimg.cn/blog_migrate/36ec21887013991671b898b8abbb9736.jpeg)
四、编译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.comfor 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
如下图所示
![3ca5d5c7ca2ca13cc10736e55212e9bf.png](https://i-blog.csdnimg.cn/blog_migrate/55fee2f2450099e021c7d2d846f6b885.jpeg)
保存文件后关闭,然后输入下面语句,使环境变量生效:
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
![11638aceb641799b7a0bbe3002bbd8b8.png](https://i-blog.csdnimg.cn/blog_migrate/bbc3cf419cfd1f9d7a60314f6eebc893.png)
说明python接口编译成功。如果显示no model named caffe则说明python接口编译失败,重新检查上述步骤或百度解决。至此整个caffe安装编译的过程就全部结束了。
文章参考:https://blog.csdn.net/pangyunsheng/article/details/79418896
文章参考:https://www.cnblogs.com/acgoto/p/11570188.html