【Jetson-Nano】jetson_nano安裝環境配置及tensorflow和pytorch安裝教程

本篇文章會介紹jetson nano系統的安裝及簡單測試,本文結束後完整的系統就搭好了。
文章較長,read用時較長,有硬件的小夥伴可同步實現使用,具體細節靈活應用,不必完全按照本文。


所寫內容全部原創,經過實測,參考請添加引用說明。


先讓大家看看長啥樣,各位觀衆!!!

1、外觀

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
簡簡單單來個6視圖。

2、 Jetson Nano的規格

在這裏插入圖片描述
建議從某東或某寶購買時帶個Micro usb電源和64G的 SD卡,供電穩定,存儲夠用。

3、Jetson Noao 激活

一、在你啓動NVIDIA Jetson Nano前,你需要做三件事:

  1. 一個 micro-SD card (最小16GB)
  2. 一個 5V 2.5A MicroUSB 電源
  3. 網線

二、下載 並flash .img 文件到你的micro-SD 卡里

  1. 1、 官方提供了三種方式format,分別用於windows,MAC,linux系統,我用的是windows。
    這個圖是我從參考內容中取的,寫博客時忘截了

  2. 2、下載的文件是
    在這裏插入圖片描述

  3. 3、解壓前有5G(解壓後10多個G,所以推薦64G卡), 系統是Ubuntu18.04LTS,就用官方推薦的Etcher來燒進去。
    我是買了官方的SD卡的,所以這個卡是做好的,直接可用。但還是格式化後走了一遍(不怕累)

  4. 4、將SD卡放到nano卡槽中,連接好鼠標、鍵盤、網線和顯示器就可以上電了。

這是我們的圖
上電後,一路安裝,會有ubuntu的一些設置,比如時區,鍵盤,用戶名啥的,系統我選中國,會有中文輸入法(下載很久,等不及了直接跳過,所以拼音不能用)。
5. 完成後的效果
在這裏插入圖片描述

4、 安裝系統包和prerequisites

包括四個方面的內容
4.1. 增加交換空間大小
4.2. ssh遠程連jetson nano
4.3. 安裝系統所需的包,配置python環境
4.4. 安裝jetson inference engine

4.1增加交換空間大小

這一步是必須的,顯存個內存是共享受的,物理內存只有4G,所以個人感覺加上好一些。Swap交換空間是在硬盤上,當物理內存RAM用完時,會開始使用。交換空間可以採用專用交換分區或交換文件的形式。在大多數情況下,不存在交換分區,因此唯一的選擇是創建交換文件。創建教程參考1參考2該鏈接,將添加swap file到ubuntu 18.04系統上。

  • first,檢查當前系統的效換空間
sudo swapon --show

在這裏插入圖片描述
檢查內存

free -h

在這裏插入圖片描述
內存有4G,交換空間2G.

  • second,增加2G交換空間
    a. 創那用於swap的文件
sudo fallocate -l 2G /swapfile

如果fallocate沒有安裝,將得到fallocate failed:Operation not supported的報錯信息。可以用以下命令創建:

sudo dd if=/dev/zero of=/swapfile bs=2048 count=1048576

b. 所有用戶都可以讀寫swap file,設置正確的權限:

sudo chmod 666 /swapfile

c. 設置交換空間

sudo mkswap /swapfile

d. 激活交換空間

sudo swapon /swapfile
#爲了使這個激活永久有效
sudo vi /etc/fstab
#粘貼 /swapfile swap swap defaults 0 0

在這裏插入圖片描述
e. 驗證增加空間是否有效

sudo swapon --show
sudo free -h

swap 在這裏插入圖片描述

4.2 ssh遠程連接nano並設置最大功率

4.2.1 遠程連接nano

有顯示器,但還是要用ssh ,有兩個好處

  1. 可以降低因爲顯示而喫的GPU資源
  2. 電流不夠的風險可以降低

在這裏插入圖片描述
查看用戶名使用命令:

whoami

查看ip地址用:

ifconfig

連接時還可以打開cmd,輸入:

ssh username@ip

會要輸入密碼的

4.2.2 切換高低功率

