jetson nano開發使用的基礎詳細分享

良知猶存發表於2021-12-26

前言:

最近拿到一塊jetson nano 2GB版本的板子,折騰了一下,從燒錄映象、修改配件等,準備一篇開箱基礎文章給大家介紹一下這塊AI開發板。

作者:良知猶存

轉載授權以及圍觀:歡迎關注微信公眾號:羽林君

或者新增作者個人微信:become_me


Jetson nano初步介紹:

Jetson Nano是Nvidia在TX2和Xavier獲得成功後推出的低配版GPU運算平臺。在官方的資料上,Jetson Nano公佈的引數如下:

技術規格:

包含了一塊128核Maxwell架構的GPU,雖然已經是幾代前的架構,不過因為用於嵌入式裝置,從功耗、體積、價格上也算一個平衡。Nano的計算能力不高,勉強可以使用一些小規模、並且優化過的網路進行推理,訓練的話還是不夠用的。

記憶體減半這種情況確實讓人有些顧慮,官方的主要應對措施是換用更輕量的桌面環境LXDE。這個已經在10月21日剛釋出的JetPack 4.4.1映象中提供。

那麼這塊板子能幫我們實現是什麼呢?

這是我從其他人文章摘錄過來的一些分析,供大家參考

Jetson Nano 2GB Developer Kit雖然與4GB的nano相比,將記憶體容量砍半,但價格卻銳減40%,對於用這款開發元件作為入門學習教材的使用者來說,是個相當划算的取捨,筆者也將在這篇文章中分析2種版本的硬體規格差異,以及實際效能比較。

Jetson Nano 2GB Developer Kit開宗明義的目標就是推廣教育市場,所以在推出破盤“學生價”的同時,也不會將規格閹割太多,以免影響到功能與應用。

Jetson Nano 2GB Developer Kit(文中以2GB版簡稱)與原版Jetson Nano Developer Kit(文中以原版簡稱)最大的差別,當然就是名稱所暗示的2GB版僅搭載2GB記憶體,而原版則是搭載4GB,兩者除了容量有所差異外,在通道寬度與時脈、頻寬方面則皆相同,此外兩者的處理器、繪圖處理器也都相同,因此可以預期執行小型程式的效能並不會有太大落差,但2GB版可能會因記憶體容量不足,在執行大型程式的時候需要通過Swap(Linux的換置空間,可以理解為虛擬記憶體)來儲存程式資料,進而影響效能。

另一個可能會影響使用的規格,則是攝影機的連線端子。最初期的原版只有1組MIPI CSI-2端子,後期增加為2組,而2GB版則改回1組,因此只能同時連線1組MIPI CSI-2介面攝影機。

除此之外2GB版也取消了M.2 Key E無線網路模組插槽、DisplayPort圖片輸出端子,並將4組USB 3.2 Gen1改為1組USB 3.2 Gen1加2組USB 2.0,這個改變對創客來說可能影響不大,但對想將Jetson Nano Developer Kit當成迷你計算機、多媒體娛樂機的使用者來說影響就會比較大。

最後2GB版將電源輸入由5V DC插座改為USB Type-C端子,這個對於許多使用者來說或許更為方便,可以視為正面的功能改進。

至於和Raspberry Pi 4或是Coral Dev Board等定位相近的產品相比,2GB版不但維持效能領先的優勢,更在降價後增加了價格競爭力。另一方面,2GB版依然與原版相同能夠支援CUDA繪圖處理器加速運算,以及TensorFLow、PyTorch、Caffe、MxNet等業界常見,甚至應用於大型運算中心的軟體框架,對於學習程式開發來說相當吃香。
雖然2GB版的價格比Raspberry Pi 4貴,但是效能、功能、支援的軟體框架都更強大。

根據NVIDIA官方提供的效能對照表,2GB版在不同AI軟體的效能表現能達到Raspberry Pi 4的數十倍之譜。(圖中將Raspberry Pi 4的效能表現標準化為1)

