当前位置: 代码迷 >> 综合 >> ubuntu caffe 编译
  详细解决方案

ubuntu caffe 编译

热度:64   发布时间:2023-10-12 04:02:51.0

基本环境:CUDA8.0  cuDNN6.0 配置成功


(1)将终端cd到要安装caffe的位置。

(2)从github上获取caffe:

git clone https://github.com/BVLC/caffe.git

注意:若没有安装Git,需要先安装Git:

sudo apt-get install git

(3)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config:

sudo cp Makefile.config.example Makefile.config

(4)打开并修改配置文件:

sudo gedit Makefile.config #打开Makefile.config文件

根据个人情况修改文件:

a.若使用cudnn,则

#USE_CUDNN := 1

修改成:

USE_CUDNN := 1

b.若使用的opencv版本是3的,则

#OPENCV_VERSION := 3

修改为:

OPENCV_VERSION := 3

c.若要使用python来编写layer,则

#WITH_PYTHON_LAYER := 1

修改为

WITH_PYTHON_LAYER := 1

d. 重要的一项 :

将# Whatever else you find you need goes here.下面的

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

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

修改为:

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 /usr/lib/x86_64-linux-gnu/hdf5/serial

这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.

(5)修改makefile文件

打开makefile文件,做如下修改:

将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(6)编辑/usr/local/cuda/include/host_config.h

将其中的第115行注释掉:

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

改为

//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

(7)编译

make all -j8 #-j根据自己电脑配置决定

编译过程中可能会出现如下错误:

错误内容1:

"fatal error: hdf5.h: 没有那个文件或目录"

解决办法:

step1:在Makefile.config文件的第85行,添加/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行代码改为第二行代码。

将:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

替换为:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/

stept2:在Makefile文件的第173行,把 hdf5_hl 和hdf5修改为hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行代码改为第二行代码。

将:

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

错误内容2:

"libcudart.so.8.0 cannot open shared object file: No such file or directory"

解决办法是将一些文件复制到/usr/local/lib文件夹下:

#注意自己CUDA的版本号!

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig

sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig

sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

(8)测试

sudo make runtest

ubuntu caffe 编译

安装 jupyter notebook

这里用pip安装该工具,安装pip的过的可以跳过下面一段:
下载安装包pip压缩包解压之后,发现里面有个setup.py文件,终端运行:

$ sudo python setup.py install
  
  • 1

这样,pip就安装上了。
下面用pip安装jupyter notebook

#这里临时使用了清华大学的源,使用前后是蜗牛和火箭的速度对比
$ sudo pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple 
  
  • 1
  • 2

安装成功后,运行notebook

$ jupyter notebook
  
  • 1

程序会在浏览器中打开notebook, 点击右上角的New-python2, 就可以新建一个网页一样的文件,扩展名为ipynb。在这个网页上,我们就可以像在命令行下面一样运行python代码了。输入代码后,按shift+enter运行,更多的快捷键,可点击上方的help-Keyboard shortcuts查看,或者先按esc退出编辑状态,再按h键查看。

ubuntu caffe 编译

运行程序检测单张图片

$ cd /home/mx/caffe/examples # 在该目录下打开jupyter notebook
$ jupyter notebook
  
  • 1
  • 2

在jupyter notebook打开的网页中找到ssd_detect.ipynb,打开后发现是这样:

ubuntu caffe 编译

完整的程序我就不放出来了,你打开都和我一样,然后检查下面4个路径是否正确:

labelmap_file = 'data/VOC0712/labelmap_voc.prototxt'
model_def = 'models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt'
model_weights = 'models/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300_iter_120000.caffemodel'
image = caffe.io.load_image('examples/images/cat.jpg')
  
  • 1
  • 2
  • 3
  • 4


執行程序:

在命令行运行tensorflow报错:


ImportError: No module named matplotlib.pyplot

解决办法:sudo apt-get install python-matplotlib 

ImportError: No module named skimage.io

解決方法:sudo apt-get install python-skimage

在成功编译caffe的源码之后,可以在python环境中使用caffe。
在Ubuntu环境下,打开python解释程序,输入import caffe时:出现以下错误

  1. >>>import caffe  
  2. Traceback (most recent call last):  
  3. File "<stdin>", line 1in <module>  
  4. ImportError: No module named caffe  

二、解决思路
基本思路是把caffe中的python导入到解释器中
三、解决方法

放到配置文件中,可以永久有效果,命令操作如下:
A.把环境变量路径放到 ~/.bashrc文件中,打开文件
[python] view plain copy
  1. sudo vim ~/.bashrc   

在文件下方写入
[python] view plain copy
  1. export PYTHONPATH=~/caffe/python:$PYTHONPATH  

上述语句中 “~” 号表示caffe 所在的根目录。


B.关闭文件,在终端写入下面语句,使环境变量生效
[python] view plain copy
  1. source ~/.bashrc 
报错:No module named google.protobuf.internal

解決方法:sudo pip install protobuf

转载地址:https://www.2cto.com/kf/201610/552429.html