作者:曾成訓(CH.Tseng)
Nvidia Jetson 是 Nvidia 為 Embedded System 量身打造的運算平台,其中包含了 TK1、TX1、TX2、AGX Xavier 以及最新也最小的「Nano」開發板。這一系列的 Jetson 平台皆包含一顆 Nvidia 為隨身裝置所開發的所有原件,內含 ARM CPU、Nvida GPU、RAM、南北橋、代號為 Tegra 的 SoC 處理器等。
Jetson 家族比較

Jetson 不同開發版的性能比較(圖片來源:曾成訓提供)
Jetson Nano & Raspberry Pi
由下圖可見, Jetson Nano 與樹莓派在尺寸上的差異,雖然兩者都攻 Maker 市場,但在功能及配備上還是有不小的差異;儘管樹莓派在運算效能上遠遠落後 Jetson Nano,但其內建有 WiFi、Bluetooh、Audio等,且小巧的體積及電源耗用,在較為嚴苛的環境仍佔有優勢。

樹莓派(左)體積較 Jetson Nano(右)小(圖片來源:曾成訓提供)

樹莓派和 Jetson Nano 的性能比較
Jetson Nano 的電源供應
目前網路上已有許多關於 Jetson Nano 的開箱文及影片,因此這邊就略過不提。不過,如果您在購買 Jetson Nano 時沒有額外購買電源供應器,僅透過一般 PC 上的 USB port 來供電,那麼當 Jetson Nano 在執行較多的運算或程式時,很有可能會直接當機或開不起來,官方的建議是使用 A dafruit 此款 2.5 A 電源供應器(USD $ 7.5),如下圖所示:

A dafruit 2.5 A 電源供應器(圖片來源:adafruit)
我在露天找到下面這款便宜又大碗的 4 A 電源,僅 TWD $ 240(接頭為 5.5 x 2.1-2.5mm),目前使用上還沒有遇到什麼問題。

(圖片來源:曾成訓提供)
Jetson Nano 的 Power jack 可支援 5 V 4 A 的輸入,因此改用 Power jack 而不使用 Micro–USB,如此在電源供應上會比較穩定,也讓 Jetson Nano 可以較順利地執行,不過記得 J48 要插上 jumper 後才會轉為由 Power jack 來供電(如下圖紅圈)。

記得將 J48 插上 jumper(圖片來源:曾成訓提供)
下載 Image 檔及開機
請準備一片 16 GB 以上的 SD 卡,接著下載官方 image 檔,檔案約有 8 G 大小,下載後使用 Win 32 Disk Imager 寫入 SD 卡,插入 Jetson Nano 後開機便可直接使用。

SD 卡從下圖方向插入,它和樹莓派的前代一樣有彈簧卡榫,但並不會有不小心按到彈出的缺點(圖片來源:曾成訓提供)
以下為開機後的一些設定畫面,由於網路上教學已經很多,在這邊先略過不提。

(圖片來源:曾成訓提供)

(圖片來源:曾成訓提供)

(圖片來源:曾成訓提供)

(圖片來源:曾成訓提供)
目前 Nvidia Jetson 系列所使用的 Linux OS 稱為 Linux4Tegra,源碼修改自 Ubuntu 18.04 版,並針對Nvidia 的硬體做優化,而且已預裝了 JetPack、cuda、cudnn、openc 等軟體,不需要另行安裝。
Virtualenv 的安裝及設定
設定 OpenCV
由於內建已安裝了 OpenCV,因此不用再重新安裝,但是需要在 python virtual environment 中 link 到 site-packages。
測試看看:

(圖片來源:曾成訓提供)
看來 OpenCV 預裝的 3.3.1 版本不太新,而且該版本沒有支援 Deep Neural Networks 的 DNN 模組,不過由於 Nvidia GPU 也沒有支援 OpenCV DNN,因此影響不太大。
安裝常用的模組
安裝 Scipy、Scikit-learn、Keras、Jupyter notebook
想到能夠在 GPU 上執行這些常用的 AI 軟體就非常興奮,雖然只是在小小的 Jetson Nano 上。
安裝 Tensorflow
測試看看,版本為 1.13.1:
開啟 SWAP
預設並沒有設定 SWAP,所以 Jetson Nano 一運作便超過記憶體容量然後就立即當機了,可以先輸入下方的指令看看,顯示沒有設定任何的 SWAP。
一般 idle 情況下只有 2.6 G 可用,如下圖所示:
SD 卡空間目前剩下約 17 G 可用,如下圖所示:
理想的 SWAP size 應是 RAM 的二倍,但由於 SD 空間不是很充裕,先設定 4 G SWAP,如下圖所示:
建立並啟用 SWAP,如下圖所示:
輸入 free -h 確認已經有 4 G SWAP 空間。
由於重開機後 SWAP 的設定會跑掉,因此要記得將 SWAP 加到 fstab 的設定檔中。
安裝 DLIB
這個做法是讓我們也能在 Jetson GPU 上使用 DLIB 的機器學習、計算機視覺、圖像處理等函式庫。您可採用下列的方式從 source 安裝,也可簡單的透過 php install dlib 來安裝,但注意使用 pip 安裝無法使用到 GPU。
安裝過程中,DLIB 會自動偵測已安裝的 CUDA 版本(Nnao 為 10.0)。
如果過程中有碰到 error:「fatal error:Python.h: No such file or directory 」,請再找到 Python.h 的 path 後,再設定 CPLUS_INCLUDE_PATH 的環境變數,重新安裝即可。
sudo find / -name “Python.h" /usr/include/python3.6m/Python.h /usr/include/python2.7/Python.h export CPLUS_INCLUDE_PATH=/usr/include/python3.6m
安裝 Darknet
Darknet framework 是一款讓 Jetson Nano 可訓練或透過 Darknet 推論 YOLO 的 model。請先將下列兩行加到 ~/.bashrc 後方。
將 Makefile 中的下列參數內容更改為 1。
更改後存檔,執行 make 即完成。
安裝 YOLO3-4-Py
這是讓 Jetson Nano 可透過 Python 在 GPU 推論 YOLO 的 model。
安裝 Jetson.GPIO
安裝這個好讓我們能透過 Python 操控 Jetson Nano 上的 40 組 GPIO 接腳。
最後,請重開機或執行。
安裝 Jetson stats
這是一套非常好用、針對 Nvidia Jetson 系列所開發的資源監控工具。
執行 ntop,可看到 CPU、GPU、memory、Disk 的耗用情況、以及電量、溫度等資訊,如下圖所示:
執行 jetson_release 可顯示本環境中所安裝的 Nvidia Jetson 各項版本資訊,如下圖所示:
使用 Keras+Jupyter notebook 訓練 CIFAR 10
訓練時 Jetson Nano 的 GPU 使用率約在 60~80% 之間,每個 epoch 執行時間約 30 秒,訓練過程及結果請參考這邊 。
CIFAR 10 訓練時的資源秏用,如下圖所示:
坦白說,這樣的執行速度並沒有讓人很滿意,使用 i7 7600 K 每個 epoch 的速度約 8 秒,仍遠勝 Jetson Nano 的 128 GPU Cores,看來將 Nano 用來作為 training 的用途是不太實際的想法。
執行 Tensorflow models
TensorRT 是 Nvidia 推出專用於模型推理的一種神經網路推理加速器,可透過優化模型來加速推論時的速度,尤其應用於 Jetsosn 系列,速度可提升至 8~15 倍以上。不過,為了實際感受 Jetson Nano 128 Core GPU 的速度,在下方的範例我都沒有使用 TensorRT,而是直接使用 TF Frozen Graph,因此 FPS 的數字看起來並沒有想像中那麼美好,但以 $99 美元的開發板來說,這速度和樹莓派比較起來已經相當超質了。
- 自己訓練的指尖/手掌偵測模型(SSD–MobileNet V2):透過 OpenCV+Python call Tensorflow-gpu 執行。
- YOLOV3-Tiny + COCO Dataset:使用 darknet 程式直接執行,未透過 python
- YOLOV3-Tiny + 自己訓練的行車道路缺陷偵測模型:使用 darknet 程式直接執行,未透過 python
(本文經作者同意轉載自 CH.TSENG 部落格、原文連結;責任編輯:賴佩萱)
- 【模型訓練】訓練馬賽克消除器 - 2020/04/27
- 【AI模型訓練】真假分不清!訓練假臉產生器 - 2020/04/13
- 【AI防疫DIY】臉部辨識+口罩偵測+紅外線測溫 - 2020/03/23
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!
2020/06/24
你好,我下載了您提供的image檔,也在virtualenv中link到了site-packages,但是我import cv2的時候還是說找不到module,請問有什麼解決方式嗎?
2019/07/15
不好意思可以問一下都安裝好了要怎麼把yolo開啟讓他能夠運作
2019/07/02
您好,
安裝到這邊的時候就出現錯誤,請問有特別的地方需要調整嗎?謝謝
pip install scipy
pip install keras
pip install scikit-learn
2019/07/08
你出現的錯誤訊息是?
2019/07/02
您好,
我學習照著您的方式安裝,但是到這個地方都會有錯誤
pip install scipy
pip install keras
pip install scikit-learn
2019/06/24
您好,請問能提供您範例的code嗎?非常謝謝您。
2019/07/08
官方YOLO的pre-trained weights for COCO dataset就是很好的範例了,您可以下載它然後用 YOLO3-4-Py去執行看看。
2019/06/05
請問先生可否提供我您購買4A電源線power jack的網址?
2019/06/10
可以上ICShop網站找找喔~