在作業系統部分,筆者使用NVIDIA提供的最新版本Jetson Nano映象檔案,安裝完成後會發現它的桌面環境改為LXDE18.04,與先前的Ubuntu介面有些許不同,但是整體操作仍相當接近。

值得注意的是,在第一次開機的初始設定過程中,系統會建議使用者啟用Swap功能,若選擇預設選項,系統則會自動建立容量約為4.95GB的換置空間,以在主記憶體容量不足的時候儲存資料,發揮虛擬記憶體的功效。不過由於Swap的實際路徑為microSD記憶體卡,所以頻寬與訪問效能將受到很大的限制,而且反覆訪問也可能會加速耗損記憶體卡壽命。

Jetson Nano可以執行各種各樣的高階網路,包括流行的ML框架的完整原生版本,如TensorFlow,PyTorch,Caffe / Caffe2,Keras,MXNet等。通過實現影像識別,物件檢測和定位,姿勢估計,語義分割,視訊增強和智慧分析等強大功能,這些網路可用於構建自動機器和複雜AI系統。

多流視訊分析,Jetson Nano可實時處理多達8個高清全動態視訊流,並可部署為網路視訊錄影機(NVR),智慧相機和物聯網閘道器的低功耗邊緣智慧視訊分析平臺。NVIDIA的DeepStream SDK 使用ZeroCopy和TensorRT優化端到端推理管道,以在邊緣和本地伺服器上實現最佳效能。下面的視訊顯示了Jetson Nano在8個1080p30流上同時執行物體檢測,基於ResNet的模型以全解析度執行,吞吐量為每秒500萬畫素(MP / s)。

下圖顯示了線上提供的流行模型的推理基準測試結果。有關在 Jetson Nano上執行這些基準測試的說明,請參見 此處。推理使用批量1和FP16精度,採用 JetPack 4.2附帶的NVIDIA TensorRT加速器庫。Jetson Nano在許多場景中都具有實時效能,能夠處理多個高清視訊流。
使用Jetson Nano和TensorRT的各種深度學習推理網路的效能,使用FP16精度和批量大小1

2GB版與4G原版的效能表現相差無幾,並沒有因為是閹割版而有明顯落差,表現可以說讓人相當滿意。其中原因不外乎是雙方的處理器、繪圖處理器規格完全相同,且也都可以使用10W的電力模式,讓彼此在運算效能部分可以有一樣的表現。

從雙方的規格差異來看,會造成整體效能落差的主要因素,仍在程式的記憶體消耗量,而Jetson Benchmarks工具可能沒有觸碰到該瓶頸。若程式使用超過2GB的記憶體,系統就需要將部分資料儲存於Swap,將形成訪問效能瓶頸,並影響整體效能表現。

由於2GB版的目標使用者群體為AI程式與AIoT裝置的入門者,撰寫大型程式的機會不大,因此考量價格與效能的平衡,這樣確實是不錯的取捨,很適合教育單位或初學者選用。

介紹完使用場景以及一些效能分享,接下來給大家介紹一下硬體資訊

大家可以在官網裡面搜尋對應的開發板,檢視對應的介面資訊,點選下面的網站 https://developer.nvidia.cn/embedded/learn/getting-started-jetson#support

我使用的是2GB的版本,所以我裡面選擇了 Jetson Nano 2GB Developer Kit
開啟其中的User Guide選項

選中之後我們就可以看到板子詳細的硬體資訊。或者大家可以直接用這個傳送門檢視資訊。

詳細的硬體資訊介紹,

配合上圖給大家介紹一下這塊板子,硬體一一對應的位置:

