怎样在Nvidia的Jetson开发板上运行Caffe深度学习视觉库

jetson

Photo by Gareth Halfacree

我的同事贾扬清,Caffe的创建者,最近花了一些业余时间使得Caffe框架可以在Nvidia的Jetson开发板上运行。如果你还没有听说过Jetson,它是一块集成了Nvidia TK1移动GPU芯片的小型开发板。TK1已经开始出现在高端的平板电脑中,它拥有192核,因此非常适合运行像深度学习这样计算密集型的任务。Jetson是一种非常不错的方式让我们尝试一下我们可以在未来的移动设备上能做什么,它运行的是Ubuntu系统,非常方面用来开发。

Cafee预建了“Alexnet”模型,一个能够识别1000种不同对象的Imagenet获奖架构的版本。使用这个作为基准,Jetson可以在仅仅34ms分析一副图像!基于这个我估计用它来绘图大概功率在10~11瓦,比一般移动设备耗电,但也是太明显。

根据扬清的指导,我已经在我的Jetson上运行通过,因此你只需要按照如下步骤安装和运行Caffe。

安装

Jetson开箱后的第一步就是登陆。你可以接上一个显示器和键盘,但是我推荐你仅仅将它插入到一个本地的路由器,然后使用ssh登陆(elinux.org/Jetson/Remote_Access有更多的细节),在你的本地网络Jetson会显示为“tegra-ubuntu.local”,用户名是“ubuntu”。

ssh ubuntu@tegra-ubuntu.local

默认密码是“ubuntu”,下一步我们需要运行Nvidia设备自带的installer,然后重启。

sudo NVIDIA-INSTALLER/installer.sh
sudo shutdown -r now

重启完成后,你可以登录并且继续安装Caffe需要用到的其他安装包。

ssh ubuntu@tegra-ubuntu.local
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install libprotobuf-dev protobuf-compiler gfortran \
libboost-dev cmake libleveldb-dev libsnappy-dev \
libboost-thread-dev libboost-system-dev \
libatlas-base-dev libhdf5-serial-dev libgflags-dev \
libgoogle-glog-dev liblmdb-dev gcc-4.7 g++-4.7

你将需要使用Cuda SDK来构建和运行GPU程序,elinux.org/Tegra/Installing_Cuda有非常不错的通用指导手册。总的来说,你需要注册成为Nvidia开发者,然后登陆网页下载Cuda6.0 for ARM安装包到你的机器,并将它复制到Jetson上。

scp ~/Downloads/cuda-repo-l4t-r19.2_6.0-42_armhf.deb ubuntu@tegra-ubuntu.local:

然后用ssh连接到你的Tegra,按如下步骤安装Cuda。

sudo dpkg -i cuda-repo-l4t-r19.2_6.0-42_armhf.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-6-0
sudo usermod -a -G video $USER
echo “# Add CUDA bin & library paths:” >> ~/.bashrc
echo “export PATH=/usr/local/cuda/bin:$PATH” >> ~/.bashrc
echo “export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH” >> ~/.bashrc
source ~/.bashrc

如果每一步安装都没有问题,执行“nvcc -V”将返回给你编译版本信息。接下来,你需要获取Tegra版本的OpenCV。通过你的主机上访问developer.nvidia.com/rdp/assets/opencv-run-tegra-k1 anddeveloper.nvidia.com/rdp/assets/opencv-dev-tegra-k1下载安装包,然后拷贝到Jetson。

scp ~/Downloads/libopencv4tegra* ubuntu@tegra-ubuntu.local:

在Jetson上,按如下步骤安装这些包。

sudo dpkg -i libopencv4tegra_2.4.8.2_armhf.deb
sudo dpkg -i libopencv4tegra-dev_2.4.8.2_armhf.deb

接下来,我们需要下载和安装Caffe。

sudo apt-get install -y git
git clone https://github.com/BVLC/caffe.git
cd caffe && git checkout dev
cp Makefile.config.example Makefile.config
sed -i “s/# CUSTOM_CXX := g++/CUSTOM_CXX := g++-4.7/” Makefile.config

我们必须使用4.7版本的gcc,因为nvcc在默认的4.8版本下会出现一些问题。

make -j 8 all

一旦安装完成,你需要运行Caffe的测试程序来检查Caffe是否能正确运行,这个会需要一点时间。

make -j 8 runtest

最后你可以运行Caffe的基准测试代码来衡量性能。

build/tools/caffe time –model=models/bvlc_alexnet/deploy.prototxt –gpu=0

这个步骤会花费大概30秒时间,并输出一组统计。每个识别通道运行50次迭代,每一个输入图像会分析10个不同的组进行分析,所以必须将“Average Forward pass”的时间除以10来得到每次识别结果的时间。我的平均时间是337.86ms,所以每幅图像耗费34ms。你也可以设置-gpu=0来看看CPU运行的结果,我的结果是585ms,所以Cuda的加速效果还是蛮明显的。

 

 

文章来源:Pete Warden’s

How to run the Caffe deep learning vision library on Nvidia’s Jetson mobile GPU board

翻译整理:Eric Chen

留下评论