使用JetPack 2.3配置TX1 / 使用JetPack 3.0配置TX2
JetPack 系列是NVIDIA发布的在Jetson系列嵌入式平台上部署开发环境的开发包,目前最新版本是3.0,推荐用于TX2,它包含64bit的 Ubuntu16.04 操作系统,CUDA 8.0,cuDNN 5.1,以及用来加速CNN推断速度的TensorRT. 对于JetPack 3.0更详细的介绍参见JetPack介绍.
由于TX1与TX2的配置方法差别不大,因此以下教程基于JetPack 2.3配置TX1。
1.一台装有Ubuntu64位操作系统的主机:由于JetPack是先在主机上下载并安装相关的包,然后刷到TX1上。
2.一根microUSB转USB线用于将主机中的系统镜像刷写至TX1中,一根网线连接TX1与路由器用于通过路由器传输cuda等包,注意这里若使用路由器方式传输文件速度较慢,强烈建议采用离线拷贝文件的方式,具体细节见下文。
3.USBHub,HDMI转VGA线,显示器,键鼠 等。
Nvidia Jetson面向无人智能化领域的嵌入式平台
附上前几天到货的TX2拆箱图!
在主机上通过 NVIDIA 官方链接 下载 JetPack 2.3,并新建一个文件夹存放下载下来的文件,文件名大概为 JetPack-L4T-2.3-Linux-x64.run,在/home/usrname/目录下新建文件夹,可以命名为 JetPack :
1
2
3
|
cd ~
mkdir JetPack
cp ~/Downloads/JetPack-L4T-2.3-linux-x64.run ~/JetPack
|
为 JetPack-L4T-2.3-linux-x64.run 增加执行权限
1
2
|
cd ~/JetPack
chmod +x JetPack-L4T-2.3-linux-x64.run
|
执行 JetPack-L4T-2.3-linux-x64.run ,点击 Next
1
|
./JetPack-L4T-2.3-linux-x64.run
|
指明安装路径后选择部署的开发平台
根据需求选择 Jetson TX1或者Jetson TX2,同样也支持 TK1的部署
弹出JetPack L4T Component Manager对话框
由于我已经安装好了所有的包,所以这边的Action一栏是no action,如果没有安装过的话,会显示install xxx。点击Next后,开始下载。
JetPack 2.3下载界面
网络配置和端口选择
安装完成后进入网络配置选项,选择通过路由器连接互联网,同时将TX1连接到与主机同一个路由器上.
选择eth0端口,点击Next
设置TX1为Force USB Recovery Mode(强制USB恢复模式)
弹出如图所示终端窗口:
关闭设备,移除电源适配器
用自带的Micro USB 转 USB 数据线连接主机与TX1
连接电源适配器
按下POWER按钮
按住FORCE RECOVERY 按钮不放开,同时按一下RESET按钮,等待两秒钟,松开FORCE RECOVERY 按钮
完成上述步骤后,可以在主机上通过 lsusb命令查看是否含有Nvidia Corp设备,确认存在后敲击Enter,开始将操作系统以及开发包拷贝到TX1,中途连接TX1的显示器会显示Ubuntu 16.04 桌面系统
至此,系统已经刷写完毕,下一步进行cuda,cudnn,opencv的配置,本教程采用效率更高的离线方式
若使用默认的路由器方式传输文件速度较慢,并且在传输过程中必须保证网络不被中断,否则需要从头再来,因此强烈建议采用稳定且快速的离线拷贝文件的方式。
所有在JetPack中下载的安装包均存在JetPack/jetpack_download中,拷贝出cuda8.0安装包(cuda-repo-l4t-8-0-local_8.0.34-1_arm64.deb),cudnn安装包(cuDNN-v5.1.zip)
1.拷贝
1
2
3
|
cd ~
mkdir cuda
-l4t
cp cuda
-l4t.sh /home/usrname/cuda
-l4t
|
2.查看cuda-l4t.sh脚本
1
|
bash cuda
-l4t.sh cuda-repo
-l4t-8-0-local_8.0.34-1_arm64.deb 8.0 8-0
|
4.完毕后导入环境变量
1
2
|
export PATH=/usr/
local/cuda-8.0/bin:
$PATH
export LD_LIBRARY_PATH=/usr/
local/cuda-8.0/lib64:
$LD_LIBRARY_PATH
|
1.解压cuDNN-v5.1.zip,有三个deb安装包
2.使用sudo dpkg -i指令依次安装,但是默认安装路径是在usr/include和usr/lib下的,
1
2
|
sudo cp /usr/include/cudnn.h /usr/
local/include/
sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/
local/lib/
|
1.安装依赖库
1
2
3
4
5
6
7
|
sudo apt-add-repository universe
sudo apt-get update
sudo apt-get install -y build-essential make cmake cmake-curses-gui g++
sudo apt-get install -y libavformat-dev libavutil-dev libswscale-dev
sudo apt-get install -y libv4l-dev libeigen3-dev libglew1.6-dev libgtk2.0-dev
sudo apt-get install python-numpy
|
注意:为了方便,这里将opencv的所有依赖项与下面caffe工程所需依赖项的安装命令统一写入脚本,然后运行该脚本即可。以下是脚本内容
1
2
3
4
5
6
7
8
9
10
|
#!/bin/bash
sudo apt-get update
sudo apt-get install -y build-essential make cmake cmake-curses-gui g++ \
libavformat-dev libavutil-dev libswscale-dev \
libv4l-dev libeigen3-dev libglew1.6-dev libgtk2.0-dev \
libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler \
--no-install-recommends libboost-all-dev \
libatlas-base-dev \
libgflags-dev libgoogle-glog-dev liblmdb-dev \
python-dev python-numpy
|
2.编译安装Opencv3.1
1
2
3
4
5
6
7
8
|
Downloads opencv-3.1.0.zip
cd ~
unzip opencv-3.1.0.zip
cd opencv-3.1.0
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN=
"5.3" -DCUDA_ARCH_PTX=
"" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCUDA_FAST_MATH=ON ..
sudo make -j4 install
|
编译好的OpenCV库会默认安装到 /usr/local/文件夹下
注意:
由于CUDA 8.0不支持OpenCV的 GraphCut 算法,可能出现以下错误:
1
2
3
4
5
6
7
8
9
|
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: ‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:135:18: error: ‘NppiGraphcutState’ does not name a
type
operator NppiGraphcutState*()
^
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:141:9: error: ‘NppiGraphcutState’ does not name a
type
NppiGraphcutState* pState;
.......
|
此时需要修改OpenCV源码,使其不编译graphcuts.cpp 即可
进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:
1
2
|
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
|
修改为
1
2
|
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
|
重新编译即可
基于caffe的工程可以是rcnn,ssd
1.安装依赖库
1
2
3
4
5
6
7
8
9
10
11
12
13
|
sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install cmake -y
# General Dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev \
libhdf5-serial-dev protobuf-compiler -y
sudo apt-get install --no-install-recommends libboost-all-dev -y
# BLAS
sudo apt-get install libatlas-base-dev -y
# Remaining Dependencies
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -y
sudo apt-get install python-dev python-numpy -y
|
2.编译caffe工程
1
2
3
|
Downloads ...
cd caffe
cp Makefile.config.example Makefile.config
|
修改Makefile.config:
1
2
3
4
5
6
7
8
|
# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1
# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
|
由于hdf5库目录更改,所以需要单独添加:
1
2
|
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/
local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/
local/lib /usr/lib /usr/lib/aarch64-linux-gnu/hdf5/serial/
|
之后编辑即可
1
|
make -j4 all
|
为了更好地使用pycaffe ,建议安装:
1
2
|
sudo apt-get install python-numpy python-setuptools python-pip cython python-skimage python-protobuf
make pycaffe
|
此处感谢大神师兄Jalong_Ma的悉心教导!
大部分内容引自Jalong_Ma’s blog