1. 程式人生 > >Jetson TX1/TX2配置教程--拷貝離線安裝包

Jetson TX1/TX2配置教程--拷貝離線安裝包

使用JetPack 2.3配置TX1 / 使用JetPack 3.0配置TX2

配置JetPack 2.3/JetPack 3.0

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。

"da"

所需裝置

1.一臺裝有Ubuntu64位作業系統的主機:由於JetPack是先在主機上下載並安裝相關的包,然後刷到TX1上。
2.一根microUSB轉USB線用於將主機中的系統映象刷寫至TX1中,一根網線連線TX1與路由器用於通過路由器傳輸cuda等包,注意這裡若使用路由器方式傳輸檔案速度較慢,強烈建議採用離線拷貝檔案的方式,具體細節見下文。
3.USBHub,HDMI轉VGA線,顯示器,鍵鼠 等。

下載JetPack2.3

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

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

安裝JetPack2.3

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

    12 cd ~/JetPackchmod +x JetPack-L4T-2.3-linux-x64.run
  2. 執行 JetPack-L4T-2.3-linux-x64.run ,點選 Next

    1 ./JetPack-L4T-2.3-linux-x64.run
  3. 指明安裝路徑後選擇部署的開發平臺
    根據需求選擇 Jetson TX1或者Jetson TX2,同樣也支援 TK1的部署


    "da"
  4. 彈出JetPack L4T Component Manager對話方塊
    由於我已經安裝好了所有的包,所以這邊的Action一欄是no action,如果沒有安裝過的話,會顯示install xxx。點選Next後,開始下載。
    JetPack 2.3下載介面


    "da"

    JetPack 3.0下載介面

    "da"

    這裡大家可以選擇不安裝OpenCV for Tegra,因為這個版本是2.4.13,對於USB攝像頭的讀取支援不是很好,另外對於CUDA靜態庫的讀取也有些問題,所以不推薦安裝,稍後會提示大家安裝OpenCV 3.1
  5. 網路配置和埠選擇
    安裝完成後進入網路配置選項,選擇通過路由器連線網際網路,同時將TX1連線到與主機同一個路由器上.
    選擇eth0埠,點選Next

  6. 設定TX1為Force USB Recovery Mode(強制USB恢復模式)
    彈出如圖所示終端視窗:


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

    關閉裝置,移除電源介面卡
    用自帶的Micro USB 轉 USB 資料線連線主機與TX1
    連線電源介面卡
    按下POWER按鈕
    按住FORCE RECOVERY 按鈕不放開,同時按一下RESET按鈕,等待兩秒鐘,鬆開FORCE RECOVERY 按鈕
    完成上述步驟後,可以在主機上通過 lsusb命令檢視是否含有Nvidia Corp裝置,確認存在後敲擊Enter,開始將作業系統以及開發包拷貝到TX1,中途連線TX1的顯示器會顯示Ubuntu 16.04 桌面系統

至此,系統已經刷寫完畢,下一步進行cuda,cudnn,opencv的配置,本教程採用效率更高的離線方式

拷貝離線安裝包及安裝指令碼

若使用預設的路由器方式傳輸檔案速度較慢,並且在傳輸過程中必須保證網路不被中斷,否則需要從頭再來,因此強烈建議採用穩定且快速的離線拷貝檔案的方式。

拷貝cuda安裝指令碼


"da"

拷貝cuda、cudnn安裝包

所有在JetPack中下載的安裝包均存在JetPack/jetpack_download中,拷貝出cuda8.0安裝包(cuda-repo-l4t-8-0-local_8.0.34-1_arm64.deb),cudnn安裝包(cuDNN-v5.1.zip)


"da"

TX1中安裝cuda

1.拷貝

123 cd ~mkdir cuda-l4tcp cuda-l4t.sh /home/usrname/cuda-l4t

2.檢視cuda-l4t.sh指令碼


"da"

3.安裝命令(需聯網)
1 bash cuda-l4t.sh cuda-repo-l4t-8-0-local_8.0.34-1_arm64.deb 8.0 8-0

4.完畢後匯入環境變數

12 export PATH=/usr/local/cuda-8.0/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH

TX1中安裝cudnn

1.解壓cuDNN-v5.1.zip,有三個deb安裝包
2.使用sudo dpkg -i指令依次安裝,但是預設安裝路徑是在usr/include和usr/lib下的,

12 sudo cp /usr/include/cudnn.h /usr/local/include/sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/lib/

TX1中配置opencv3.1

1.安裝依賴庫

1234567 sudo apt-add-repository universesudo apt-get updatesudo apt-get install -y build-essential make cmake cmake-curses-gui g++sudo apt-get install -y libavformat-dev libavutil-dev libswscale-devsudo apt-get install -y libv4l-dev libeigen3-dev libglew1.6-dev libgtk2.0-devsudo apt-get install python-numpy

注意:為了方便,這裡將opencv的所有依賴項與下面caffe工程所需依賴項的安裝命令統一寫入指令碼,然後執行該指令碼即可。以下是指令碼內容

12345678910 #!/bin/bashsudo apt-get updatesudo 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

12345678 Downloads opencv-3.1.0.zipcd ~unzip opencv-3.1.0.zipcd opencv-3.1.0mkdir buildcd buildcmake -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 演算法,可能出現以下錯誤:

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

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

修改為

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

重新編譯即可

TX1中配置基於caffe的工程

基於caffe的工程可以是rcnn,ssd
1.安裝依賴庫

12345678910111213 sudo add-apt-repository universesudo apt-get update -ysudo apt-get install cmake -y# General Dependenciessudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev \libhdf5-serial-dev protobuf-compiler -ysudo apt-get install --no-install-recommends libboost-all-dev -y# BLASsudo apt-get install libatlas-base-dev -y# Remaining Dependenciessudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev -ysudo apt-get install python-dev python-numpy -y

2.編譯caffe工程

123 Downloads ...cd caffecp Makefile.config.example Makefile.config

修改Makefile.config:

12345678 # cuDNN acceleration switch (uncomment to build with cuDNN).USE_CUDNN := 1# Uncomment if you're using OpenCV 3OPENCV_VERSION := 3# Uncomment to support layers written in Python (will link against Python libs)WITH_PYTHON_LAYER := 1

由於hdf5庫目錄更改,所以需要單獨新增:

12 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 ,建議安裝:

12 sudo apt-get install python-numpy python-setuptools python-pip cython python-skimage python-protobufmake pycaffe

此處感謝大神師兄Jalong_Ma的悉心教導!
大部分內容引自Jalong_Ma’s blog

轉載來自:http://huchaowei.com/2017/04/19/TX1/