Jetson Tx2 开发板是英伟达公司在2017年3月发布的一款全新嵌入式计算平台,TX2中拥有 4 核 ARM A57 CPU、Pascal 架构 GPU(16 纳米工艺)、 8G 内存、32G 固态存储器。标准功耗为 7.5W。另外,TX2 也可以将功率提高到 15W,从而提升计算能力。
由于项目开发需求,本人拿到一块tx2 .如图:
东西到手以后. 开始在TX2上配置caffe,下面是记录的一些caffe的配置过程。
在配置caffe之前,需要把Jetson Tx2 刷机,也就是进行JetPack3.0的安装,这一步由我会在下一篇博文中写出过程。JetPack3.0中包含了cuda8.0,是caffe运行必不可少的组件.
假设你应该做好了JetPack3.0的刷机工作.接下来就跟着我开始caffe的安装:
首先我们先查询一下Jetpack3.0刷机时配置的环境是否正常:
nvcc -V
查看一下cuda版本
再查看一下其他安装或者自带组件的版本:
pkg-config --modversion opencv
g++ --version
cmake --version
以上如果你测试的跟我的有差异,那可能版本不同但是没有关系,只要出现相应的版本信息即可.
首先安装一般依赖项
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
然后是谷歌glog和gflags和lmdb依赖项
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的源码.
cd caffe
(1)重命名配置文件:
因为make指令只能makeMakefile.config文件,而Makefile.config.example是caffe给出的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
如图:
这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
注意:
如果你需要使用cuDNN,那么可以将Makefile.config中USE_CUDNN:= 1这一行之前的#号注释去掉.
在本人用的这个本开发板上我没有修改.
(4)接上步,为了匹配cuda8.0的计算能力,把Makefile.config中CUDA_ARCH中的前两行去掉,
如下图所示:
(5)修改makefile文件
打开makefile文件,做如下修改:
将:
NVCCFLAGS+=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS+= -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
注意有的博文里面写了这里要改:
LIBRARIES+= glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
这里在我测试以后,根本不可行.至少在我的开发板jetson tx2上.
这也是引导我错误耽误好几天的地方.不要修改这里.修改我上面的图示处即可.
(6)修改了以上以后,就编译caffe:
make all -j8
如果报错如下:
那么你去修改makefile.config文件下的38行.把其中的空隙移除以后,再编译.
出现如下界面:那么就是编译成功:
测试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-----测试样本对应的标注的集合
如图:
这些下载下来的这些数据不能在caffe中直接使用,需要转换成LMDB数据库的数据的形式才可以在caffe中使用.
[2]转换成LMDB数据:
./examples/mnist/create_mnist.sh
如果这条命令执行成功,即数据格式转换成,那么就会在caffe/examples/mnist
文件夹下生成两个文件夹,分别是:
1---mnist_test_lmdb
2---mnist_train_lmdb
如图:
*注意:
*此块需要说明的是:
*如果你的电脑是有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分钟左右.
训练过程如下图所示:
可以看到最终训练精度是0.9897;到此,mnist手写体测试运行完成.
当然,我要使用python接口来继续深度学习,顺便测试一下pytho接口:
没有报错证明编译成功.
这样也就证明整个caffe安装成功.
题外:在编译caffe过程过程中出现很多小问题,各种百度谷歌,最后发现一个治本方法,不要学什么复制build到桌面,拷贝什么,修改什么配置文件,直接重新编译caffe就是了.
执行:
make clean
再执行:
make all -j8
编译中的各种报错问题,基本上解决.
==========================================================================================
深度学习之旅正式开始.
2018/1/20
zoutao