有兩種供電方式,10W和5W。

#查看當前是那個模式
sudo nvpmodel -q

在這裏插入圖片描述

#將當前模式切換到5W模式,將會自動關掉兩個cpu,只使用cpu1,2
sudo nvpmodel -m 1

兩種模式,0 是高功率10w,1是低功率5w,默認狀態是高功率。安裝時,切換到最大功率,因爲安裝時會用到許多外設,耗電量大,在執行完功率狀態切換後往往還要加一行:

sudo nvpmodel -m 0
sudo jetson_clocks

jetson_clocks將會使cpu頻率固定。另外nano有兩種供電方式,一種是5V 2.5A(10W)的microUSB供電;但如果你要有很多外設在(鍵盤、鼠標、wifi、顯示器)在使用,最好用5V 4A(20W)的供電方式,來保證nano的正常工作。

4.2.3 更新系統並移除無用軟件

移除LibreOffice會爲系統省很多空間,這個軟件對做深度學習和計算機視覺算法也沒有太多用

sudo apt-get purge libreoffice*
sudo apt-get clean

接着,更新系統:

sudo apt-get update && sudo apt-get upgrade

4.3 安裝系統所需的包:

本節將配置系統所需的包

4.3.1配置系統級的安裝包

sudo apt-get install git cmake
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install libhdf5-serial-dev hdf5-tools
sudo apt-get install python3-dev
sudo apt-get install nano locate

聯網成功,網速順利的話,將花費幾分鐘(可以改安裝源,請自行百度)。
接着安裝scipy的依賴和系統級別的cython:

sudo apt-get install libfreetype6-dev python3-setuptools
sudo apt-get install protobuf-compiler libprotobuf-dev openssl
sudo apt-get install libssl-dev libcurl4-openssl-dev
sudo apt-get install cython3

如果要裝TensorFlow Object Detection (TFOD) API ,還要裝xml的工具:

sudo apt-get install libxml2-dev libxslt1-dev

4.3.2 更新CMake

更新cmake,能幫助正確從源碼來編譯安裝opencv(儘管nano裝完後自帶opencv):

wget http://www.cmake.org/files/v3.13/cmake-3.13.0.tar.gz  #下載,版本號可到官網上查
tar xpvf cmake-3.13.0.tar.gz cmake-3.13.0/  #解壓
cd cmake-3.13.0/
./bootstrap --system-curl
make -j4 #編譯
echo 'export PATH=~/cmake-3.13.0/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc #更新.bashrc

這樣就更新完cmake.

4.3.3 配置python環境

先安裝pip,python的包管理工具,(如果有pip,這一步可以不執行)

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
rm get-pip.py

下文中將使用pip來安裝python的一些包,對於一些網絡不好的情況,建議先改變pip的安裝源到國內:

#如清華的源
https://pypi.tuna.tsinghua.edu.cn/simple
#豆瓣源
https://pypi.doubanio.com/simple
#臨時改源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
#持久的設爲默認源
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#如果您到 pip 默認源的網絡連接較差,臨時使用鏡像站來升級 pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

我們將使用python的虛擬環境,來保證你使用的環境互相獨立。
使用virtualenvvirtualenvwrapper,(之前嘗試過anaconda,由於各種包編譯的問題 ,安裝過程不是很順利,爲了快速使用,沒有去做過深研究),安裝命令:

pip install virtualenv virtualenvwrapper

安裝完之後,需要更新.bashrc

vim ~/.bashrc

在文件底部輸入

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs #指定所有的需擬環境的安裝位置
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 #指定解釋器
source /usr/local/bin/virtualenvwrapper.sh#進行激活生效

保存並退出,使用source 重新載入

source ~/.bashrc

接着創建python的虛擬環境,

mkvirtualenv nano -p python3 #-p 是指定解釋器是python3

在這裏插入圖片描述
創建後直接進入了。
我的名字是nano,你可以自己定義。
一些virtualenvwrapper的常用命令:

#創建一個環境
mkvirtualenv name #在~/.virtualenvs下安裝name的需擬環境
#激活工作環境
workon name
#workon後不加任何東西可以列出所有虛擬環境
#退出當前虛擬環境
deactivate
#刪除虛擬環境,需先退出
rmvirtualenv name
#列出所有虛擬環境
lsvirtualenv