標號 詳細作用
[DS1] 電源LED;當顯影劑套件通電時亮起
[J1] Jetson模組的SO-DIMM接頭。模組預先組裝在開發工具包上
[J2] 用於5V⎓3A電源的USB C型電源聯結器。見電源部分
[J3] RJ45乙太網聯結器。參見網路部分
[J4] HDMI介面
[J5] 用於MIPI-CSI2攝像機的攝像機聯結器。請參見“攝影機”部分
[J6] 40針頭:包括電源引腳(+5V/+3.3V)和I2C(2x)、UART、SPI(2x)、I2S和GPIO的介面訊號引腳
[J7] 4針風扇控制頭。支援脈寬調製(PWM)輸出和轉速錶輸入
[J8] 可選幣形電池插座
[J9] USB 3.0 A型聯結器。限於1A總功率輸出
[J10] 兩個USB 2.0 A類聯結器堆疊,僅支援主機模式
[J11] 可選按鈕頭(2x4);包括復位/強制恢復/電源按鈕和自動上電禁用的連線
[J12] 按鈕頭(1x12);包括電源LED、復位/強制恢復/電源按鈕、UART和自動上電禁用的連線
[J13] 支援恢復模式和裝置模式的Micro USB 2.0聯結器

40 針接頭 (J6)

40 引腳接頭提供對電源、接地和介面訊號引腳的訪問。

電源引腳

有兩個 3.3V 電源引腳和兩個 5V 電源引腳。這些是不可切換的;當開發人員套件連線到電源時,電源始終可用。

兩個 5V 引腳可用於以每個 2.5A 的電流為開發人員套件供電。(不要同時通過這些引腳和 USB-C 聯結器為開發人員套件供電。)
介面訊號引腳
所有訊號使用 3.3V 電平
預設情況下,所有介面訊號引腳都配置為 GPIO,支援 I2C 和 UART 的除外

12 針按鈕接頭 (J12)

該頭提供 GPIO 來控制板的狀態。我們額外加的套件的外殼可以連線到此接頭。

Pin 名稱 描述 Power
1 電源指示燈 - 連線到 LED 陰極以指示系統睡眠/喚醒(系統處於睡眠模式時關閉) +5V
2 電源指示燈 + 連線到 LED 陽極(見引腳 1) +5V
3 UART2_RXD 收到 + 3.3V
4 UART2_TXD 傳送 + 3.3V
5 鎖存器 連線引腳 5 和引腳 6 以禁用自動開機並需要按下電源按鈕(或等效按鈕) +5V
6 閂鎖設定按鈕 連線引腳 5 和引腳 6 以禁用自動開機並需要按下電源按鈕(或等效按鈕) +5V
7 GND
8 復位按鈕 將常開按鈕連線到引腳 7 和引腳 8。臨時按下按鈕啟動系統復位 +1.8V
9 GND
10 恢復模式按鈕 將常開按鈕連線到引腳 9 和引腳 10。在開啟系統電源時按住按鈕以將其置於 USB 強制恢復模式 +1.8V
11 GND
12 電源按鈕 將常開按鈕連線到針腳 11 和針腳 12。如果自動開機禁用(針腳 5 和針腳 6 已連線),請暫時按下按鈕以啟動開機 +5V

8 針按鈕接頭 (J11)

這是一個備用的 8 針 (2x4) 按鈕接頭,可焊接在載板上的位置 J11 上,並用作主按鈕接頭的替代。

標題詳細資訊:

  • 總引腳/位置 8
  • 2 排 4 針
  • 間距為 2.54 毫米
  • 無遮擋
  • 通孔垂直

Pin 名稱 描述 Power
1 電源按鈕 將常開按鈕連線到針腳 1 和針腳 2。 如果自動開機禁用(針腳 7 和針腳 8 已連線),請暫時按下按鈕以啟動開機 +5V
2 GND
3 強制恢復按鈕 將常開按鈕連線到第 3 針和第 4 針。在開啟系統電源時按住按鈕使其進入 USB 強制恢復模式 +1.8V
4 GND
5 復位按鈕 將常開按鈕連線到引腳 5 和引腳 6。暫時按下按鈕啟動系統復位 +1.8V
6 GND
7 閂鎖設定按鈕 連線引腳 7 和引腳 8 以禁用自動開機並需要按下電源按鈕(或等效按鈕) +5V
8 鎖存器 連線引腳 7 和引腳 8 以禁用自動開機並需要按下電源按鈕(或等效按鈕) +5V

