Jetson TX1 從零開始配置教程

Jetson TX1 刷系統以及配置Caffe教程

本篇教程主要包含以下內容:

  • 配置 NVIDIA 最新的 JetPack 2.3 開發包
  • Jetson TX 1 上編譯 OpenCV 3.1
  • 配置 Caffe 開發環境

配置 JetPack 2.3

JetPack 2.3 是NVIDIA最新發布的用於在Jetson系列嵌入式平臺上部署開發環境的開發包,它包含 64bit 的 Ubuntu16.04 作業系統,CUDA 8.0,cuDNN 5.1,以及用來加速CNN推斷速度的TensorRT. 對於JetPack 2.3更詳細的介紹參見 NVIDIA JetPack 2.3 介紹

配置 JetPack 2.3 需要:

  • 一臺裝有 Ubuntu 64位作業系統的主機:由於 JetPack 是先在主機上下載並安裝相關的包,然後刷到 TX 1上,所以需要一臺主機。本人在14.04上測試沒有問題,其它系統沒有測試。
  • 一根網線:連線 TX 1 與路由器
  • 顯示器,鍵鼠 等

1. 下載 JetPack 2.3

在主機上通過 NVIDIA 官方連結 下載 JetPack 2.3,並新建一個資料夾存放下載下來的檔案,檔名大概為 JetPack-L4T-2.3-linux-x64.run
在/home/usrname/目錄下新建資料夾,可以命名為 JetPack :

cd ~
mkdir JetPack
cp ~/Downloads/JetPack-L4T-2.3-linux-x64.run ~/JetPack

2. 安裝 JetPack 2.3

2.1 為 JetPack-L4T-2.3-linux-x64.run 增加執行許可權

cd ~/JetPack
chmod  x JetPack-L4T-2.3-linux-x64.run

2.2 執行 JetPack-L4T-2.3-linux-x64.run ,點選 Next

./JetPack-L4T-2.3-linux-x64.run

這裡寫圖片描述

2.3 指明安裝路徑後選擇部署的開發平臺

此處我們選擇 Jetson TX1,同樣也支援 TK 1的部署

這裡寫圖片描述

2.4 彈出 JetPack L4T Component Manager 對話方塊

由於我已經安裝好了所有的包,所以這邊的Action一欄是no action,如果沒有安裝過的話,會顯示install xxx
這裡點選Next後,接受所有的申明,就開始了漫長的下載與安裝…(我等了10多個小時)

這裡寫圖片描述

這裡大家可以選擇不安裝OpenCV for Tegra,因為這個版本是2.4.13,對於USB攝像頭的讀取支援不是很好,另外對於CUDA靜態庫的讀取也有些問題,所以不推薦安裝,稍後會提示大家安裝 OpenCV 3.1

2.5 網路配置和埠選擇

安裝完成後進入網路配置選項,選擇通過路由器連線網際網路,同時將TX1連線到與主機同一個路由器上

這裡寫圖片描述

選擇eth0埠,點選Next

這裡寫圖片描述

2.6 設定 TX 1 為 Force USB Recovery Mode (強制USB恢復模式)

彈出如圖所示終端視窗:

這裡寫圖片描述

按照提示,將TX1設定為強制USB恢復模式

  • 關閉裝置,移除電源介面卡
  • 用自帶的Micro USB 轉 USB 資料線連線主機與TX1
  • 連線電源介面卡
  • 按下POWER按鈕
  • 按住FORCE RECOVERY 按鈕不放開,同時按一下RESET按鈕,等待兩秒鐘,鬆開FORCE RECOVERY 按鈕

完成上述步驟後,可以在主機上通過 lsusb命令檢視是否含有Nvidia Corp裝置,確認存在後敲擊Enter,開始將作業系統以及開發包拷貝到TX1,中途連線TX1的顯示器會顯示Ubuntu 16.04 桌面系統

待安裝部署完成後,在主機上退出 JetPack L4T 即可,這樣就完成了 JetPack 2.3 的配置

2.7 執行示例

我們可以在TX1上執行幾個示例,驗證下 CUDA 8.0 是否安裝成功

./NVIDIA_CUDA-8.0_Samples/bin/aarch64/linux/release/smokeParticles

配置 OpenCV 3.1

OpenCV 3.1 是目前較為穩定的版本,因此推薦大家在TX1上安裝OpenCV 3.1

1. 下載 OpenCV 3.1

下載 OpenCV for Linux/Mac (Version 3.1)

2. 安裝依賴庫

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

3. 編譯安裝OpenCV 3.1

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 演算法,可能出現以下錯誤:

/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檔案,將:

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

修改為

#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)  || (CUDART_VERSION >= 8000)

重新編譯即可

配置 Caffe 開發環境

此處有很詳細的指導,複製過來

1. 安裝依賴庫

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

git clone https://github.com/BVLC/caffe.git 
cd caffe 
cp Makefile.config.example Makefile.config

修改Makefile.config:

# 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庫目錄更改,所以需要單獨新增:

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/

之後編輯即可

make -j4 all
make -j4 runtest

為了更好地使用pycaffe ,建議安裝:

sudo apt-get install python-numpy python-setuptools python-pip cython python-skimage python-protobuf
make pycaffe

到這裡Caffe開發環境就配置好了!
可以測試一下,輸出AlexNet的時間測試結果:

cd ~/caffe
./build/tools/caffe time --gpu 0 --model ./models/bvlc_alexnet/deploy.prototxt