高通台灣AI黑客松|競賽說明會
|

Nvidia Jetson Nano 初體驗:安裝與測試

   

作者:曾成訓(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

查看目前支援的 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 部落格、原文連結;責任編輯:賴佩萱)

曾 成訓

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 曾 成訓

人到中年就像沒對準的描圖紙,一點一點的錯開,我只能當個Maker來使它復位。

Share This Post On
468 ad

9 Comments

  1. 你好,我下載了您提供的image檔,也在virtualenv中link到了site-packages,但是我import cv2的時候還是說找不到module,請問有什麼解決方式嗎?

    Post a Reply
  2. 不好意思可以問一下都安裝好了要怎麼把yolo開啟讓他能夠運作

    Post a Reply
  3. 您好,
    安裝到這邊的時候就出現錯誤,請問有特別的地方需要調整嗎?謝謝
    pip install scipy

    pip install keras

    pip install scikit-learn

    Post a Reply
    • 你出現的錯誤訊息是?

      Post a Reply
  4. 您好,
    我學習照著您的方式安裝,但是到這個地方都會有錯誤
    pip install scipy

    pip install keras

    pip install scikit-learn

    Post a Reply
  5. 您好,請問能提供您範例的code嗎?非常謝謝您。

    Post a Reply
    • 官方YOLO的pre-trained weights for COCO dataset就是很好的範例了,您可以下載它然後用 YOLO3-4-Py去執行看看。

      Post a Reply
  6. 請問先生可否提供我您購買4A電源線power jack的網址?

    Post a Reply
    • 可以上ICShop網站找找喔~

      Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *