我的AI之路(3)--安装Anaconda3 和Caffe

8 篇文章 0 订阅

      安装Caffe之前得安装好支持环境,你可以在Linux下一个个地安装那些编译支持库包,但是那样太麻烦了,Anaconda提供了完整的支持库,下载Caffe源码后编译前修改配置文件,把支持库改为Anaconda的路径即可轻松build,省去按照出错提示一步步安装很多支持库的麻烦。

      最新的Anaconda 5.1 支持Windows、MacOS和Linux,有Python 2.7 version和Python 3.6 version两个版本,分别支持Python 2.7和Python 3.6, 我使用的是64-bit Fedora Linux,并且我打算使用Python 3.6(我觉得Python 3.6的语法上比Python 2.7上更符合一般编程语言的语法描述习惯,另外Python 2.7在2020年将停止支持,所以建议还是使用Python 3.6),因此下载https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh到本地(anaconda.com网速超慢,可以使用国内清华的镜像网站下载,网址是 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive),然后执行 

bash Anaconda3-5.1.0-Linux-x86_64.sh

即可把 anaconda3安装到/home/<username>下,如果你习惯使用Python 2.7,可以下载https://repo.anaconda.com/archive/Anaconda2-5.1.0-Linux-x86_64.sh并安装,安装完后会生成 /home/<username>/anaconda2,所以两个版本实际上是可以同时安装的,并不会冲突,在编译caffe等软件时根据你使用的版本的需要,修改路径配置,指向所需的ananconda版本即可。

      安装好了anaconda3,再安装一些caffe的运行依赖包,Fedora/CentOS/RHEL linux下需安装这些:

     sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel openblas-devel gflags-devel glog-devel lmdb-devel

      对于Ubuntu,还需要安装git和python-dev, protobuf-compiler, 以及以上的库的名字前面须加前缀lib,devel改成dev,再就是libhdf5-serial-dev, libgoogle-glog-dev这几个包名跟Fedora下不一样。

安装完了依赖环境,下面下载Caffe源码。

一般书上推荐使用的git clone https://github.com/bvlc/caffe.git 命令很难把Caffe源码一次性下载下来,我两天内不同时段试了好几次都没成功,老是中途下载中断,于是参考了网上推荐的办法:

      cd /home/<username>/

      mkdir caffe   #创建一个下载的工作目录

     cd caffe

     git init           #创建git本地库

     git fetch https://github.com/bvlc/caffe.git

     如果中途下载中断,可以重复执行上面这个git fetch https://github.com/bvlc/caffe.git命令,虽然使用git fetch每次重新开始下载时也是从0%开始下载,但是前面下载过的部分的速度明显很快,我估计是并没有下载数据而是在核对本地已下载的数据和git repo里的数据,已经下载了就不再重传,因为中断之前已经下载的部分的进度比较快,比如说中断前已经下载了19%,再次执行上面的git fetch https://github.com/bvlc/caffe.git 命令,虽然进度仍然从0%开始,但是很快就达到了19%,然后后面下载的进度就慢了一些,应该就是在真正下载后面的未下载的数据了,我下载时中断了几次,重复执行git fetch命令终于成功下载完全部代码,全部下载完后显示 HEAD   ->FETCH_HEAD,然后执行

    git checkout FETCH_HEAD

可以看到/home/<username>/caffe/下面有了很多源码目录。

接下来以caffe提供的示例配置文件为基础创建配置文件:

cp Makefile.config.example Makefile.config

vi Makefile.config

 

在这个文件中,做如下修改:

CPU_ONLY := 1  #把这前面的注释去掉,先只使用CPU,对于使用GPU,后面熟练了再回头来安装CUDA后打开。

OPENCV_VERSION := 3  #把这前面的注释去掉,我使用最新的opencv3,没办法,我啥都喜欢用最新的版本尝鲜大笑

