jetson nano開發使用的基礎詳細分享
前言:
最近拿到一塊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在許多場景中都具有實時性能,能夠處理多個高清影片流。
2GB版與4G原版的性能表現相差無幾,並沒有因為是閹割版而有明顯落差,表現可以說讓人相當滿意。其中原因不外乎是雙方的處理器、繪圖處理器規格完全相同,且也都可以使用10W的電力模式,讓彼此在運算性能部分可以有一樣的表現。
從雙方的規格差異來看,會造成整體性能落差的主要因素,仍在程式的記憶體消耗量,而Jetson Benchmarks工具可能沒有觸碰到該瓶頸。若程式使用超過2GB的記憶體,系統就需要將部分資料存儲於Swap,將形成訪問性能瓶頸,並影響整體性能表現。
由於2GB版的目標用戶群體為AI程式與AIoT設備的入門者,撰寫大型程式的機會不大,因此考量價格與性能的平衡,這樣確實是不錯的取捨,很適合教育單位或初學者選用。
介紹完使用場景以及一些性能分享,接下來給大家介紹一下硬體資訊
大家可以在官網裡面搜索對應的開發板,查看對應的介面資訊,點擊下面的網站 //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] | 可選按鈕頭(2×4);包括複位/強制恢復/電源按鈕和自動上電禁用的連接 |
[J12] | 按鈕頭(1×12);包括電源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 針 (2×4) 按鈕接頭,可焊接在載板上的位置 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埠的線。
這裡要注意自己板子的版本
- 下載Jetson 下載中心 | NVIDIA Developer並解壓得到鏡像文件sd-blob.img
鏡像下載
-
下載SD卡鏡像,://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image
-
下載JetPack(看官網,需要JetsonPack 4.4.1才支援Jetson Nano 2GB
)://developer.nvidia.com/embedded/jetpack
- 使用官方的Etcher的SD卡燒錄,或者也可以用Win32 Diskimg寫入鏡像
最好在燒系統前格式化SD卡一下,即 SD Card formatter(官網推薦)
連接外設(滑鼠、鍵盤、顯示器)並啟動,這裡如果我們要進行螢幕顯示的啟動,除了連接的HDMI顯示器,滑鼠和鍵盤也是必須要連接的,在Jetson Nano 2GB Developer Kit裡面有描述。
通過這張圖,大家可以清晰看到要是啟動display,則Monitor, keyboard and mouse是必須的。
- 燒寫完成後,將SD卡插入Jetson Nano,接上顯示器和電源開機
最終啟動效果如圖:
配件使用
- 硬體風扇 和 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模組,方便我們的工作。
- 遠程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
//developer.nvidia.cn/embedded/learn/get-started-jetson-nano-2gb-devkit#next
技術論壇://developer.nvidia.com/embedded-computing
對應的英文技術論壇://forums.developer.nvidia.com/
還有jetson nano本身對應的社區,比如jetson projects以及專門tutorials
jetsontutorials
//developer.nvidia.cn/embedded/learn/tutorials
jetson項目
大家可以在裡面去搜尋符合自己需求的功能,看該項目的的源碼或者博文,這是一個很快速的搭建自己工程的方法。
//developer.nvidia.cn/embedded/community/jetson-projects
詳細嵌入式開發指導說明:
這個部分就是比較詳細的底層開發的指導了,包含基本的驅動的音影片開發,這個部分屬於大家要深度訂製化自己的板卡時候對應的資料:
JetBot
NVIDIA JetBot是一個新的開源自動機器人套件,它提供了所有軟體和硬體計劃,以低於250美元的價格構建一個人工智慧的深度學習機器人。硬體材料包括Jetson Nano,IMX219 800萬像素攝影機,3D印表機箱,電池組,電機,I2C電機驅動器和配件。
//jetbot.org/master/index.html
中國的一些資料
創客智造: jetson //www.ncnynl.com/search/jetson/
微雪:
jeston nano官方網頁裡面顯示,微雪是nano的中國合作夥伴。
//www.waveshare.net/wiki/Jetson_Nano_Developer_Kit
NVIDIA 嵌入式系統技術介紹資料:
或者微信公眾號 NVIDIANVIDIA 企業解決方案
去裡面搜索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 ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
推薦閱讀
【3】CPU中的程式是怎麼運行起來的 必讀
本公眾號全部原創乾貨已整理成一個目錄,回復[ 資源 ]即可獲得。