AM5728开发深度学习之安装 caffe-jacinto

AM5728开发深度学习之安装 caffe-jacinto——WizNote笔记

要先使用自己训练的模型,可以使用caffe和Tensorflow,但是使用TI的caffe-jacinto能让训练的模型在TI的嵌入式平台上达到加速的效果,它fork了NVIDIA/caffe,而NVIDIA/caffe则是fork了BLVC/caffe。经过测试,安装了caffe-jacinto,也能跑通caffe给的官方教程代码Notebook Examples
官方Repo
官方问题总结及解决方法
本机环境如下:

  • CUDA 9.0
  • cuDNN 7.2.1
  • OpenCV 3.1

由于电脑装了Anaconda3,因此我们分配一个虚拟环境caffe-jacinto来安装caffe-jacinto需要的包,这里指定python版本为2.7,因为caffe-jacinto对python2.7支持较好。

conda create -n caffe-jacinto python=2.7
source activate caffe-jacinto

1 下载caffe-jacinto库

git clone https://github.com/tidsp/caffe-jacinto
cd caffe-jacinto/
git checkout caffe-0.17

配置环境变量

vim ~/.bashrc
# 将下面两行添加到~/.bashrc中
export PATH=/home/xavier/anaconda3/envs/caffe-jacinto/bin:$PATH
export PYTHONPATH=/media/xavier/SSD256/caffe-jacinto/python:$PYTHONPATH
source ~/.bashrc

2 编辑Makefile.config

取消注释行WITH_PYTHON_LAYER
取消注释行USE_CUDNN

cp Makefile.config.example Makefile.config
# 取消注释行WITH_PYTHON_LAYER
# 取消注释行USE_CUDNN
USE_CUDNN := 1 #使用OpenCV
OPENCV_VERSION := 3 #OpenCV版本为3

3 安装依赖

cd caffe-jacinto/
source activate caffe-jacinto
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install libatlas-base-dev
sudo apt-get install libopenblas-dev
sudo apt-get install --no-install-recommends libboost-all-dev #没安装的话会出现boost库的相关错误
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libturbojpeg
sudo ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0.0.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so  # 否则会出现libturbojpeg相关的错误
# 安装pycaffe需要的依赖包
for req in $(cat python/requirements.txt); do pip install $req; done

4 安装CUDA

5 安装cuDNN

以上两步网上教程很多,这里就偷懒省略了,本机电脑装的CUDA为9.0,cuDNN为7.2.1,可以通过以下命令查看

# cuda 版本 
cat /usr/local/cuda/version.txt
# cudnn 版本 
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# OpenCV版本
pkg-config --modversion opencv

在这里插入图片描述

6 编译caffe-jacinto

# 注意这里的~/caffe-jacinto/python/requirements.txt根据具体的caffe-jacinto安装目录而定
for req in $(cat ~/caffe-jacinto/python/requirements.txt); do pip install $req; done
make all -j 8 #使用8个线程进行编译

7 测试caffe-jacinto

make test
make runtest
make pycaffe

常见错误及解决办法

1 .build_release/src/caffe/proto/caffe.pb.h:22:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录或者.build_release/src/caffe/proto/caffe.pb.h:12:2: error: #error This file was generated by a newer version of protoc which is #error This file was generated by a newer version of protoc which is错误

[具体解决方法及描述](https://blog.csdn.net/qq_28256625/article/details/78893707)
这是由于protobuf的版本不对导致的,caffe能正确使用的是protobuf-2.6.1版本,而安装anaconda后环境变量改变,默认使用anaconda下的protobuf-3.4.0了。

# 命令whereis protoc 可以查看哪些路径安装了protoc
# 命令which protoc可以查看默认选用protoc的路径
# 命令protoc --version 可以查看当前protoc版本

在这里插入图片描述
我们想使用Anaconda,但是Anaconda的protoc的版本太高,我们可以使用以下命令安装protobuf-2.6.1

# 查看conda哪些源支持protobuf及相关版本
binstar search -t conda protobuf

假设使用protobuf-2.6.1,用下面命令锁定protobuf版本

 binstar show probcomp/libprotobuf

然后使用下面命令安装

 conda install --channel https://conda.anaconda.org/probcomp libprotobuf

再次查看哪些路径有protoc,可以看到路径/home/xavier/anaconda3/envs/caffe-jacinto/bin/protoc有protoc,并且可以查看到其版本为protobuf-2.6.1

whereis protoc

在这里插入图片描述
通过修改~/.bashrc来将/home/xavier/anaconda3/envs/caffe-jacinto/bin/添加到环境变量

export PATH=/home/xavier/anaconda3/envs/caffe-jacinto/bin:$PATH

然后make all -j 8即可编译

2 由于没有使用OpenCV造成的错误

.build_release/lib/libcaffe-nv.so:对‘cv::VideoCapture::set(int, double)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘cv::VideoWriter::write(cv::Mat const&)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘cv::VideoCapture::open(cv::String const&)’未定义的引用
.build_release/lib/libcaffe-nv.so:对‘cv::VideoCapture::release()’未定义的引用 

解决方法
由于我自己电脑之前源码编译过OpenCV3.4,这里只需要清除刚刚编译生成的文件make clean,修改Makefile.config中以下两行,然后重新编译即可。

USE_CUDNN := 1
OPENCV_VERSION := 3

3 /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libturbojpeg.a(libturbojpeg_la-turbojpeg.o): relocation R_X86_64_32 against `.data’ can not be used when making a shared object; recompile with -fPIC /usr/lib/x86_64-linux-gnu/libturbojpeg.a: 无法添加符号: 错误的值

解决方法

cd <caffe-jacinto ROOT>
make clean
source activate caffe-jacinto
sudo ln -s /usr/lib/x86_64-linux-gnu/libturbojpeg.so.0.1.0 /usr/lib/x86_64-linux-gnu/libturbojpeg.so

4 执行make runtest时出现错误

在这里插入图片描述
这个错误的原因不清楚,目前没有找到解决方法,但是这个错误不影响后面的操作,如果有大佬知道怎么解决,烦请在评论中给出方法。

5 OpenCV版本太高,需要转换为OpenCV3.1
5.1 CMake Error: The following variables are used in this project, but they are set to NOTFOUND.

Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
查看解决方法

6 运行完make pycaffe后,import caffe出现ImportError: /home/user/caffe-master/python/caffe/…/…/build/lib/libcaffe.so.1.0.0-rc3:undefinedsymbol:_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS_11_InputArra ERSt6vectorIhSaIhEERKSB_IiSaIiEE

这是由于使用Anaconda3造成的,我们现在使用系统自带的python2来重新安装caffe-jacinto

6.1 切换系统root用户的Python
sudo update-alternatives --config python

然后输入对应的python2.7版本即可。

6.2 使用conda remove -n caffe-jacinto --all删除Anaconda创建的caffe-jacinto虚拟环境。
6.3 再安装pycaffe需要的依赖包
for req in $(cat python/requirements.txt); do pip2 install $req; done

注意:这里的pip改为pip2了,表示重新安装系统python2所需的pycaffe依赖包

6.4 执行make all -j8make pycafffe即可
6.5 测试import caffe
7 ImportError: No module named skimage

这个简单,参考博客

8 成功import caffe后,执行代码caffe.set_mode_gpu()出错Check failed: error == cudaSuccess (30 vs. 0) unknown error

解决办法:使用sudo python而不是python

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值