4 針風扇接頭 (J7)

J7 位置的 4 針風扇控制接頭的引腳排列如下所示。

接頭可支援 3 針風扇連線(GND、PWR 和 TACH)或 4 針風扇連線(GND、PWR、TACH 和 PWM)。使用具有 PWM 功能的風扇允許軟體根據需要調整風扇的速度。僅支援 5V 風扇。

Pin 描述
1 PWM
2 +5V 電源
3 轉速錶
4 PWM(脈寬調製)

控制風扇

  • 風扇可通過PWM控制。
  • 如果要向系統中新增風扇,請選擇一個5V風扇:
  • 具有40mm x 40mm的螺釘間距,用於與顯影劑套件散熱器連線

耗電量
開發工具包的總功耗是載體板、模組和外圍裝置功耗的總和,由您的特定用例決定。

Jetson模組有兩種軟體定義的電源模式。電源模式可以通過桌面右上角的UI介面進行切換,也可以按照L4T電源管理指南進行切換。

兩種模組電源模式為:

10W-更高效能的預設模式
5W-建議減少能源使用

攝像頭

照相機
有關Jetson生態系統支援的攝像頭的完整列表,請訪問我們的合作伙伴支援的攝像頭頁面。

所有與Jetson Nano顯影劑套件和Jetson Xavier NX顯影劑套件相容的MIPI CSI-2相機也將與Jetson Nano 2GB顯影劑套件配合使用。

Name Manufacturer Link Comment
Raspberry Pi Camera Module V2 Raspberry Pi Adafruit
Raspberry Pi Camera Module NoIR V2 Raspberry Pi Adafruit
Raspberry Pi High Quality Camera Raspberry Pi Canakit 僅限Jetson Nano 2GB開發者工具包下載從下載中心下載驅動程式並按照軟體包中的說明進行操作

安裝軟排線攝像頭模組

要安裝攝像頭模組,請將其柔性帶狀電纜連線到攝像頭聯結器(J5)中。遵循以下步驟:

  • 1.輕輕地提起聯結器閂鎖(參見第一個圖)。
  • 2.插入攝像頭帶狀電纜。(參見第2和第3圖)金屬觸點應朝向顯影劑套件的中心。
  • 3.輕輕按下聯結器閂鎖,直到停止。這可能需要兩個手指,每個手指位於閂鎖的一端。不要用力過猛。

至於USB攝像頭,大家可以直接插入USB埠即可。

燒錄映象使用初體驗

需要準備:

  • 電源 type-c埠的5V-4A的電源
  • MicroSD卡(建議最低16GB UHS-1)
  • HDMI螢幕
  • USB鍵盤
  • USB滑鼠

首先我拿到的nano2g版本是隻有板子的,如果要板卡執行起來,我還需要準備一張64G的閃迪(建議用閃迪,因為有些記憶體卡不支援nano),用來燒錄nano的映象,此外還需要一根給板卡供電的type-c埠的電源介面卡,大家也可以用現在支援3a或者4a的手機充電器配一個type-c埠的線。

這裡要注意自己板子的版本

  1. 下載Jetson 下載中心 | NVIDIA Developer並解壓得到映象檔案sd-blob.img
    映象下載

  1. 使用官方的Etcher的SD卡燒錄,或者也可以用Win32 Diskimg寫入映象

最好在燒系統前格式化SD卡一下,即 SD Card formatter(官網推薦)

連線外設(滑鼠、鍵盤、顯示器)並啟動,這裡如果我們要進行螢幕顯示的啟動,除了連線的HDMI顯示器,滑鼠和鍵盤也是必須要連線的,在Jetson Nano 2GB Developer Kit裡面有描述。


通過這張圖,大家可以清晰看到要是啟動display,則Monitor, keyboard and mouse是必須的。

  1. 燒寫完成後,將SD卡插入Jetson Nano,接上顯示器和電源開機