4.3.4 系統工具jtop和nvidia-smi的結合

Jetson Nano中有個工具jtop, 可以同時查看CPU和GPU資源以及溫度,另外就是可以把你當前的library show出來

sudo pip install --upgrade pip
sudo -H pip install jetson-stats
sudo jtop

在這裏插入圖片描述
選1ALL的內容
在這裏插入圖片描述
2GPU的內容
在這裏插入圖片描述
3CTRL的內容
在這裏插入圖片描述
4INFO的內容
在這裏插入圖片描述
按q退出。
下圖爲低功耗下的圖:
在這裏插入圖片描述

4.3.5 安裝tensorflow,kears,scikit-learn等必須包

進入虛擬環境

workon nano

安裝numpy

pip install numpy  ##這個版本會在後邊有可能有報錯,是版本不匹配的原因,繼續看本文後續內容

因爲需要編譯,大約需要花20多分鐘
numpy的安裝
接着安裝tensorflow,不要使用pip install tensorflow-gpu,因爲NVIDIA提供了官方的版本(官方會逐漸更新,安裝合適自己的就可以),安裝時會把必須的包都安裝上,整個過程比較耗時,網絡原因需多次嘗試,當前對tensorflow2.x版本可能還不是很好,這個希望大家自己試試,1.14中也加入了tf.keras功能,還穩定可用。

pip install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.14.0+nv19.7

有個報錯:
在這裏插入圖片描述
在h5py的地方會花費很長時間,建意單獨安裝。而且會有一個包的安裝報錯(也可能是國內網不好或其它原因),單獨安裝。

在這裏插入圖片描述
接着再次安裝tensorflow,耗時很長,大約40分鐘:
在這裏插入圖片描述
接着安裝其它包,每個包都很耗時,耐心等待,若不成功,多次嘗試,考慮到安裝太慢,可以多開幾個shell來實現(keras還有scikit-learn jupyter-notebook是需要先安裝scipy的,所以可以先安裝其它的):

pip install scipy
pip install keras
pip install sklearn #scikit-learn
pip install pillow
pip install matplotlib
pip install jupyter #jupyter notebook

在這裏插入圖片描述
pillow安裝幾分鐘
在這裏插入圖片描述
scipy安裝了一個多小時
接着安裝keras用了幾分鐘:
在這裏插入圖片描述
接着安裝sklearn,報錯,定位到少包:
在這裏插入圖片描述
不報錯就不用下面的命令來安裝

pip install Cython

在這裏插入圖片描述
大約安裝用了20分鐘
在這裏插入圖片描述
jupyter 大約10分鐘
安裝matplotlib會報錯:
在這裏插入圖片描述
看起來是字體的問題,通過以下命令實現:

sudo apt-get install libfreetype6-dev

大約3分鐘完成所有安裝
在這裏插入圖片描述
如果個人還有什麼麼需要的包,可以自己用pip來安裝就可以

4.3.6安裝包是否生效測試

python -c 'import numpy; print(numpy.__version__)'
python -c 'import jupyter; print(jupyter.__version__)'
python -c 'import PIL; print(PIL.__version__)'
python -c 'import matplotlib; print(matplotlib.__version__)'
python -c 'import tensorflow; print(tensorflow.__version__)'
python -c 'import keras; print(keras.__version__)'

其它都沒有問題,只有tensorflow會報錯,同時以tensorflow爲backend的keras報同樣錯:
在這裏插入圖片描述
查詢後發現,是numpy版本太高原因(當前1.17)
所以

pip install numpy==1.16

又一個20分鐘過去了。。。。
安裝成功,大功告成
再次測試,全部通過。
在這裏插入圖片描述

5、 安裝jetson inference engine

5.1 inference engine的安裝

Jetson nano .img 已經在jetpack 安裝(JetPack,cuda,cudnn,opencv這些都安裝了),所以直接來到構建jetson推理engine位置。

git clone https://github.com/dusty-nv/jetson-inference
cd jetson-inference
git submodule update --init
mkdir build
cd build
cmake ..

在這裏插入圖片描述

在執行cmake過程中要下載幾個G的數據,有各種模型(所以要用64G 的SD卡),但是網絡原因,都沒有下載下來,所以個人建意全部跳過(能上外網的除外)
在這裏插入圖片描述
直接quit 後期單獨處理
在這裏插入圖片描述
當然也是直接quit了。

後期可以單獨下載,參見指導
在這裏插入圖片描述
接着執行:

make
sudo make install

make
在這裏插入圖片描述
sudo make install
在這裏插入圖片描述
也要可以看來jetson包安裝到/usr/lib/python3.6/dist-packages下邊

5.2 模型下載和pytorch相關安裝

單獨下載模型及pytorch可以參見說明1說明2,但上不了外網是下載不下來的。

cd jetson-inference/tools
./download-models.sh
./install-pytorch.sh

對於下載模型部分,解決方法是,參見說明
(1)安裝git和cmake, 並檢出庫到本地:
sudo apt-get install git cmake
git clone https://github.com/dusty-nv/jetson-inference

(2)更新submodule
cd jetson-inference
git submodule update --init
(3)切換到國內鏡像:

sed -in-place -e ‘s@https://nvidia.box.com/shared/static@https://bbs.gpuworld.cn/mirror@g’ CMakePreBuild.sh

(修改文件目錄:jetson-inference/CMakePreBuild.sh)

文件裏面:https://nvidia.box.com/shared/static 替換成:https://bbs.gpuworld.cn/mirror
也可以替換成https://github.com/dusty-nv/jetson-inference/releases
make install 之後也可以單獨打開https://github.com/dusty-nv/jetson-inference/releases
從上邊直接下載想要使用的模型下載到path/jetson-inference/data/networks,然後:

cd <jetson-inference>/data/networks/
tar -zxvf <model-archive-name>.tar.gz

對於pytorch 的下載沒有辦法,放到網盤下載需要的進行安裝就可以。
在這裏插入圖片描述
裏邊還有一個anaconda for aarch64 archiconda的版本,可以結合pip和conda來安裝相關python包,有興趣的可以試一下。
以下是說明文檔中的內容,我們照着實現。
在這裏插入圖片描述
驗證
在這裏插入圖片描述
在這裏插入圖片描述
大概十幾分鍾安裝完成
安裝 torchvision

sudo apt-get install libjpeg-dev zlib1g-dev
git clone -b v0.3.0 https://github.com/pytorch/vision torchvision
cd torchvision
python setup.py install #在虛擬環境中安裝,不需要sudo
cd ../  # attempting to load torchvision from build dir will result in import error

在這裏插入圖片描述
安裝十幾分鍾,完成。
cd … 後是這個樣的:
在這裏插入圖片描述

5.3 驗證pytorch 和torchvision

import torch
print(torch.__version__)
print(touch.cuda.is_available())
import torchvision
print(torchvision.__version__)

在這裏插入圖片描述

5.4 虛擬環境環境變量的改變

以上部分完成所有必備安裝,還需要的幾個小修正如下:

5.4.1 配置opencv, jetson,tensorrt

默認環境是可以導入這些包的,但是使用virtualenv會失敗,這裏主要針對這個使可以import cv2成功,也可以使用import jetson(/home/jetnano/jetson-inference/python/examples下有python的example,都會導入jetson)
在這裏插入圖片描述
不配置的狀態下:
在這裏插入圖片描述
會報ModuleNotFoundError: No module named 'cv2’以及ModuleNotFoundError: No module named 'jetson’的錯。
以下爲修正方式,從而將openvc 和jetson與virtualenv聯接:
先找到opencv和jetson的位置,有兩種方法;

  • 方法一:find的方法
sudo find / -name jetson
sudo find / -name jetson*
sudo find / -name cv2
sudo find / -name cv2*

加*還是不加這個就是試的,如圖所示:
在這裏插入圖片描述
找到jetson路徑是:/usr/lib/python3.6/dist-packages/jetson,opencv的路徑是:/usr/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so,(這個名字可以看出這是支持cuda的)同理,tensorrt路徑是:/usr/lib/python3.6/dist-packages/tensorrt

  • 方法二:sys.path的方法

