吐血记录:Jetson Tx2 开发板配置caffe深度学习环境

时间:2024-03-19 15:33:08

Jetson Tx2 开发板是英伟达公司在2017年3月发布的一款全新嵌入式计算平台,TX2中拥有 4 核 ARM A57 CPU、Pascal 架构 GPU(16 纳米工艺)、 8G 内存、32G 固态存储器。标准功耗为 7.5W。另外,TX2 也可以将功率提高到 15W,从而提升计算能力。

   由于项目开发需求,本人拿到一块tx2 .如图:


吐血记录:Jetson Tx2 开发板配置caffe深度学习环境

   东西到手以后. 开始在TX2上配置caffe,下面是记录的一些caffe的配置过程。

在配置caffe之前,需要把Jetson Tx2 刷机,也就是进行JetPack3.0的安装,这一步由我会在下一篇博文中写出过程。JetPack3.0中包含了cuda8.0,是caffe运行必不可少的组件. 

假设你应该做好了JetPack3.0的刷机工作.接下来就跟着我开始caffe的安装:


首先我们先查询一下Jetpack3.0刷机时配置的环境是否正常:


1.先打开终端运行:

nvcc  -V

查看一下cuda版本

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境






再查看一下其他安装或者自带组件的版本:

pkg-config  --modversion opencv

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境




g++  --version

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境




cmake  --version

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境





以上如果你测试的跟我的有差异,那可能版本不同但是没有关系,只要出现相应的版本信息即可.


2.接下来开始配置caffe:


首先安装一般依赖项

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-devlibopencv-dev libhdf5-serial-dev protobuf-compiler

sudo apt-get install --no-install-recommends libboost-all-dev


再安装BLAS依赖项

sudo apt-get install libatlas-base-dev


然后是python和其余依赖项,安装python及其头文件

sudo apt-get install python

sudo apt-get install python-dev


安装python的其他依赖

sudo apt-get install python-numpy

sudo apt-get install ipython

sudo apt-get install ipython-notebook

sudo apt-get install python-sklearn

sudo apt-get install python-skimage

sudo apt-get install python-protobuf


然后是谷歌gloggflagslmdb依赖项

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


接着安装git,并且下载caffe源代码:

sudo apt-get install git

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


注意:如果你没有安装Git,需要先安装Git

sudo apt-get install git


这样就下载好了caffe的源码.


3.然后进入到源码目录

   cd caffe


(1)重命名配置文件:


因为make指令只能makeMakefile.config文件,而Makefile.config.examplecaffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config

执行如下操作:(caffe根目录下)

sudo cp Makefile.config.example Makefile.config


(2)打开配置文件:

#打开Makefile.config文件

sudo gedit Makefile.config


(3)修改配置文件:

重要的一项:在打开的配置文件下

#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


如图:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境



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

注意:

如果你需要使用cuDNN,那么可以将Makefile.configUSE_CUDNN:= 1这一行之前的#号注释去掉.

在本人用的这个本开发板上我没有修改.


(4)接上步,为了匹配cuda8.0的计算能力,把Makefile.configCUDA_ARCH中的前两行去掉,

如下图所示:


吐血记录:Jetson Tx2 开发板配置caffe深度学习环境

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境







(5)修改makefile文件

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

将:

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

替换为:

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

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境







注意有的博文里面写了这里要改:

LIBRARIES+= glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5


这里在我测试以后,根本不可行.至少在我的开发板jetson tx2.

这也是引导我错误耽误好几天的地方.不要修改这里.修改我上面的图示处即可.



(6)修改了以上以后,就编译caffe:


make all  -j8


如果报错如下:


吐血记录:Jetson Tx2 开发板配置caffe深度学习环境








那么你去修改makefile.config文件下的38.把其中的空隙移除以后,再编译.



出现如下界面:那么就是编译成功:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境




















测试caffe是否完整编译:


运行自带的mnist手写体识别来测试:


mnist的具体运行过程

[1]下载Mnist的训练和测试数据集

1.-- ./data/mnist/get_mnist.sh (提前切换到caffe的根目录下)

2.--运行成功后../caffe/data/mnist/目录下有四个文件:

 1--train-images-idx-ubyte-----训练样本集合

 2--train-labels-idx1-ubyte----训练样本对应的标注的集合

 3--t10k-images-idx3-ubyte-----测试图片集

 4—t10k-labels-idx1-ubyte-----测试样本对应的标注的集合

如图:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境








这些下载下来的这些数据不能在caffe中直接使用,需要转换成LMDB数据库的数据的形式才可以在caffe中使用.


[2]
转换成LMDB数据:

./examples/mnist/create_mnist.sh

如果这条命令执行成功,即数据格式转换成,那么就会在caffe/examples/mnist

文件夹下生成两个文件夹,分别是:

1---mnist_test_lmdb

2---mnist_train_lmdb

如图:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境










*注意:

*此块需要说明的是:

*如果你的电脑是有GPU,不需要修改配置文件;

如果没有GPU则需要修改lenet_solver.prototxt的文件

执行如下操作 :

1---sudo vim ./examples/mnist/lenet_solver.prototxt

2---将这个文件的最后一行:

solver_mode:GPU------→solver_mode:CPU

我这里没有修改.

[4]训练网络模型:

./examples/mnist/train_lenet.sh

成功运行的话,没有GPU的电脑,训练时间大搞12分钟左右;

GPU的话,大概就3分钟左右.

训练过程如下图所示:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境





















可以看到最终训练精度是0.9897;到此,mnist手写体测试运行完成.



当然,我要使用python接口来继续深度学习,顺便测试一下pytho接口:

吐血记录:Jetson Tx2 开发板配置caffe深度学习环境






没有报错证明编译成功.


这样也就证明整个caffe安装成功.

题外:在编译caffe过程过程中出现很多小问题,各种百度谷歌,最后发现一个治本方法,不要学什么复制build到桌面,拷贝什么,修改什么配置文件,直接重新编译caffe就是了.

执行:

make clean 

再执行:

make all -j8


编译中的各种报错问题,基本上解决.

==========================================================================================

深度学习之旅正式开始.

2018/1/20

zoutao