最終啟動效果如圖:

配件使用

  1. 硬體風扇 和 wif模組
    因為nano使用起來發熱挺嚴重的,所以我在上面加了一個散熱的風扇,nano 2g裡面預設風扇的配件是沒有,所以這個部分也是我自己購買的,不過我沒有使用pwm控制的風扇,而是使用了直驅的風扇,並且在nano 2gb 板子上焊接了排插,接入風扇。

排插位置,以及對應的絲印的電源和GND位置:

實際安裝情況:

安裝之後檢測一下CPU溫度情況:
這部分我們使用了jetson-stats這個包,此外我們也可以使用lm-sensors進行查詢CPU實時溫度。
jetson-stats是一個軟體包,用於監測和控制Nvidia Jetson裝置的,其中jtop可以實時監測溫度;

安裝:

sudo apt-get install python-pip
sudo -H pip install jetson-stats

使用: jtop 命令

請新增圖片描述

這個時候在右下角,我們可以看到CPU溫度在23.5攝氏度,這個是一個正常溫度,而在沒有風扇散熱情況下,板卡待機的CPU溫度能達到33攝氏度。所以還是很有效的散熱。

此外因為板卡有時候需要進行下載東西以及進行遠端除錯,所以我們最好加一個wifi模組,方便我們的工作。

  1. 遠端VNC
    因為nano上面我們想跑一些視覺等等需要介面檢視的模型,而不只是單純的使用命令列進行訪問,那麼我們就需要用到遠端桌面了。

說到遠端桌面,可能大家會比較熟悉VNC Viewer這個軟體。這裡我們介紹如何配合Jetson Nano的 Desktop功能來遠端訪問。
首先,下載並安裝VNC Viewer軟體到你的電腦上。(這裡是下載連結)
需要先用HDMI螢幕和鍵盤等連結到Jetson Nano

  • 安裝vino

sudo apt install vino

  • 設Enable VNC 服務 (此時手動可開啟vnc server)

sudo ln -s ../vino-server.service /usr/lib/systemd/user/graphical-session.target.wants

配置VNC server:

gsettings set org.gnome.Vino prompt-enabled false

gsettings set org.gnome.Vino require-encryption false

編輯org.gnome,恢復丟失的“enabled”引數,輸入一下命令進入檔案,將下方key內容新增到檔案的最後面。儲存並退出。

sudo vi /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml

設定為Gnome編譯模式

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

現在螢幕共享皮膚在單位控制中心工作…但這並不足以讓vino執行!所以您需要在會話啟動時新增程式:Vino-server,使用以下命令列:

/usr/lib/vino/vino-server
這種是屬於手動啟動,如果每次都需要手動啟動會比較麻煩下面會設定開機自啟動的形式。

  • 設定VNC登陸密碼('thepassword' 修改為自己的密碼)

gsettings set org.gnome.Vino authentication-methods "['vnc']"

gsettings set org.gnome.Vino vnc-password $(echo -n 'thepassword'|base64)

  • 重啟機器,驗證是否設定vnc 成功

sudo reboot

  • 設定開機自啟動VNC Server

VNC伺服器只有在您本地登入到Jetson之後才可用。如果您希望VNC自動可用,請使用系統設定應用程式來啟用自動登入。

gsettings set org.gnome.Vino enabled true

mkdir -p ~/.config/autostart

vi ~/.config/autostart/vino-server.desktop

將下面的內容新增到該檔案中,儲存並退出。

[Desktop Entry]

Type=Application

Name=Vino VNC server

Exec=/usr/lib/vino/vino-server

NoDisplay=true

如果系統設定為需要輸入使用者密碼才可以進入桌面,以上的改指令碼需要等進入桌面後才會啟動,建議將系統設定為使用者自動登入到桌面。

  • 連線VNC Server
    使用vnc viewer軟體進行VNC連線,首先需要查詢ip地址,我這裡查到的是172.16.60.147,輸入IP地址後點選OK,雙擊對應的VNC使用者輸入密碼,最後進入到VNC介面

