caffe CPU Ubuntu20.04 安装环境搭建 详细每一步 遇到的所有问题及解决
Posted njust_cse_17_wc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了caffe CPU Ubuntu20.04 安装环境搭建 详细每一步 遇到的所有问题及解决相关的知识,希望对你有一定的参考价值。
x86 平台 Linux Ubuntu 20.04 系统 环境下 配置caffe
本次项目需要使用到caffe的框架,开发人脸识别的功能,最终要集成到arm平台的linux系统。我先拿x86平台的主机试试水,对caffe和linux一窍不通的我来说,属实遇到了不少大大小小的问题,好在前人的文章都有很好的总结,那么话不多说,开始caffe的环境搭建探索吧!
caffe需要的依赖项
caffe需要很多的依赖项才能运行,在编译caffe之前,需要及其所有依赖项,才能召唤caffe,那么我们就需要弄清需要哪些依赖项?我有哪些依赖项?怎么用起来这些依赖项?
经过网上的总结,列出需要的依赖项如下:
python3.5 / python2.7
boost
gflags
glog
leveldb
lmdb
protobuf
hdf5
snappy
opencv
怎么查看自己有哪些依赖项?输入指令查看:
dpkg -l <name> #准确搜索
dpkg -l | grep <name> #模糊搜索
查看自己的主机上是否已经存在有的依赖项
我的主机里有python3.8,其实有python3.8也可以按照,不是必须要2.7或者3.5,只要目录对了,有正确的依赖项就行。这个后面说。
如果没有依赖项,使用apt-get来安装:
安装opencv,boost,protobuf,leveldb,snappy,hdf5
sudo apt-get install libopencv-dev libboost-all-dev libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-complier
安装blas库:
sudo apt-get install libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
到这步,caffe的依赖项就基本安装好了
下载caffe源码,修改Makefile
进入到要下载的目录后:
git clone git://github.com/BVLC/caffe.git
进入目录,拷贝Makefile配置文件
cp Makefile.config.example Makefile.config
Makefile.config.example是模板,每次使用时,复制一份Makefile.config,编译的时候会读取.config的内容
根据依赖项所安装在的位置,修改Makefile里的内容:
- CPU_ONLY=1 前面的注释去掉
- GPU的前面都加上注释#
- 注释掉python2.7的PYTHON_INCLUDE
- 修改# Uncomment to use Python 3 (default is Python 2) 这一句下面的:
PYTHON_LIBRARIES := boost_python3 python3.8
PYTHON_INCLUDE := /usr/include/python3.8 \\
/usr/lib/python3/dist-packages/numpy/core/include
这里主要看自己的python目录,在usr/include和usr/lib的目录下找
- 修改OPENCV_VERSION=4
- 去掉WITH_PYTHON_LAYER前的注释
- 修改# Whatever else you find you need goes here. 这一句下面的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial /usr/include/opencv4
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
至此依赖项的目录都基本添加完成,如果后续有报错没找到文件,就去对应的目录下面确认,是什么原因:1.文件名不对;2.文件目录没添加;3.不存在该文件
编译caffe以及遇到的问题
输入指令,开始编译:
sudo make all
然后就慢慢等待报错吧~
ERROR1:src/caffe/util/io.cpp,'CV_LOAD_IMAGE_GRAYSCALE' 'CV_LOAD_IMAGE_COLOR' not declared in this scope.
这个问题是SSD是用opencv2编写的,而opencv2于opencv4有较大的语法差别,所以这里添加两行代码,在报错的.cpp文件中:
#define CV_LOAD_IMAGE_COLOR cv::IMREAD_COLOR
#define CV_LOAD_IMAGE_GRAYSCALE cv::IMREADGRAYSCALE
这两行代码分别对应解决上面的两个报错,使用宏定义可以省去查找代码的位置,非常方便
ERROR2:src/caffe/util/db.cpp #include "leveldb/db.h"
头文件问题,首先去/usr/include目录下查找该头文件目录,没有找到,怀疑是没有装leveldb,重装:sudo apt-get install libleveldb-dev
ERROR3:usr/bin/ld:cannot find -lhdf_serial_hl, cannot find -lboost_python3
该报错是找不到对应的lib文件,对应着找不到hdf_serial_hl.so
和boost_python3.so
文件。有三种可能:1.系统没有安装对应的lib;2.对应的lib版本不对;3.lib的symbolic link 不正确,没有连接到正确的函式库文件。
先解决一下hdf_serial_hl的问题:判断在/usr/lib下相应的.so文件的软链接是否正确:
cd /usr/lib/x86_64-linux-gnu
find . -name "*hdf*_serial_hl.*" | xargs ls -l
得出结果:
当时没有libhdf5_serial_hl.so
文件。别的.so文件最终都指向libhdf5_serial_hl.so.100.1.1
文件,创建一个软连接:
sudo ln -s libhdf5_serial_hl.so.100.1.1.so libhdf_serial_hl.so
继续找libboost_python3
,找到了如下:
因为我在Makefile.config里面修改了python的目录为python3.8的目录,并且我主机的默认python版本是python3.8,所以在安装boost的时候就自动生成了libboost_python38这个文件,这里或许可以修改配置里的默认python版本,然后安装boost的时候就生成了对应python版本的libboost_python。实际上我所依赖的就是libboost_python38.so.1.71.0。
创建软连接
sudo ln -s libboost_python38.so.1.71.0 libboost_python3.so
因为我之前是下载了python3.5,然后苦苦寻找libboost_python35.so这个文件,觉得要自己编译boost,后来放弃这个办法,觉得太麻烦,所以才发现原来修改caffe的Makefile.config的python目录就可以解决。
解决完一个问题,就返回caffe目录继续编译,遇到一个问题解决一个问题。无非是这几种状况:
- 代码错误,由于版本的不同,只需要编辑一下代码
- 文件目录/文件名问题,可能是目录名不正确,文件名不正确,创建软连接即可,把文件目录添加进Makefile.config
- 文件不存在,apt-get 下载
编译通过后验证caffe
进入到caffe的目录下,执行命令行:
sudo sh data/mnist/get_mnist.sh #下载mnist数据集
sudo sh examples/mnist/create_mnist.sh #将数据转换为leveldb格式
#修改prototxt 修改为CPU版本
#找到 #solver mode:CPU or GPU 改为:solver:CPU
vim examples/mnist/lenet_solver.prototxt
sudo sh examples/mnist/train_lenet.sh #训练数据
运行正确开始显示迭代次数和准确率。
import caffe,caffe python的依赖库安装
在python中使用caffe会以来很多库,在import caffe前,需要安装一些python工具的依赖项,需要用到pip3。安装pip3:
sudo apt-get install python3-pip
安装依赖:
这里可以先更新一下pip源:参考这篇文章:pip换国内源
cd caffe/python #进入到python目录
sudo pip3 install -r requirements.txt #递归安装依赖库
如果出现错误:“缺少caffe._caffe 模块”,要在caffe的目录下sudo make pycaffe
再到caffe/python目录下运行python3,import caffe。就没有错误了。
至此,caffe在x86 Ubuntu20.04下配置caffe完成。我猜想如果在arm平台上,不是Ubuntu20.04也不是python3.8,可能要自己下载源码编译opencv,boost等库,到时候再整理一篇,海思3531芯片arm平台的caffe环境配置。
以上是关于caffe CPU Ubuntu20.04 安装环境搭建 详细每一步 遇到的所有问题及解决的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu16.04 Caffe CPU版本 安装步骤记录
Caffe初学者第一部:Ubuntu14.04上安装caffe(CPU)+Python的详细过程 (亲测成功, 20180524更新)
Ubuntu12.04+Caffe (+OpenCV+CPU-only)
ubuntu 16.04 python3环境下安装仅cpu版本的caffe
Caffe初学者第二部:Ubuntu16.04上安装caffe(CPU)+Matlab2014a+Opencv3的详细过程 (亲测成功, 20180529更新)