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。
所需裝置
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
-
為 JetPack-L4T-2.3-linux-x64.run 增加執行許可權
12 cd ~/JetPackchmod +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下載介面
JetPack 3.0下載介面
這裡大家可以選擇不安裝OpenCV for Tegra,因為這個版本是2.4.13,對於USB攝像頭的讀取支援不是很好,另外對於CUDA靜態庫的讀取也有些問題,所以不推薦安裝,稍後會提示大家安裝OpenCV 3.1 -
網路配置和埠選擇
安裝完成後進入網路配置選項,選擇通過路由器連線網際網路,同時將TX1連線到與主機同一個路由器上.
選擇eth0埠,點選Next -
設定TX1為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 桌面系統
至此,系統已經刷寫完畢,下一步進行cuda,cudnn,opencv的配置,本教程採用效率更高的離線方式
拷貝離線安裝包及安裝指令碼
若使用預設的路由器方式傳輸檔案速度較慢,並且在傳輸過程中必須保證網路不被中斷,否則需要從頭再來,因此強烈建議採用穩定且快速的離線拷貝檔案的方式。
拷貝cuda安裝指令碼
拷貝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)
TX1中安裝cuda
1.拷貝
123 | cd ~mkdir cuda-l4tcp cuda-l4t.sh /home/usrname/cuda-l4t |
2.檢視cuda-l4t.sh指令碼
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