BLAS := open  #把这里的atlas改为open,意思是使用OpenBlas,因为它的性能比atlas好,几乎接近Intel的MKL并且是开源的

 

把指向Linux系统本身环境Python 2.7的PYTHON_INCLUD注释掉:

# PYTHON_INCLUDE := /usr/include/python2.7 \
#               /usr/lib/python2.7/dist-packages/numpy/core/include

设置NANCONDA_HOME和指向ANACONDA里的PYTHON_INCLUDE, PYTHON_LIB:

ANACONDA_HOME := $HOME/anaconda3
PYTHON_INCLUDE := $ANACONDA_HOME/include \
                $ANACONDA_HOME/include/python3.6m \
                $ANACONDA_HOME/lib/python3.6/site-packages/numpy/core/include

# Uncomment to use Python 3 (default is Python 2)

PYTHON_LIBRARIES := boost_python3 python3.6m

注意保持把指向Linux系统本身环境里的PYTHON_INCLUDE和PYTHON_LIB路径设置注释掉,确保使用anaconda3里面的python

# PYTHON_INCLUDE := /usr/include/python3.6m \
#                 /usr/lib/python3.6/dist-packages/numpy/core/include
# PYTHON_LIB := /usr/lib
PYTHON_LIB := $ANACONDA_HOME/lib

# Whatever else you find you need goes here.
INCLUDE_DIRS := $PYTHON_INCLUDE /usr/local/include

LIBRARY_DIRS := $PYTHON_LIB /usr/local/lib /usr/lib

注意:以上标红色的部分原来都是使用的 $(var)形式取值, 必须改成 $var或者${var}形式,否则后面执行make runtest时总是报错,一些so库找不着,实际上是存在的,上面的路径设置也正确,但是$(x)是执行x命令而不是获取变量x的值,导致出错!这问题也是让我没少喝茶睡觉,后来回头仔细看Makefile.config,发现企图以这$()种形式取值是错误的,原因就在这里敲打

 

多说一点,如果是Ubuntu,还得修改Makefile:

找到
LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
更改最后两项为:

LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

这是因为Ubuntu下使用的包是libhdf5-serial-dev,如果不做以上修改,下面在运行 make runtest 时会报错:

make runtest
.build_release/tools/caffe
.build_release/tools/caffe: error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file or directory

 

Makefile.config配置文件建立和修改完毕后,执行下面的命令编译Caffe源码:

 make -j    # -j 使用多个CPU核同时编译,比不使用多核编译要快,没错误的话,在我本子上没几分钟就编译完了

这时可能报错: g++: command not found

这是因为gcc-c++没有安装,执行下面命令安装:

sudo yum install gcc-c++

然后执行 

make -j

Caffe编译完后执行

make test

make runtest

假若执行make runtest时报错:

libhdf5.so, libhdf5_hl.so.100: cannot open shared object file: No such file or directory

这说明你忘了修改Makefile.config里面的$(var),所有$(var)形式取值, 必须改成 $var或者${var}形式

改完后然后再执行:

make clean

make -j

make test

make runtest

没有错误的话则很多test case显示OK:

最后显示全部test cases的运行结果:

O了,后面有什么问题遇到再补充,修行取经路上妖魔鬼怪多着,后续路上一一除掉得意

     关于如何把Caffe配置成GPU计算以及解决编译过程中出现的很多错误,请参见:

如何配置Caffe使用GPU计算并解决编译中出现的若干错误

 

 

我的AI之路(1)--前言

我的AI之路(2)--安装Fedora 28

我的AI之路(3)--安装Anaconda3 和Caffe

我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8

我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

我的AI之路(6)--在Anaconda3 下安装PyTorch

我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm

我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

我的AI之路(9)--使用scikit-learn

我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误

我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误

我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型

我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(17)--Tensorflow和Caffe的API及Guide

我的AI之路(18)--Tensorflow的模型安装之object_detection

我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI

我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

我的AI之路(22)--使用Object_Detection_Tensorflow_API

我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值