另外一種找路徑的方法是:在非虛擬環境下,直接導入cv2和jetson成功,打印出此時python的環境變量
在這裏插入圖片描述
所以這兩個包必然在這些環境變量中的一個,接着打開別一個shell,進入虛擬環境,逐個把系統python的環境變量加入並導入庫做嘗試:

import sys
print(sys.path)
paths = ['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages'] 
for p in paths:
    try:
        sys.path.append(p)
        import sys
        print(p)
    except:
        pass

在這裏插入圖片描述
同理,找jetson的路徑.
所以找到環境變量地址是同一個:/usr/lib/python3.6/dist-packages
** 接着添加環境變量到虛擬環境**

  • 方法一:使用sys.append

在以後執行的過程中,都要加入以下代碼:

import sys
sys.path.append('/usr/lib/python3.6/dist-packages')
  • 方法二:使用virtualenvwrapper的add2virtualenv

或者藉助virtualenvwrapper的功能:

add2virtualenv /usr/lib/python3.6/dist-packages
lssitepackages

在這裏插入圖片描述
可以看到,sys.path裏多了我們添加的內容
在這裏插入圖片描述
可以通過以下命令刪除

rm ~/.virtualenvs/nano/lib/python3.6/site-packages/_virtualenv_path_extensions.pth
lssitepackages
  • [ ]方法三 : 設置軟鏈接
cd  ~/.virtualenvs/nano/lib/python3.6/site-packages/
ln -s /usr/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so
ln -s /usr/lib/python3.6/dist-packages/jetson
ls -l

可以看到:
在這裏插入圖片描述
在這裏插入圖片描述
如果加錯了可以刪除:

rm -rf #軟鏈地址
  • 方法四:利用PYTHONPATH

填加PYTHONPATH可以被sys.path找到,
在虛擬環境bin/activate文檔末尾添加 export PYTHONPATH="/the/path/you/want"

vi ~/.virtualenvs/nano/bin/activate
export PYTHONPATH=/usr/lib/python3.6/dist-packages:$PYTHONPATH

最後不用可以把這一行註釋掉
在這裏插入圖片描述
最後,查看一下/usr/lib/python3.6/dist-packages下邊都有什麼庫:
在這裏插入圖片描述
後期還要用tensorrt,uff這一類的,所以綜上所述,我們選擇方法二(我的選擇)或方法四

5.4.2 pycuda安裝

pycuda會在使用tensorrt的python api時用到
填加PATH到.bashrc,具體路徑,看自己cuda版本,具體寫適合自己的

vi ~/.bashrc
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_ROOT=/usr/local/cuda
source ~/.bashrc

然後安裝pycuda

pip insatll pycuda

大約用時10分鐘

總結

到此,Jetson nano的配置就講完了,關於應用,會寫一系列的應用項目.
本文系原創,如有引用,請註明標註出處。

引用

文中所有鏈接部分都是引用參考內容及出處,一併致謝,些處不再過多羅列.如有侵權,請聯繫本人.

[1] https://www.pyimagesearch.com/2019/05/06/getting-started-with-the-nvidia-jetson-nano/
[2] https://medium.com/@jackycsie/jetson-nano-9d89cbf2fc18
[3] https://chtseng.wordpress.com/2019/05/01/nvida-jetson-nano-%E5%88%9D%E9%AB%94%E9%A9%97%EF%BC%9A%E5%AE%89%E8%A3%9D%E8%88%87%E6%B8%AC%E8%A9%A6/
[4] https://www.dlology.com/blog/how-to-run-keras-model-on-jetson-nano/
[5] https://thenewstack.io/tutorial-configure-nvidia-jetson-nano-as-an-ai-testbed/
[6] https://stackoverflow.com/questions/4757178/how-do-you-set-your-pythonpath-in-an-already-created-virtualenv/17963979
[7] https://www.pyimagesearch.com/2020/03/25/how-to-configure-your-nvidia-jetson-nano-for-computer-vision-and-deep-learning/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章