下載安裝vnc deb包,連結

啟動vnc介面,輸入對應IP 進行連線:

結果如圖:

nano使用介紹以及資料分享:

映象完成安裝了,使用的基本配套工具也準備好了,那麼我們該怎麼進行nano的使用呢?
下面就給大家分享一些nano使用中,我們可以參考的學習資料,方便大家進行學習使用。

官方資料

首先進入官網最開始的nano介紹網頁,裡面就有對應的學習引導:


裡面有AI的部分,有配合的機器小車的教程。

官方 Jetson Nano Developer Kit User Guide

https://developer.nvidia.cn/embedded/learn/get-started-jetson-nano-2gb-devkit#next

技術論壇https://developer.nvidia.com/embedded-computing

對應的英文技術論壇https://forums.developer.nvidia.com/

還有jetson nano本身對應的社群,比如jetson projects以及專門tutorials

jetsontutorials

https://developer.nvidia.cn/embedded/learn/tutorials

jetson專案

大家可以在裡面去搜尋符合自己需求的功能,看該專案的的原始碼或者博文,這是一個很快速的搭建自己工程的方法。

https://developer.nvidia.cn/embedded/community/jetson-projects

詳細嵌入式開發指導說明:

這個部分就是比較詳細的底層開發的指導了,包含基本的驅動的音視訊開發,這個部分屬於大家要深度定製化自己的板卡時候對應的資料:

https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-325/index.html#page/Tegra Linux Driver Package Development Guide/introduction.html#wwpID0E3HA

JetBot

NVIDIA JetBot是一個新的開源自動機器人套件,它提供了所有軟體和硬體計劃,以低於250美元的價格構建一個人工智慧的深度學習機器人。硬體材料包括Jetson Nano,IMX219 800萬畫素攝像頭,3D印表機箱,電池組,電機,I2C電機驅動器和配件。
https://jetbot.org/master/index.html

國內的一些資料

創客智造: jetson https://www.ncnynl.com/search/jetson/

微雪:
jeston nano官方網頁裡面顯示,微雪是nano的國內合作伙伴。
https://www.waveshare.net/wiki/Jetson_Nano_Developer_Kit

英偉達嵌入式系統技術介紹資料

https://aijishu.com/u/liumingkang

或者微信公眾號 NVIDIA英偉達企業解決方案

去裡面搜尋Jetson nano 2GB 就可以看到相關的文章

結語

相比Jetson Nano 4GB 使用的GNOME桌面,Jetson Nano 2GB 使用的是輕量化的LXDE桌面,大幅節省記憶體。這也是Jetson Nano 2G版可以和4G版本執行大多數相同的專案的原因之一。

NVIDIA Jetson Nano 2GB對於想要執行計算量不大的專案,且預算不多的開發者來說絕對是價效比之選,可以僅以54美元就享受到其4GB版的絕大多數功能,但是不能否認的是其2GB的記憶體,在需要使用Jetson Nano訓練模型的時候會略感緩慢。總而言之,Jetson Nano絕對是價效比之選。配合Jetson社群豐富的專案和課程,可以高效地進行AI學習。可以說是新手入門AI計算的絕佳之選。接下來我們就開始玩起來哈。

這就是我jetson nano使用的初步分享,後面繼續分享在一些自己使用這塊AI計算板卡的經驗。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。


作者:良知猶存,白天努力工作,晚上原創公號號主。公眾號內容除了技術還有些人生感悟,一個認真輸出內容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推薦閱讀

【1】在球場上我向人民幣玩家低了頭

【2】Linux開發coredump檔案分析實戰分享

【3】CPU中的程式是怎麼執行起來的 必讀

【4】cartographer環境建立以及建圖測試

【5】設計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比

本公眾號全部原創乾貨已整理成一個目錄,回覆[ 資源 ]即可獲得。

相關文章