版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章JETSON嵌入式平臺(tái)3.1
JETSON平臺(tái)簡(jiǎn)介3.2
JETSON平臺(tái)硬件資源介紹3.3
JETSON平臺(tái)軟件資源介紹
NVIDIAJETSON嵌入式平臺(tái)(簡(jiǎn)稱(chēng)JETSON平臺(tái))提供的性能可提高自主機(jī)器軟件的運(yùn)行速度,而且功耗更低。JETSON平臺(tái)的每個(gè)系統(tǒng)都是一個(gè)完備的模塊化系統(tǒng)(SOM),具備CPU、GPU、電源管理集成芯片(PowerManagementIntegratedCircuit,PMIC)、動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DynamicRandomAccessMemory,DRAM)和閃存,可節(jié)省開(kāi)發(fā)時(shí)間和資金。JETSON平臺(tái)還具備可擴(kuò)展性,用戶(hù)只需要選擇適合應(yīng)用場(chǎng)合的SOM,就能構(gòu)建自定義系統(tǒng),滿足特定的應(yīng)用需求。
3.1JETSON平臺(tái)簡(jiǎn)介
2015年11月,NVIDIA嵌入式開(kāi)發(fā)板家族迎來(lái)了第一個(gè)成員——JETSONTX1,其設(shè)計(jì)緊湊的、只有50?mm?×?90?mm的JETSONTX核心板包含了NVIDIATegraX1core、板載Wi-Fi和Bluetooth、帶風(fēng)扇的散熱片和工業(yè)連接器。JETSONTX1開(kāi)發(fā)模組旨在針對(duì)機(jī)器人、無(wú)人機(jī)等的應(yīng)用,其核心模組和開(kāi)發(fā)人員套件外形如圖3.1所示。
圖3.1JETSONTX1的核心模組和開(kāi)發(fā)人員套件外形
2017年3月,JETSONTX1的升級(jí)版JETSONTX2問(wèn)世。JETSONTX1的配置是TegraX1+4GBLPDDR4,GPU是擁有256個(gè)CUDA核心的NVIDIAMaxwell架構(gòu),而JETSONTX2則升級(jí)為T(mén)egraParker處理器,CPU部分也升級(jí)為NVIDIAPascal架構(gòu),同樣是擁有256個(gè)CUDA核心,但其性能提高了50%。JETSONTX2可在像信用卡大小的模塊中提供1萬(wàn)億次浮點(diǎn)計(jì)算性能,其核心模組和開(kāi)發(fā)人員套件外形如圖3.2所示。
圖3.2JETSONTX2的核心模組和開(kāi)發(fā)人員套件外形
2018年6月,一款重量級(jí)的JETSON家族成員JETSONXavier問(wèn)世。作為NVIDIAISAAC平臺(tái)的核心,JETSONXavier是全球首款專(zhuān)為機(jī)器人設(shè)計(jì)的智能芯片。它有6個(gè)處理器,包括1個(gè)VoltaTensorCoreCPU、1個(gè)8核ARM64CPU、2個(gè)NVIDIA深度學(xué)習(xí)加速器、1個(gè)圖像處理器和1個(gè)視頻處理器,每秒可執(zhí)行30萬(wàn)億次操作,其處理能力與配備了10萬(wàn)美元GPU的工作站大致相當(dāng),但功耗僅為30?W。JETSONXavier的核心模組如圖3.3所示。
圖3.3JETSONXavier的核心模組
019年3月,在硅谷召開(kāi)的GTC(GPUTechnologyConference)大會(huì)上,NVIDIA的CEO黃仁勛又發(fā)布了一款輕量級(jí)的、為機(jī)器人開(kāi)發(fā)人員量身定制的工具套件——
JETSONNano。JETSONNano搭載了4核Cortex-A57處理器,CPU則是擁有128個(gè)CUDA核心的NVIDIAMaxwell架構(gòu),可以提供472千兆浮點(diǎn)計(jì)算性能,而功耗卻低至5?W。雖然其計(jì)算能力不及JETSONXavier和JETSONTX2,但其價(jià)格僅為JETSONXavier的1/7,在各種提供邊緣計(jì)算功能的開(kāi)發(fā)板中具有最高性?xún)r(jià)比。JETSONNano的核心模組和開(kāi)發(fā)人員套件外形如圖3.4所示。
圖3.4JETSONNano的核心模組和開(kāi)發(fā)人員套件外形
NVIDIA迄今為止推出的4款嵌入式人工智能平臺(tái)的參數(shù)及性能對(duì)比見(jiàn)表3.1。
3.2JETSON平臺(tái)硬件資源介紹3.2.1JETSON平臺(tái)網(wǎng)絡(luò)接口JETSON平臺(tái)在硬件資源方面不僅具有USB、HDMI、以太網(wǎng)等常規(guī)輸入/輸出(I/O)接口,還具有豐富的硬件可擴(kuò)展接口資源,為開(kāi)發(fā)人員進(jìn)行擴(kuò)展應(yīng)用提供了無(wú)限可能。開(kāi)發(fā)人員不僅可以通過(guò)UART(異步收發(fā)傳輸器)、GPIO(通用型輸入/輸出)、I2C(總線)等外設(shè)接口實(shí)現(xiàn)其他單片機(jī)、嵌入式系統(tǒng)的所有功能,還可以通過(guò)自身強(qiáng)大的性能,勝任其他單片機(jī)、嵌入式系統(tǒng)無(wú)力支撐的高數(shù)據(jù)密度業(yè)務(wù)和高處理實(shí)時(shí)性業(yè)務(wù),如智能機(jī)器人、無(wú)人駕駛汽車(chē)等。
1.?JETSON平臺(tái)的網(wǎng)絡(luò)接口
JETSON平臺(tái)支持千兆有線網(wǎng)絡(luò)接口,而且網(wǎng)絡(luò)接入速度穩(wěn)定,因此,在項(xiàng)目開(kāi)發(fā)過(guò)程中推薦采用有線方式接入網(wǎng)絡(luò)。通常,路由器端都是通過(guò)DHCP(動(dòng)態(tài)主機(jī)配置協(xié)議)方式設(shè)置自動(dòng)分配IP,所以只要用網(wǎng)線把JETSON平臺(tái)連接到路由器上即可實(shí)現(xiàn)上網(wǎng)。
(1)基于M.2的無(wú)線網(wǎng)絡(luò)接口。M.2接口是Intel推出的專(zhuān)為便攜設(shè)備量身定制的一種主機(jī)接口方案,可以兼容多種通信協(xié)議,如SATA(串口硬盤(pán))、PCIe、USB、HSIC(高速集成電路)、UART、SMBus(系統(tǒng)管理總線)等。M.2接口主要有兩方面的優(yōu)勢(shì):
第一是速度優(yōu)勢(shì)。
第二是體積優(yōu)勢(shì)。
(2)?IntelWireless-AC8265網(wǎng)卡。目前在JETSON設(shè)備上官方推薦的M.2接口的無(wú)線網(wǎng)卡是IntelWireless-AC8265,其外形如圖3.5所示。
圖3.5IntelWireless-AC8265無(wú)線網(wǎng)卡的外形
IntelWireless-AC8265網(wǎng)卡的無(wú)線接入功能和藍(lán)牙接入功能必須插接天線才能正常使用,所支持的天線有兩種:一種是FPC軟排線天線,帶3M膠,可隨意粘貼固定;另一種是膠棒天線,在外殼上需要有固定裝置,如圖3.6所示。用戶(hù)可以根據(jù)實(shí)際情況選擇使用這兩種天線。圖3.6IntelWireless-AC8265無(wú)線網(wǎng)卡天線
①在JETSONNano上安裝M.2接口無(wú)線網(wǎng)卡。
JETSONNano使用M.2接口連接設(shè)備需要拆卸開(kāi)發(fā)板,一旦操作有誤,就有可能損壞開(kāi)發(fā)板,而這種人為損壞不在保修范圍內(nèi),所以用戶(hù)在動(dòng)手前一定要謹(jǐn)慎!
拆卸過(guò)程:先將JETSONNano核心模組(見(jiàn)圖3.7)的固定螺絲旋轉(zhuǎn)取下,然后用雙手按壓松脫核心模組兩端的固定卡扣,將核心模組翻轉(zhuǎn)后脫離連接器。
安裝過(guò)程:用手指將天線按壓到無(wú)線網(wǎng)卡上,再將開(kāi)發(fā)板上M.2接口的螺絲擰下,把無(wú)線網(wǎng)卡插至該接口上,用剛剛擰下的螺絲將無(wú)線網(wǎng)卡固定好后,重新將JETSONNano核心模組固定到開(kāi)發(fā)板上。
圖3.7JETSONNano的核心模組
②在JETSONXavier上安裝M.2接口無(wú)線網(wǎng)卡。
在JETSONXavier上,M.2接口無(wú)線網(wǎng)卡的安裝稍微容易一些,無(wú)須拆裝模組,只需將JETSONXavier底部朝上放置,即可看到其連接無(wú)線網(wǎng)卡的M.2接口。
安裝過(guò)程:將JETSONXavier底部朝上放置,將JETSONXavier底部連接無(wú)線網(wǎng)卡的M.2接口上的螺絲擰下,用手指將天線按壓到無(wú)線網(wǎng)卡上,再將無(wú)線網(wǎng)卡插至JETSONXavier底部的M.2接口上,用剛剛擰下的螺絲將無(wú)線網(wǎng)卡固定好即可。
2.基于USB的無(wú)線網(wǎng)絡(luò)接口
和M.2接口相比,通過(guò)USB方式接入無(wú)線網(wǎng)卡的接口操作簡(jiǎn)單,只需插入即可。由于L4T平臺(tái)(JETSON平臺(tái)定制的Linux操作系統(tǒng),即Ubuntu定制款)的兼容性問(wèn)題,并不是所有的USB接口的無(wú)線網(wǎng)卡都能即插即用。NVIDIA官方推薦的USB接口無(wú)線網(wǎng)卡是EdimaxEW-7811Un,如圖3.8所示。
圖3.8EdimaxEW-7811Un無(wú)線網(wǎng)卡
3.接入無(wú)線網(wǎng)絡(luò)及設(shè)置無(wú)線熱點(diǎn)
連接好無(wú)線網(wǎng)卡后,用戶(hù)可以在桌面上設(shè)置進(jìn)入無(wú)線網(wǎng)。用鼠標(biāo)點(diǎn)擊桌面上的“網(wǎng)絡(luò)連接”圖標(biāo),在列出的無(wú)線網(wǎng)絡(luò)中點(diǎn)擊可用的無(wú)線熱點(diǎn),在彈出的對(duì)話框中輸入該無(wú)線熱點(diǎn)的密碼并點(diǎn)擊確認(rèn),即可將JETSON設(shè)備接入互聯(lián)網(wǎng)。
在有些實(shí)際應(yīng)用場(chǎng)景中,可能并不需要將JETSON設(shè)備接入廣域網(wǎng)絡(luò),但是需要讓其他移動(dòng)設(shè)備和JETSON設(shè)備互連。這時(shí)將JETSON設(shè)備設(shè)置為熱點(diǎn)是一個(gè)不錯(cuò)的備選方案。
將JETSON設(shè)備設(shè)為熱點(diǎn)的操作步驟如下:
(1)用鼠標(biāo)點(diǎn)擊桌面上的“網(wǎng)絡(luò)連接”圖標(biāo),在彈出的菜單中選擇“EditConnections...”菜單項(xiàng),再在彈出的“NetworkConnections”對(duì)話框中點(diǎn)擊左下角的“+”按鈕。
(2)在彈出的連接類(lèi)型選擇對(duì)話框中下拉選擇“Wi-Fi”,點(diǎn)擊“Create...”按鈕。
(3)在彈出的網(wǎng)絡(luò)連接對(duì)話框中,修改“Connectionname”為“MyHotspot”,在“Wi-Fi”頁(yè)面中填寫(xiě)“SSID”為“Nano”,選擇“Mode”為“Hotspot”,選擇“Device”為“wlan0(08:BE:AC:06:3B:38)”,切換至“Wi-FiSecurity”頁(yè)面,選擇“Scurity”為“WEP40/128bitKey(HexorASCII)”,填寫(xiě)“Key”為相應(yīng)密碼,如“12345”,點(diǎn)擊“Save”按鈕即可。
(4)再用鼠標(biāo)點(diǎn)擊桌面上“網(wǎng)絡(luò)連接”圖標(biāo),在彈出的菜單中選擇“ConnecttoHiddenWi-FiNetwork”菜單項(xiàng),在彈出的連接到隱藏網(wǎng)絡(luò)對(duì)話框中選擇“Connection”,修改為之前創(chuàng)建的“MyHotshot”,點(diǎn)擊“Connect”按鈕。
(5)片刻后,在系統(tǒng)桌面的右上角會(huì)顯示“YouarenowconnectedtotheWi-Finetwork‘Nano’.”的字樣,說(shuō)明SSID為“Nano”的熱點(diǎn)已經(jīng)成功創(chuàng)建了。
一般來(lái)說(shuō),當(dāng)前機(jī)器的IP應(yīng)該是“”這時(shí)就可以用其他移動(dòng)設(shè)備搜索SSID為“Nano”的無(wú)線網(wǎng)絡(luò),并使用所設(shè)定的密碼接入該無(wú)線熱點(diǎn)網(wǎng)絡(luò)中,接入設(shè)備就可以通過(guò)當(dāng)前機(jī)器的IP和當(dāng)前機(jī)器進(jìn)行網(wǎng)絡(luò)通信。
3.2.2JETSON平臺(tái)外設(shè)接口
JETSON平臺(tái)的外設(shè)接口有多種,下面將詳細(xì)介紹不同版本JETSON平臺(tái)的外設(shè)接口以及其中的重要接口。
1.外設(shè)接口圖
1)?JETSONNano開(kāi)發(fā)板套件的外設(shè)接口
JETSONNano開(kāi)發(fā)板套件的前視圖如圖3.9所示,頂視圖如圖3.10所示。
圖3.9JETSONNano開(kāi)發(fā)板套件的前視圖
圖3.10JETSONNano開(kāi)發(fā)板套件的頂視圖
2)?JETSONTX2開(kāi)發(fā)板套件的外設(shè)接口圖
JETSONTX2開(kāi)發(fā)板套件的頂視圖如圖3.11所示。圖3.11JETSONTX2開(kāi)發(fā)板套件的頂視圖
3)?JETSONXavier開(kāi)發(fā)板套件的外設(shè)接口圖
JETSONXavier開(kāi)發(fā)板套件的前視圖和后視圖如圖3.12所示,頂視圖如圖3.13所示。圖3.12JETSONXavier開(kāi)發(fā)板套件的前視圖和后視圖圖3.13JETSONXavier開(kāi)發(fā)板套件的頂視圖
2.?GPIO接口
GPIO接口是通用型輸入/輸出接口的簡(jiǎn)稱(chēng),其接腳可以供開(kāi)發(fā)人員通過(guò)程序控制自由使用。GPIO接口可根據(jù)實(shí)際情況作為通用輸入或通用輸出,也可以作為通用輸入與輸出。JETSON系列開(kāi)發(fā)板中都包含40引腳的GPIO接口,其中JETSONXavier和JETSONNano只有一個(gè)40針2.54?mm間隔的GPIO接口,而JETSONTX2有兩個(gè)GPIO接口,一個(gè)40針、2.54?mm間隔的通用接口J21和一個(gè)30針2.54?mm間隔的擴(kuò)展接口J26。
GPIO接口可以用于輸入、輸出或其他特殊功能。對(duì)于輸入,可以通過(guò)讀取某個(gè)寄存器來(lái)確定引腳電位的高低;對(duì)于輸出,可以通過(guò)寫(xiě)入某個(gè)寄存器來(lái)讓引腳輸出高電位或低電位;對(duì)于其他特殊功能,則由另外的寄存器來(lái)控制。以JETSONNano為例,GPIO引腳排列見(jiàn)表3.2。
對(duì)于如何通過(guò)控制GPIO輸出來(lái)打開(kāi)和關(guān)閉發(fā)光二極管(LED),首先,選取LED燈、NPN晶體管、3300?Ω電阻、10?kΩ電阻和若干電線,用面包板將所有器件連接起來(lái);其次,在控制LED的過(guò)程中,需要通過(guò)添加限流電阻來(lái)確保LED能夠承受的電流量,簡(jiǎn)而言之,通過(guò)選擇合適的電阻可以設(shè)定LED實(shí)際吸收電流的上限。根據(jù)歐姆定律選擇電阻(在同一電路中,通過(guò)某段導(dǎo)體的電流與該導(dǎo)體兩端的電壓成正比,與該導(dǎo)體的電阻成反比):
(3-1)
當(dāng)已知LED的參數(shù)時(shí)可以計(jì)算出合適的電阻值,即根據(jù)LED的正向電壓(陰極和陽(yáng)極之間的最小電壓差)計(jì)算正向電流,即LED能夠連續(xù)處理的最大電流。本節(jié)中LED正向電流為20?mA,正向電壓為2.0?V,當(dāng)使用JETSONNano的5?V引腳驅(qū)動(dòng)LED時(shí),按照歐姆定律,有
如果以最大電流運(yùn)行,將會(huì)影響LED壽命。通常,使用220~470?Ω的電阻來(lái)實(shí)現(xiàn)此應(yīng)用,本節(jié)使用330Ω。
在實(shí)際連接過(guò)程中,將JETSONNano上的引腳2(?+?5V)用導(dǎo)線接入面包板電路?+?5?V相應(yīng)位置,將引腳6(GND)用導(dǎo)線接入面包板電路GND相應(yīng)位置,將引腳12(gpio79)用導(dǎo)線經(jīng)由基極電阻連接到晶體管基座。連接好后運(yùn)行如下命令:
3.串行通信接口
JETSON系列開(kāi)發(fā)板上有4種類(lèi)型的串行通信接口,分別為USB、SPI、UART和I2C。USB接口是插入鼠標(biāo)和鍵盤(pán)的接口。對(duì)于SPI接口,在默認(rèn)的JETSON配置中沒(méi)有SPI接口訪問(wèn)權(quán)限,但以JETSONNano為例,可以通過(guò)J41擴(kuò)展接頭重新配置設(shè)備樹(shù)以訪問(wèn)SPI。本節(jié)重點(diǎn)介紹UART和I2C兩類(lèi)接口。
1)?UART接口
通過(guò)電線傳輸串行數(shù)據(jù)可以追溯到百年前,計(jì)算機(jī)行業(yè)中的串行通信無(wú)處不在。UART是串行控制臺(tái),允許直接訪問(wèn)串行和調(diào)試控制臺(tái)。除了提供典型的控制臺(tái)之外,串行控制臺(tái)在許多其他情況下也很有用,包括為不同的啟動(dòng)映像(Linux內(nèi)核映像)選擇菜單條目的功能,以及訪問(wèn)沒(méi)有鍵盤(pán)、鼠標(biāo)、網(wǎng)絡(luò)或顯示器的設(shè)備。本節(jié)以通過(guò)J44上的UART接口將PC計(jì)算機(jī)連接到JETSONNano為例,介紹UART接口功能。
運(yùn)行查看串口的命令時(shí),如果出現(xiàn)無(wú)法找到ttyTHS2的問(wèn)題,可以將系統(tǒng)的設(shè)備樹(shù)文件進(jìn)行反編譯,使能ttyTHS2后再重新編譯。注意:下面的命令如果操作不當(dāng)可能會(huì)引起系統(tǒng)無(wú)法啟動(dòng)。
要在確保JETSONNano未通電的情況下按如下方式接線,如圖3.14所示。圖3.14JETSONNano的UART接線圖
2)?I2C接口
I2C是一種簡(jiǎn)單的串行協(xié)議,用于單個(gè)器件內(nèi)的短距離通信。通常有兩條連接線,一條串行數(shù)據(jù)線(SDA),另一條串行時(shí)鐘線(SCL),但大多數(shù)器件還需要電源(VCC)和地(GND)。NVIDIAJETSON開(kāi)發(fā)板可以通過(guò)GPIO接口訪問(wèn)I2C總線0和12C總線1。
安裝ServoKit庫(kù)并設(shè)置I2C和GPIO權(quán)限,以便可以從用戶(hù)空間運(yùn)行程序,添加GPIO權(quán)限以支持底層JETSON.GPIO庫(kù)。群組更改在登錄前不會(huì)生效,必須注銷(xiāo)/登錄或重新啟動(dòng)計(jì)算機(jī)才能使更改生效。
(1)單電機(jī)角度伺服。
值得注意的是,在連接JETSON平臺(tái)之前,要確保斷開(kāi)電源。因?yàn)椴迦腚娫春?,即使處理器本身處于關(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。
值得注意的是,在連接JETSON平臺(tái)之前,要確保斷開(kāi)電源。因?yàn)椴迦腚娫春?,即使處理器本身處于關(guān)閉狀態(tài),接口上的電源和地也始終處于工作狀態(tài)。
J41引腳3(SDA)→PCA9685SDA;
J41引腳5(SCL)→PCA9685SCL;
J41引腳1(3.3V)→PCA9685VCC;
J41引腳6(CND)→PCA9685GND。
(2)雙電機(jī)云臺(tái)單獨(dú)控制。
關(guān)閉并拔下JETSONNano電源后,連接PCA9685進(jìn)行雙電機(jī)云臺(tái)伺服控制,通過(guò)I2C總線0連接伺服電機(jī)的接線方式如下:
J41引腳27(SDA)→PCA9685SDA;
J41引腳28(SCL)→PCA9685SCL;
J41引腳1(3.3V)→PCA9685VCC;
J41引腳6(GND)→PCA9685GND。
3.2.3JETSON平臺(tái)開(kāi)發(fā)板接口
JETSON開(kāi)發(fā)板及應(yīng)用套件的研發(fā),能夠?yàn)樾袠I(yè)用戶(hù)提供低成本高可靠的產(chǎn)品級(jí)解決方案,擺脫硬件平臺(tái)搭建的風(fēng)險(xiǎn),讓他們?nèi)?zhuān)注應(yīng)用層面的開(kāi)發(fā),快速推出面向特定應(yīng)用市場(chǎng)的整體解決方案。
1.?JETSONTX1/TX2擴(kuò)展開(kāi)發(fā)板
1)瑞泰新時(shí)代(北京)公司RTSO-9001開(kāi)發(fā)板
RTSO-9001是一款搭配JETSONTX1/TX2核心模塊的低成本、小體積開(kāi)發(fā)板,包括上下堆棧兩塊板卡。開(kāi)發(fā)板長(zhǎng)、寬尺寸與JETSONTX1/TX2模塊相當(dāng),適合緊湊型部署需求;面向工業(yè)部署應(yīng)用,其主要接口進(jìn)行了靜電安全保護(hù)設(shè)計(jì);采用了高可靠性的電源應(yīng)用方案,具有豐富的對(duì)外接口,全板器件采用寬溫型號(hào)。產(chǎn)品接口及說(shuō)明如表3.3所示。
RTSO-9001開(kāi)發(fā)板的外觀如圖3.15所示。RTSO-9001開(kāi)發(fā)板的外觀如圖3.15所示。
2)瀝拓科技(深圳)有限公司LEETOP-A300開(kāi)發(fā)板
LEETOP-A300是一個(gè)高性能、尺寸小、接口豐富的JETSONTX1/TX2開(kāi)發(fā)板,開(kāi)發(fā)板大小與JETSONTX1/TX2模塊一致,提供USB3.0、千兆以太網(wǎng)、HDMI2.0、USB2.0、UART、GPIO、I2C、CAN、風(fēng)扇等接口。LEETOP-A300開(kāi)發(fā)板的外觀如圖3.16所示。
圖3.16LEETOP-A300開(kāi)發(fā)板外觀
該產(chǎn)品的其他接口及說(shuō)明如表3.4所示。
3)?Auvidea公司J121開(kāi)發(fā)板
JI21開(kāi)發(fā)板將JETSONTX2計(jì)算模塊轉(zhuǎn)變?yōu)槌⌒陀?jì)算機(jī),用于桌面使用或者集成到機(jī)器人和無(wú)人機(jī)中。JI21與JETSONTX2具有相同的高度,并延伸到一側(cè),為千兆以太網(wǎng)、兩個(gè)USB3.0和迷你HDMI的標(biāo)準(zhǔn)連接器騰出空間;具有一個(gè)M.2型M插槽,用于超快速SSD(2280mm外形尺寸),通過(guò)4個(gè)PCIe通道連接,實(shí)現(xiàn)高達(dá)2500?Mb/s的讀寫(xiě)性能。該產(chǎn)品的其他接口及說(shuō)明如表3.5所示。
J21開(kāi)發(fā)板的外觀如圖3.17所示。圖3.17J21開(kāi)發(fā)板外觀
2.?JETSONNano擴(kuò)展開(kāi)發(fā)板
1)瑞泰新時(shí)代(北京)公司RTSO-6001開(kāi)發(fā)板
RTSO-6001是針對(duì)Nano的工業(yè)級(jí)開(kāi)發(fā)板,工作溫度為-40~+80℃,低功耗,安全級(jí)別高,可滿足各種苛刻條件。該產(chǎn)品的接口及說(shuō)明如表3.6所示。
RTSO-6001開(kāi)發(fā)板的外觀如圖3.18所示。圖3.18RTSO-6001開(kāi)發(fā)板外觀
EETOP-A200是一個(gè)高性能、接口豐富的JETSONNano開(kāi)發(fā)板,提供了HDMI2.0、千兆以太網(wǎng)、USB3.0、USB2.0、M.2Wi-Fi/BT、CSICAMERA、SATA、Mini-PCIe/mSATA、UART232串口、SIM卡、GPIO、I2C、I2S風(fēng)扇等豐富的外圍接口,搭載科大訊飛專(zhuān)門(mén)為JETSONNano設(shè)計(jì)的麥克風(fēng)陣列、慣導(dǎo)模塊等外部設(shè)備。LEETOP-A200開(kāi)發(fā)板的外觀如圖3.19所示。LEETOP-A200接口及說(shuō)明見(jiàn)表3.7。
圖3.19LEETOP-A200開(kāi)發(fā)板的外觀
3)?Auvidea公司JN30開(kāi)發(fā)板
JN30專(zhuān)為JETSONNano設(shè)計(jì),將Nano計(jì)算模塊轉(zhuǎn)變?yōu)槌?jí)計(jì)算機(jī)。JN30支持輕松自動(dòng)閃存(USBOTG電纜)和高性能存儲(chǔ)(M.2NVMEPCIe×4)。JN30接口及說(shuō)明見(jiàn)表3.8。
3.?JETSONXavier擴(kuò)展開(kāi)發(fā)板
1)瀝拓科技(深圳)有限公司LEETOP-A501開(kāi)發(fā)板
LEETOP-A501開(kāi)發(fā)板主要應(yīng)用于物流行業(yè)中具有陸運(yùn)貨車(chē)裝卸口的、需要計(jì)算機(jī)視覺(jué)分析的場(chǎng)地,如中轉(zhuǎn)場(chǎng)、重貨、網(wǎng)點(diǎn)、快遞、零擔(dān)(運(yùn)輸)、冷運(yùn)裝卸口、商超裝卸口、港口裝卸口、海關(guān)裝卸口、鐵路運(yùn)輸裝卸口,以及具有行為檢測(cè)需求的幼兒園、工廠、銀行等。LEETOP-A501開(kāi)發(fā)板的外觀如圖3.20所示。
圖3.20LEETOP-A501開(kāi)發(fā)板外觀
LEETOP-A501開(kāi)發(fā)板的主要端口及說(shuō)明見(jiàn)表3.9。
2)?Auvidea公司X200開(kāi)發(fā)板
X200是JETSONAGXXavier的首款開(kāi)發(fā)板,其特點(diǎn)是以透明的方式利用計(jì)算模塊的所有接口,給出了5個(gè)PCIe插槽上的所有PCIe接口,其他接口包括USB2.0、USB3.0、2?×USB-C、2個(gè)HDMI、2個(gè)CAN、8個(gè)CSI-2、GPIO、GbE、UART,電源輸入為12~48?V,擁有9個(gè)基于PCIe的千兆以太網(wǎng)(GbE)接口,可連按9個(gè)GigE攝像頭,用于多攝像頭應(yīng)用。每個(gè)GbE接口都是本機(jī)連接的,并提供最大的數(shù)據(jù)傳輸速率。X200開(kāi)發(fā)板的外觀如圖3.21所示。
圖3.21X200開(kāi)發(fā)板外觀
3.3JETSON平臺(tái)軟件資源介紹
3.3.1JETSON平臺(tái)的架構(gòu)JETSONSDK平臺(tái)中涵蓋的軟件開(kāi)發(fā)資源及依賴(lài)關(guān)系如圖3.22所示。
圖3.22JETSONSDK平臺(tái)中涵蓋的軟件開(kāi)發(fā)資源及依賴(lài)關(guān)系
這套開(kāi)發(fā)工具包括:
(1)?CUDA(ComputeUnifiedDeviceArchitecture):一種由NVIDIA推出的通用并行計(jì)算架構(gòu)和編程模型,能使GPU解決復(fù)雜的計(jì)算問(wèn)題。
(2)?cuBLAS(CUDABasicLinearAlgebraSubroutines):CUDA專(zhuān)門(mén)用來(lái)解決線性代數(shù)運(yùn)算的庫(kù),可以實(shí)現(xiàn)向量相乘、矩陣乘向量、矩陣乘矩陣等運(yùn)算。
(3)?cuFFT(CUDAFastFourierTransform):CUDA提供的封裝的FFT庫(kù),還提供了與CPU的FFT庫(kù)相似的接口,讓用戶(hù)能夠輕易地挖掘GPU強(qiáng)大浮點(diǎn)處理能力,不需要用戶(hù)自己實(shí)現(xiàn)專(zhuān)門(mén)的FFT內(nèi)核函數(shù)。
(4)?cuDNN(CUDADeepNeuralNetworklibrary),是NVIDIA專(zhuān)門(mén)針對(duì)深度神經(jīng)網(wǎng)絡(luò)中的基礎(chǔ)操作推出的庫(kù),為深度神經(jīng)網(wǎng)絡(luò)中的標(biāo)準(zhǔn)流程提供了高度優(yōu)化的實(shí)現(xiàn)方式,如convolution、pooling、normalization及activationlayers的前向及后向過(guò)程。
(5)?TensorRT(TensorRuntime):一個(gè)高性能的深度學(xué)習(xí)推理引擎,用于在生產(chǎn)環(huán)境中部署深度學(xué)習(xí)應(yīng)用程序,應(yīng)用包括圖像分類(lèi)、分割和目標(biāo)檢測(cè)等。TensorRT可提供最大的推理吞吐量和效率,用戶(hù)無(wú)須安裝并運(yùn)行深度學(xué)習(xí)框架。
(6)?VisionWorks:一個(gè)用于計(jì)算機(jī)視覺(jué)和圖像處理的軟件開(kāi)發(fā)包,實(shí)現(xiàn)并擴(kuò)展了KhronosOpenVX標(biāo)準(zhǔn),并對(duì)支持CUDA的GPU和片上系統(tǒng)(SoC)進(jìn)行了優(yōu)化,使開(kāi)發(fā)人員能夠在可伸縮的、靈活的平臺(tái)上實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)(ComputerVision,CV)應(yīng)用。
(7)?OpenCV(OpenComputerVision):一個(gè)跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows、Android和MacOS操作系統(tǒng)上,可以實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。OpenCV4Tegra是NVIDIA專(zhuān)為T(mén)egra平臺(tái)優(yōu)化的一個(gè)OpenCV版本。
(8)?OpenGL(OpenGraphicsLibrary):一個(gè)跨編程語(yǔ)言、跨平臺(tái)的專(zhuān)業(yè)圖形程序接口,可用于二維/三維圖像處理,是一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖形庫(kù)。
(9)?libargus:為攝像機(jī)應(yīng)用程序提供了低級(jí)幀同步應(yīng)用編程接口(ApplicationProgrammingInterface,API)、每幀攝像機(jī)參數(shù)控制、多個(gè)/同步攝像機(jī)支持和設(shè)備說(shuō)明表(EquipmentGuideList,EGL)流輸出。
(10)?GStreamer:用來(lái)構(gòu)建流媒體應(yīng)用的開(kāi)源多媒體框架,其目標(biāo)是簡(jiǎn)化音/視頻應(yīng)用程序開(kāi)發(fā),主要用來(lái)處理MP3、MPEG1(MPEG組織制定的第一個(gè)視頻和音頻有損壓縮標(biāo)準(zhǔn))、MPEG2、AVI(音頻視頻交錯(cuò)格式)、Quicktime等多種格式的多媒體數(shù)據(jù)。
3.3.2基于Tegra核心的Linux系統(tǒng)
JETSON平臺(tái)使用的是NVIDIA公司推出的Tegra處理器。Tegra處理器是采用單片機(jī)系統(tǒng)設(shè)計(jì)的SoC(SystemonChip)芯片,集成了ARM架構(gòu)處理器和NVIDIA的GeForceGPU,面向便攜設(shè)備提供高性能、低功耗體驗(yàn)。在Tegra芯片上運(yùn)行的是Linux內(nèi)核,采用U-Boot(UniversalBootLoader)來(lái)實(shí)現(xiàn)系統(tǒng)引導(dǎo)。在Linux內(nèi)核上,Jetpack采用Ubuntu桌面系統(tǒng),目前最新版本的Jetpack已經(jīng)集成了Ubuntu18.04。此外,Jetpack還集成了BusyBox,包括了300多個(gè)最常用Linux命令和工具軟件,并結(jié)合相關(guān)硬件的外部設(shè)備重新編譯內(nèi)核,稱(chēng)之為L(zhǎng)inux4Tegra,簡(jiǎn)稱(chēng)L4T。
1.從操作系統(tǒng)到Ubuntu
操作系統(tǒng)(OperatingSystem,OS)是管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在“裸機(jī)”上的最基本的系統(tǒng)軟件,其他任何軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)并不是與計(jì)算機(jī)硬件一起誕生的,它是在人們使用計(jì)算機(jī)的過(guò)程中,為了滿足兩大需求——提高資源利用率和增強(qiáng)計(jì)算機(jī)系統(tǒng)性能,同時(shí)隨著計(jì)算機(jī)技術(shù)本身及其應(yīng)用的日益發(fā)展而逐步形成和完善起來(lái)的。
Linux是個(gè)人操作系統(tǒng)的另一個(gè)分支中的杰出之作,它是一種類(lèi)UNIX操作系統(tǒng),和Windows系統(tǒng)相比,有以下幾個(gè)優(yōu)點(diǎn):
(1)自由與開(kāi)放。
(2)配置需求低。
(3)內(nèi)核強(qiáng)大且穩(wěn)定。
(4)適合于嵌入式系統(tǒng),
2.常用的Linux操作命令
在Linux系統(tǒng)里,大部分在圖形界面下可以完成的操作都可以在Terminal應(yīng)用界面通過(guò)鍵入相應(yīng)的命令行來(lái)實(shí)現(xiàn)。特別地,對(duì)于JETSON平臺(tái)的程序開(kāi)發(fā)人員來(lái)說(shuō),大多數(shù)操作也都是在Terminal應(yīng)用界面中完成的。Terminal應(yīng)用的運(yùn)行界面如圖3.23所示。
圖3.23Terminal應(yīng)用的運(yùn)行界面
下面針對(duì)不同的場(chǎng)景介紹Ubuntu系統(tǒng)中的常用命令。
1)文件/文件夾管理常用命令
(1)?pwd命令是“PrintWorkingDirectory”的簡(jiǎn)寫(xiě),指令內(nèi)容顯示當(dāng)前工作目錄的路徑,在Terminal界面的使用格式為:
$pwd
(2)cd命令是“ChangeDirectory”的簡(jiǎn)寫(xiě),指令內(nèi)容是進(jìn)入到指定目錄下,其參數(shù)是指定目錄相對(duì)于當(dāng)前目錄的路徑,在Terminal界面中的使用格式為:
$cd<文件夾相對(duì)路徑>
cd命令后面的參數(shù)還支持一些特殊的指代符號(hào),如進(jìn)入當(dāng)前目錄的上一級(jí)目錄:
(3)?ls命令是“List”的簡(jiǎn)寫(xiě),指令內(nèi)容是列出指定目錄下的文件/文件夾,在Terminal界面中的使用格式為:
$ls<文件夾相對(duì)路徑>
①后綴“-l”參數(shù),會(huì)列出文件/文件夾的詳細(xì)信息,具體包括文件類(lèi)型、所有者/所有者權(quán)限、組用戶(hù)權(quán)限、其他用戶(hù)權(quán)限、鏈接數(shù)/子目錄數(shù)、用戶(hù)名、組名、文件大小、最后修改時(shí)間和文件名。
②后綴“-lh”參數(shù),會(huì)將列出的文件大小以K、M、G的格式顯示,更便于查看。
(4)?mkdir命令是“MakeDirectory”的簡(jiǎn)寫(xiě),指令內(nèi)容是創(chuàng)建指定名稱(chēng)的文件夾,在Terminal界面中的使用格式為:
$mkdir<文件夾名稱(chēng)>
(5)?cp命令是“Copy”的簡(jiǎn)寫(xiě),指令內(nèi)容是將原始路徑的文件復(fù)制到目標(biāo)路徑。這個(gè)命令可以在復(fù)制文件的同時(shí)修改文件名,在Terminal界面中的使用格式為:
$cp<原始路徑><目標(biāo)路徑>
①后綴“-i”參數(shù),可以在覆蓋目標(biāo)文件之前給出提示,要求用戶(hù)確認(rèn)。
②后綴“-r”參數(shù),會(huì)將源目錄下的所有文件夾及文件夾下的文件復(fù)制到目標(biāo)目錄下。
(6)?mv命令是“Move”的簡(jiǎn)寫(xiě),指令內(nèi)容是將原始路徑的文件移動(dòng)到目標(biāo)路徑。這個(gè)命令也可用于(在移動(dòng)文件的同時(shí))修改文件名,在Terminal界面中的使用格式為:
$mv<原始路徑><目標(biāo)路徑>
(7)?rm命令是“Remove”的簡(jiǎn)寫(xiě),指令內(nèi)容是刪除指定的文件。該命令支持常見(jiàn)的通配符,在Terminal界面中的使用格式為:
$rm<文件名>
①后綴“-r”參數(shù),可以刪除指定目錄下的所有文件和文件夾(包括子文件夾)。
②后綴“-f”參數(shù),可以實(shí)現(xiàn)強(qiáng)制刪除。
【注意】“rm-rf*”是非常危險(xiǎn)的命令,謹(jǐn)慎使用!
2)應(yīng)用安裝常用命令
目前,Linux系統(tǒng)下最常用的應(yīng)用程序管理器是AdvancedPackageTool,簡(jiǎn)稱(chēng)apt。apt應(yīng)用程序管理器最初于1998年發(fā)布,用于檢索應(yīng)用程序并將其加載到DebianLinux系統(tǒng)。apt成名的原因之一在于其出色的解決軟件依賴(lài)關(guān)系的能力,使用apt可以自動(dòng)從互聯(lián)網(wǎng)的多個(gè)軟件倉(cāng)庫(kù)中搜索、安裝、升級(jí)、卸載軟件或操作系統(tǒng)。
apt命令一般需要root權(quán)限執(zhí)行,所以都會(huì)結(jié)合sudo命令使用。下面介紹apt命令的一些常用選項(xiàng)及相關(guān)功能。
(1)?update選項(xiàng)可以更新安裝源,在Terminal界面中的使用格式為:
$sudoaptupdate
(2)?upgrade選項(xiàng)可以升級(jí)所有可升級(jí)的軟件包,在Terminal界面中的使用格式為:
$sudoaptupgrade
一般在第一次運(yùn)行aptupdate命令之后,就會(huì)運(yùn)行aptupgrade命令。
(3)?install選項(xiàng)可以安裝指定的軟件包。
install選項(xiàng)結(jié)合參數(shù)“-y”使用,可以在命令行交互式提示“[Y/N]”時(shí)自動(dòng)輸入“y”;如果結(jié)合參數(shù)“-no-install-recommends”使用,則可以避免安裝非必需的文件。在Terminal界面中的使用格式為:
在使用apt命令時(shí),偶爾會(huì)遇到“E:Couldnotgetlock/var/lib/dpkg/lock”“E:Couldnotget/var/lib/dpkg/lock-frontend”“E:Couldnotget/var/cache/apt/archives/lock”等錯(cuò)誤,這是由于用戶(hù)上一次調(diào)用apt命令時(shí)沒(méi)有正確退出,系統(tǒng)還鎖定著apt進(jìn)程,以避免同時(shí)運(yùn)行兩個(gè)apt進(jìn)程而導(dǎo)致沖突。因此,在實(shí)際操作時(shí),用戶(hù)應(yīng)首先確認(rèn)沒(méi)有其他的apt進(jìn)程正在工作,然后使用rm命令將相應(yīng)的lock文件刪除,就可以正常使用apt命令。
rm命令使用格式為:
【注意】此時(shí)使用rm命令千萬(wàn)不要帶“-r”參數(shù),以免操作不慎將“dpkg”目錄或其他目錄刪除。
(9)?dpkg命令可以實(shí)現(xiàn).deb格式軟件包的安裝及卸載。
①后綴“-i”參數(shù),可以實(shí)現(xiàn).deb格式軟件包的安裝。
②后綴“-r”參數(shù),可以實(shí)現(xiàn).deb格式軟件包的卸載。
dpkg命令在Terminal界面中的使用格式為:
$sudodpkg-i<安裝包文件名>.deb
$sudodpkg-r<軟件包名稱(chēng)>
3)其他常用命令
(1)?tar命令可以實(shí)現(xiàn)對(duì)指定的文件/文件夾進(jìn)行打包或解包的功能,可選是否壓縮。
①后綴“-c”參數(shù),實(shí)現(xiàn)打包功能。
②后綴“-x”參數(shù),實(shí)現(xiàn)解包功能。
③后綴“-z”參數(shù),實(shí)現(xiàn).gzip格式的壓縮/解壓功能。
④后綴“-f”參數(shù),指定文件名,這個(gè)參數(shù)必須放在最后。
(4)?find命令在指定路徑下查找文件。
①后綴“-name”參數(shù),指定要查找的文件名,文件名中支持通配符。
②后綴“-iname”參數(shù),表示忽略文件名中的大、小寫(xiě)。
③還可以后綴各種不同的參數(shù),實(shí)現(xiàn)指定文件更新時(shí)間、文件類(lèi)型等功能。
find命令在Terminal界面中的使用格式為:
$find<路徑>-name<文件名>
還有一些常用的信息查詢(xún)命令,在此就不一一具體說(shuō)明了,可以參見(jiàn)表3.10。
3.3.3基于CUDA的智能計(jì)算平臺(tái)
1.?CUDA簡(jiǎn)介
20世紀(jì)90年代,NVIDIA的第一個(gè)通用計(jì)算圖形處理單元(GPU)被設(shè)計(jì)成圖形加速器,它提供了可編程的功能,GPU出色的浮點(diǎn)性能很快被應(yīng)用于通用計(jì)算。2003年,由伊恩·巴克(IanBuck)領(lǐng)導(dǎo)的一組研究人員公布了Brook,這是第一個(gè)被廣泛采用的編程模式,它使用數(shù)據(jù)并行結(jié)構(gòu)擴(kuò)展了C語(yǔ)言。伊恩·巴克后來(lái)加入了NVIDIA,并在2006年發(fā)布了由他領(lǐng)導(dǎo)的CUDA,這是世界上第一個(gè)基于GPU的通用計(jì)算解決方案。
GPU并不是一個(gè)獨(dú)立運(yùn)行的計(jì)算平臺(tái),它需要與CPU協(xié)同工作,也可以看成是CPU的協(xié)處理器,因此說(shuō)GPU的并行計(jì)算其實(shí)就是指基于CPU+?GPU的異構(gòu)計(jì)算架構(gòu)(見(jiàn)圖3.24)。在這個(gè)異構(gòu)計(jì)算架構(gòu)中,GPU與CPU通過(guò)PCIe總線連接在一起協(xié)同工作,CPU所在位置稱(chēng)為主機(jī)端(host),GPU所在位置稱(chēng)為設(shè)備端(device)。
圖3.24基于CPU+GPU的異構(gòu)計(jì)算框架
典型的CUDA程序的執(zhí)行流程如下:
①分配host內(nèi)存,進(jìn)行數(shù)據(jù)初始化;
②分配device內(nèi)存,從host將數(shù)據(jù)拷貝到device上;
③調(diào)用CUDA的核函數(shù),在device上完成指定的運(yùn)算;
④將device上的運(yùn)算結(jié)果拷貝到host上;
⑤釋放device和host上分配的內(nèi)存。
要想深刻理解核函數(shù),就必須詳細(xì)了解核函數(shù)的線程層次結(jié)構(gòu)。GPU上有很多并行化的輕量級(jí)線程,核函數(shù)在device上執(zhí)行時(shí)實(shí)際上是啟動(dòng)了很多個(gè)線程(thread)。一個(gè)核函數(shù)啟動(dòng)的所有線程稱(chēng)為一個(gè)網(wǎng)格(grid),同一個(gè)網(wǎng)格上的線程共享相同的全局內(nèi)存空間,網(wǎng)格是線程結(jié)構(gòu)的第一個(gè)層次;其次,網(wǎng)格又可以分為很多線程塊(Block),一個(gè)線程塊包含了很多線程,線程塊是線程結(jié)構(gòu)的第二個(gè)層次。核函數(shù)上的兩層線程組織結(jié)構(gòu)如圖3.25所示。
圖3.25核函數(shù)上的兩層線程組織結(jié)構(gòu)(二維)
2.?CUDA的內(nèi)存模型
CUDA的內(nèi)存模型如圖3.26所示。圖3.26CUDA的內(nèi)存模式
GPU硬件的一個(gè)核心組件是SM,SM的核心組件包括CUDA核心、共享內(nèi)存和寄存器等。SM的并發(fā)能力取決于SM擁有的資源數(shù),可以并發(fā)地執(zhí)行數(shù)百個(gè)線程。當(dāng)一個(gè)核函數(shù)被執(zhí)行時(shí),其網(wǎng)格中的線程塊被分配到SM上。一個(gè)線程塊只能在一個(gè)SM上被調(diào)度,而SM則可以調(diào)度多個(gè)線程塊,調(diào)度線程塊的數(shù)量取決于SM自身的能力。還有可能是一個(gè)核函數(shù)的各個(gè)線程塊被分配到多個(gè)SM上,所以網(wǎng)格只是邏輯層,而SM才是執(zhí)行的物理層。CUDA編程的邏輯層和物理層如圖3.27所示。
圖3.27CUDA編程的邏輯層和物理層
基于JETSON平臺(tái)的實(shí)際開(kāi)發(fā)中,很多時(shí)候用戶(hù)并不需要編寫(xiě)底層的CUDA核函數(shù)。因?yàn)镹VIDIA在CUDA的基礎(chǔ)上,還提供了cuBLAS、cuFFT和cuDNN等運(yùn)行庫(kù),這些運(yùn)行庫(kù)相當(dāng)于對(duì)CUDA又做了一層封裝,用戶(hù)只需對(duì)這些運(yùn)行庫(kù)提供的函數(shù)進(jìn)行調(diào)控就可以完成計(jì)算任務(wù)。
3.3.4基于DeepStream的智能視覺(jué)平臺(tái)
1.?DeepStream簡(jiǎn)介
視頻是當(dāng)下最常見(jiàn)的傳感器數(shù)據(jù)之一。2020年,全球啟用的攝像頭數(shù)量達(dá)10億,這是一個(gè)難以置信的原始傳感器數(shù)據(jù)量,可利用攝像頭和流數(shù)據(jù)分析構(gòu)建一些功能強(qiáng)大的應(yīng)用,如機(jī)場(chǎng)的入境管理、制造中心和工廠的生產(chǎn)線管理、停車(chē)管理和客流分析等,這對(duì)構(gòu)建智慧城市是很重要的。另外,利用視頻分析可以讓人們具備更全面的洞察力。
以上這些以往需要開(kāi)發(fā)人員逐步去實(shí)現(xiàn)的步驟,DeepStream可以一站式解決。DeepStream是基于NVIDIA運(yùn)行的工具,主要應(yīng)用于視覺(jué)整個(gè)流程的解決方案。它與其他視覺(jué)庫(kù)(如OpenCV)的區(qū)別在于,DeepStream建立了一個(gè)完整的端到端的支持方案,換句話說(shuō),用戶(hù)的源無(wú)論是Camera、Video還是云服務(wù)器上的視頻,從視頻的編、解碼到后臺(tái)的圖像推理,再到展示,對(duì)這一完整流程上的各個(gè)細(xì)節(jié),DeepStream都能起到輔助的作用。在這個(gè)流程中,用戶(hù)只需加上自己的內(nèi)容,比如,視頻檢索需要訓(xùn)練一個(gè)模型用于識(shí)別或檢測(cè)視頻中的人臉,只需將人臉識(shí)別和人臉檢測(cè)的相關(guān)模型添加到方案中即可,對(duì)于設(shè)置視頻源的完整流程,DeepStream可自動(dòng)完成。
2.?DeepStream的核心組件
DeepStream是一個(gè)建立在GStreamer基礎(chǔ)上的軟件開(kāi)發(fā)工具包(SDK),而GStreamer是一個(gè)開(kāi)源的多媒體分析框架,由幾個(gè)核心組件組成。GStreamer底層(第一個(gè)層次)最基本的單元是插件(plug-ins)。GStreamer支持很多種不同的插件,每個(gè)插件都具有自己特定的功能。例如,第一個(gè)插件從數(shù)據(jù)源接收數(shù)據(jù),并解碼原始數(shù)據(jù)幀中的像素,再將數(shù)據(jù)發(fā)送給第二個(gè)插件;第二個(gè)插件做圖像縮放處理,然后將數(shù)據(jù)發(fā)送給下一個(gè)插件。這些最基本的插件是基于GStreamer的基本功能塊。
GStreamer第二個(gè)層次的基本單元是功能箱(bin)。在GStreamer和DeepStream里,其功能箱包含了很多功能塊,許多功能塊一起工作來(lái)完成某種具體的功能。GStreamer第三個(gè)層次實(shí)際上是一種總線,一種基于GStreamer或DeepStream的管理數(shù)據(jù)流動(dòng)和同步的總線。
GStreamer為應(yīng)用程序和管道之間的通信和數(shù)據(jù)交換提供了4種機(jī)制:第一種交換機(jī)制其本質(zhì)是緩沖區(qū),負(fù)責(zé)在插件之間傳遞流數(shù)據(jù)。在管道中,緩沖區(qū)將數(shù)據(jù)從視頻文件傳遞到解碼器,再傳遞到縮放插件,再傳遞到過(guò)濾器插件,最終傳遞到顯示插件。第二種交換機(jī)制叫作事件(event),用于在GStreamer框架中多個(gè)插件之間傳遞信息,也可用于將應(yīng)用程序的信息傳遞給某個(gè)插件。第三種交換機(jī)制是消息(messages),通過(guò)消息將信息發(fā)布到消息總線上,從而讓其他應(yīng)用通過(guò)接收消息來(lái)采集這些信息。第四種交換機(jī)制是查詢(xún)(queries),允許應(yīng)用程序主動(dòng)請(qǐng)求信息,不用等待信息發(fā)到應(yīng)用程序上才收集。
對(duì)于建立在GStreamer框架上的DeepStream來(lái)說(shuō),其主要構(gòu)建塊是插件。DeepStream提供了一個(gè)基于插件的模型,用戶(hù)基于該模型可以創(chuàng)建一個(gè)基于圖形的管道插件,還能將管道插件組合到應(yīng)用程序中,通過(guò)插件的互連,對(duì)應(yīng)用程序進(jìn)行深度優(yōu)化。DeepStream允許應(yīng)用程序利用GPU和CPU進(jìn)行異構(gòu)處理,這意味著當(dāng)應(yīng)用程序使用提供的GPU加速插件時(shí),該插件就可以訪問(wèn)底層NVIDIA優(yōu)化庫(kù)。由于DeepStream是專(zhuān)為GPU處理而構(gòu)建的,因此數(shù)據(jù)可以在管道中傳遞。另外,DeepStream還可以自動(dòng)實(shí)現(xiàn)并行處理與同步,開(kāi)發(fā)人員不用關(guān)心過(guò)程是如何實(shí)現(xiàn)的,只需要專(zhuān)注于構(gòu)建自定義用例組件。
這也意味著DeepStream本身就是多線程的,通過(guò)啟用多線程的異構(gòu)化,使用構(gòu)建管道架構(gòu)的插件來(lái)處理應(yīng)用程序的創(chuàng)建。DeepStream既可以針對(duì)NVIDIAGPU進(jìn)行優(yōu)化,還可以在CPU上有效運(yùn)行。
3.?DeepStream的處理流程
有許多應(yīng)用程序需要實(shí)時(shí)或準(zhǔn)實(shí)時(shí)延遲運(yùn)行,還有一些應(yīng)用程序需要提供服務(wù)級(jí)別的協(xié)議以針對(duì)特定情況提供某些延遲,因此有效管理應(yīng)用程序的內(nèi)存至關(guān)重要。使用DeepStream無(wú)須關(guān)注數(shù)據(jù)交流的優(yōu)化情況,因?yàn)镈eepStream提供了一條處理視頻流數(shù)據(jù)的流水線。
DeepStream同時(shí)還提供了一種標(biāo)準(zhǔn)化的、可擴(kuò)展的元數(shù)據(jù)結(jié)構(gòu),當(dāng)用戶(hù)有需要時(shí),如應(yīng)用程序有更多的類(lèi)別或需要其他描述性信息,則能方便地?cái)U(kuò)展流數(shù)據(jù)。DeepStream元數(shù)據(jù)的結(jié)構(gòu)除了每幀圖像的信息外,還包括部分與本幀相關(guān)的、所檢測(cè)到的對(duì)象的信息。
4.?DeepStream4.0的新特性
DeepStream4.0有以下重要的新特性:
(1)跨平臺(tái)的統(tǒng)一版本豐富了應(yīng)用程序的可移植性,支持最新的AI平臺(tái)JETSONNano;
(2)內(nèi)存占用減少了50%,可以實(shí)現(xiàn)更出色的流處理密度;
(3)與AzureEdgeIoT實(shí)現(xiàn)整合,可以構(gòu)建應(yīng)用程序和服務(wù),充分利用了Azure云的強(qiáng)大功能;
(4)?JETSON平臺(tái)的容器化部署,增強(qiáng)了將應(yīng)用程序部署到Dockers的能力,大大增強(qiáng)了大規(guī)模應(yīng)用程序的交付和維護(hù)效率;
(5)可將消息模式轉(zhuǎn)換器和消息代理插件用于推理;
(6)新的參考跟蹤器可實(shí)現(xiàn)穩(wěn)健的對(duì)象跟蹤;
(7)增加了對(duì)異構(gòu)相機(jī)、分割網(wǎng)絡(luò)、單色圖像和硬件加速JPEG解碼及編碼的支持。
DeepStream4.0還支持以下領(lǐng)域的人工智能應(yīng)用程序的開(kāi)發(fā):
(1)智能零售。支持分割和多目標(biāo)跟蹤、構(gòu)建端到端應(yīng)用程序、生成用戶(hù)觀察視角、創(chuàng)建自動(dòng)付款系統(tǒng)、設(shè)定預(yù)防損失策略等。
(2)工業(yè)檢驗(yàn)。硬件加速JPEG解碼和編碼;基于YOLO(YouOnlyLookOnce)和U-Net(U型結(jié)構(gòu))等網(wǎng)絡(luò)創(chuàng)建應(yīng)用程序;自動(dòng)檢查制造缺陷,速度快于手動(dòng)檢測(cè)。
(3)智能交通。物聯(lián)網(wǎng)集成傳輸傳感器數(shù)據(jù),用于智能停車(chē)和交通應(yīng)用,可改善交通擁堵、優(yōu)化停車(chē)機(jī)制,還提供占用經(jīng)驗(yàn)統(tǒng)計(jì)。
(4)物流和操作。多個(gè)攝像頭及新的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),運(yùn)行最新版本的TensorRT,可用于在倉(cāng)庫(kù)創(chuàng)建應(yīng)用程序。
值得注意的是,DeepStream4.0可以為所有在ARM64架構(gòu)上運(yùn)行的NVIDIAJETSON平臺(tái)提供容器支持。該容器中包含插件、二進(jìn)制文件和示例應(yīng)用程序源,以及DeepStream4.0發(fā)行包中的模型和配置文件,還預(yù)先安裝了各種外部軟件包及其依賴(lài)項(xiàng)。該容器利用JETSON上的NVIDIAContainerRuntime,可作為NVIDIAJetpack4.2.1或更高版本的一部分進(jìn)行安裝。對(duì)于特定設(shè)備的平臺(tái),由NVIDIAContainerRuntime從底層主機(jī)安裝到DeepStream容器中,從而為在容器內(nèi)執(zhí)行DeepStream應(yīng)用程序提供了必要的依賴(lài)關(guān)系。第4章JETSON平臺(tái)開(kāi)發(fā)基礎(chǔ)4.1JETSONNano系統(tǒng)刷寫(xiě)4.2
JETSON平臺(tái)環(huán)境檢查及配置
4.1JETSONNano系統(tǒng)刷寫(xiě)
4.1.1JETSONNano系統(tǒng)刷寫(xiě)前的準(zhǔn)備工作1.外接顯示器JETSON系列平臺(tái)提供了統(tǒng)一的HDMI接口,用于外接顯示器,建議用戶(hù)直接通過(guò)HDMI連接線接入支持HDMI接口的顯示器。JETSONNanoHDMI接口如圖4.1所示,顯示屏HDMI接口如圖4.2所示。
圖4.1JETSONNanoHDMI接口
圖4.2顯示屏HDMI接口
如果用戶(hù)既沒(méi)有HDMI接口的顯示器,也沒(méi)有DVI接口的顯示器,那么就必須有外接VGA接口的顯示器,還需要購(gòu)置一條HDMI轉(zhuǎn)VGA的轉(zhuǎn)接線頭,如圖4.3所示。需要注意:這種接入方式對(duì)轉(zhuǎn)接線和顯示器都有很大的依賴(lài)性,用戶(hù)可能還需要更換很多種組合才能找到可以顯示的方案,因此,非常不推薦。
圖4.3HDMI轉(zhuǎn)VGA轉(zhuǎn)接頭
2.外接電源
JETSONNano未提供電源適配器及相應(yīng)線纜,需要用戶(hù)自行購(gòu)置。JETSONNano開(kāi)發(fā)板上提供了兩種供電選擇:通過(guò)Micro-USB接口供電和通過(guò)DC電源供電。
Micro-USB接口供電需要將JETSONNano連接到優(yōu)質(zhì)的“5V2A”的電源適配器(電流超過(guò)2A可使用),如果電流不滿足條件或線纜質(zhì)量較差,都會(huì)導(dǎo)致JETSONNano無(wú)法通電。很多手機(jī)充電器也可以滿足JETSONNano在普通功耗工作時(shí)的工作需求,包括樹(shù)莓派專(zhuān)用的電源適配器也可以用于JETSONNano在普通功耗工作時(shí)的供電,Micro-USB電源接口如圖4.4所示。
圖4.4Micro-USB電源接口
當(dāng)JETSONNano功耗較高時(shí),如在完成較復(fù)雜的深度學(xué)習(xí)模型推理任務(wù)的過(guò)程中,Micro-USB接口的供電電流有可能無(wú)法滿足用電需求,進(jìn)而發(fā)生頻繁自動(dòng)重啟的情況。因此對(duì)于有高功耗任務(wù)需求的應(yīng)用場(chǎng)景,推薦使用DC電源來(lái)供電。用戶(hù)在購(gòu)買(mǎi)DC電源時(shí)應(yīng)注意電源額定電壓為5?V、額定電流為4~6A,另外接口必須為5.5?mm×?2.1?mm的標(biāo)準(zhǔn)接口。DC電源適配器如圖4.5所示。
圖4.5DC電源適配器
需要注意:使用DC電源給JETSONNano供電時(shí),必須使用跳線帽將開(kāi)發(fā)板上的J48進(jìn)行短接,JETSONNano的J48跳線位置如圖4.6所示。圖4.6JETSONNano的J48跳線位置
3.外接其他設(shè)備
在網(wǎng)絡(luò)接入方面,JETSON系列平臺(tái)提供了統(tǒng)一的千兆以太網(wǎng)的有線接入接口,可直接經(jīng)由網(wǎng)線接到路由器上,正常通過(guò)DHCP分配IP即可使用。
JETSONNano也可經(jīng)由M.2接口或USB接口接入無(wú)線網(wǎng)卡。在視頻采集方面,一般的USB攝像頭都可以即插即用。如果用CSI攝像頭,JETSONNano只支持imx219核心芯片。官方推薦的是樹(shù)莓派的V2模塊攝像頭,如圖4.7所示。
圖4.7在JETSONNano上安裝CSI攝像頭
在散熱方面,JETSONNano只提供了散熱片,并沒(méi)有配備風(fēng)扇。如果功耗較高,就可能會(huì)因?yàn)槟=M過(guò)熱而自動(dòng)降頻,降低運(yùn)算效率。因此,用戶(hù)最好配備一個(gè)風(fēng)扇,并用螺絲和螺母將風(fēng)扇固定在散熱片上,如圖4.8所示。
圖4.8在JETSONNano上安裝風(fēng)扇
由于所選風(fēng)扇是PWM調(diào)速風(fēng)扇,因此在JETSONNano通電后風(fēng)扇并不會(huì)啟動(dòng),在刷機(jī)后,用戶(hù)需要在Terminal界面下運(yùn)行如下命令才可以驅(qū)動(dòng)風(fēng)扇,使之以最高轉(zhuǎn)速轉(zhuǎn)動(dòng)。
$sudosh-c'echo255>/sys/devices/pwm-fan/target_pwm'
4.使用microSD卡
為了燒錄JETSONNano的microSD卡,需要一臺(tái)可以上網(wǎng)的計(jì)算機(jī)(以下簡(jiǎn)稱(chēng)主機(jī)),并且還要準(zhǔn)備一個(gè)能夠讀寫(xiě)microSD卡的高速讀卡器。如果是USB接口的讀卡器,最好是USB3.0接口,這樣能大幅度減少后續(xù)燒錄系統(tǒng)的時(shí)間。MicroSD卡及其讀卡器如圖4.9所示。
圖4.9microSD卡和讀卡器
4.1.2通過(guò)燒錄microSD卡對(duì)JETSONNano進(jìn)行系統(tǒng)刷寫(xiě)
1.系統(tǒng)鏡像下載
燒錄microSD卡對(duì)主機(jī)的操作系統(tǒng)沒(méi)有特殊要求,常用的Windows系統(tǒng)、Mac系統(tǒng)及Linux系統(tǒng)都配有相應(yīng)的燒錄軟件,用于完成對(duì)microSD卡的燒錄操作。
開(kāi)啟主機(jī),打開(kāi)瀏覽器并訪問(wèn)以下網(wǎng)址:/embedded/Jetpack。
鼠標(biāo)點(diǎn)擊“DownloadSDCardImage”按鈕,下載最新版本的JETSONNano系統(tǒng)鏡像。下載時(shí)需要使用NVIDIA開(kāi)發(fā)人員賬號(hào)登錄網(wǎng)站,如圖4.10所示。
圖4.10下載最新版本的JETSONNano系統(tǒng)鏡像
2.?microSD卡格式化
以Windows主機(jī)為例來(lái)說(shuō)明JETSONNano的系統(tǒng)鏡像燒錄過(guò)程。
首先,將裝有microSD卡的讀卡器插到主機(jī)上,在主機(jī)的瀏覽器中訪問(wèn)以下網(wǎng)址/downloads/formatter/index.html。
其次,根據(jù)主機(jī)的Windows版本下載相應(yīng)版本的SDMemoryCardFormatter,并安裝運(yùn)行。在圖4.11所示的“SDCardFormatter”程序界面中,選中microSD卡所在的驅(qū)動(dòng)器,選擇“Quickformat”,不用填寫(xiě)“Volumelabel”,鼠標(biāo)點(diǎn)擊“Format”按鈕,在彈出的警告對(duì)話框中點(diǎn)擊“Yes”按鈕,然后等待格式化操作完成。
圖4.11SDCardFormatter程序界面
3.?JETSONNano系統(tǒng)刷寫(xiě)
在主機(jī)的瀏覽器中訪問(wèn)網(wǎng)址https://www.balena.io/etcher/,下載Windows系統(tǒng)下可用的Etcher,并安裝運(yùn)行。在圖4.12所示的Etcher程序界面中,鼠標(biāo)點(diǎn)擊“Selectimage”按鈕,選擇之前下載的JETSONNano系統(tǒng)鏡像文件壓縮包;點(diǎn)擊“Selecttarget”按鈕,選中microSD卡所在的驅(qū)動(dòng)器,再點(diǎn)擊“Flash”按鈕,等待刷新及驗(yàn)證操作完成即可。此過(guò)程持續(xù)的時(shí)間取決于microSD卡的寫(xiě)入速度和讀卡器的傳輸速度,一般為幾分鐘到幾十分鐘。
圖4.12Etcher程序界面
4.開(kāi)機(jī)并進(jìn)行系統(tǒng)設(shè)置
microSD卡刷寫(xiě)完成后,將其插入到卡槽內(nèi),如圖4.13所示。連接顯示器和鍵盤(pán)、鼠標(biāo)之后接入電源即可進(jìn)行第一次系統(tǒng)啟動(dòng),并根據(jù)相應(yīng)提示一步步完成板載系統(tǒng)的“系統(tǒng)配置向?qū)А保g覽并接受許可和用戶(hù)協(xié)議、選擇系統(tǒng)語(yǔ)言(建議選擇English)、選擇鍵盤(pán)布局(比如English(US))、選擇所在時(shí)區(qū)(比如ShangHai),以及設(shè)定用戶(hù)名、計(jì)算機(jī)名、登錄賬戶(hù)、登錄密碼和是否自動(dòng)登錄。開(kāi)機(jī)系統(tǒng)配置界面如圖4.14所示。圖4.13卡槽
圖4.14開(kāi)機(jī)系統(tǒng)配置界面
4.2JETSON平臺(tái)環(huán)境檢查及配置
4.2.1JETSON平臺(tái)系統(tǒng)備份與恢復(fù)使用dd命令完成系統(tǒng)的備份與恢復(fù)。dd命令是Linux系統(tǒng)的一個(gè)非常有用的命令,可從標(biāo)準(zhǔn)輸入或文件中讀取數(shù)據(jù),根據(jù)指定的格式來(lái)轉(zhuǎn)換數(shù)據(jù),再將數(shù)據(jù)輸出到文件設(shè)備或標(biāo)準(zhǔn)輸出。dd命令常用于Linux系統(tǒng)的備份與恢復(fù)。dd命令有很多參數(shù),此處只對(duì)在系統(tǒng)備份與恢復(fù)過(guò)程中會(huì)用到的幾個(gè)參數(shù)進(jìn)行相應(yīng)的說(shuō)明。
參數(shù)“if=文件名”:輸入文件名,缺省為標(biāo)準(zhǔn)輸入,即指定源文件。
參數(shù)“of=文件名”:輸出文件名,缺省為標(biāo)準(zhǔn)輸出,即指定目的文件。
參數(shù)“bs=區(qū)塊大小”:同時(shí)設(shè)置讀入/輸出的塊,默認(rèn)單位為byte,也可指定其他單位。
參數(shù)“status=progress”:顯示寫(xiě)入進(jìn)度。
1.使用dd命令完成系統(tǒng)備份
如果用戶(hù)想要將當(dāng)前系統(tǒng)制作成鏡像并備份到U盤(pán)上,可以按組合鍵Crl+Alt+T運(yùn)行Teminal應(yīng)用,并在Teminal界面中輸入如下命令完成相應(yīng)的操作:
$sudoddif=/dev/mmecbik0of=/medivnvidia/<label>/nano.imgbs=IMstatus=progress
2.使用dd命令完成系統(tǒng)恢復(fù)
在Linux主機(jī)上按組合鍵Ctrl+Alt+T運(yùn)行Terminal應(yīng)用。將裝有待燒錄microSD卡的讀卡器插到Linux主機(jī)上,然后在Terminal界面中輸入如下命令,可查看Linux系統(tǒng)分配給microSD卡的磁盤(pán)設(shè)備號(hào)。
4.2.2JETSON平臺(tái)環(huán)境檢查
1.?jtop性能監(jiān)控軟件檢查
進(jìn)行JETSON平臺(tái)環(huán)境檢查需要安裝jtop。首先在終端輸入代碼:
2.終端命令檢查
圖4.15jtop界面
4.2.3JETSON平臺(tái)環(huán)境配置
1.語(yǔ)言環(huán)境
圖4.16InputMethod界面
在InputMethod界面,鼠標(biāo)點(diǎn)擊“Add”按鈕,選擇“Chinese”,如圖4.17所示。
圖4.17添加拼音
完成后按Shift鍵,如果不能進(jìn)行轉(zhuǎn)化則需要手動(dòng)轉(zhuǎn)換。在電腦任務(wù)欄中找到輸入法,鼠標(biāo)點(diǎn)擊“TextEntrySettings”,如圖4.18所示。
圖4.18輸入法轉(zhuǎn)換
進(jìn)入設(shè)置界面后可以點(diǎn)擊“Add”按鈕,添加中文拼音,如圖4.19所示。圖4.18輸圖4.19添加拼音入法轉(zhuǎn)換
第一次使用這個(gè)輸入法要在電腦任務(wù)欄手動(dòng)切換,如圖4.20所示。圖4.20手動(dòng)切換輸入法
若無(wú)法進(jìn)入IBus,解決辦法如下(特別是針對(duì)已經(jīng)安裝了archiconda的軟件):
(1)將archiconda3禁用,輸入如下命令:
$sudochmod000/home/joker/archiconda3/(在此你應(yīng)該使用你的目錄)
(2)設(shè)置ibus-setup。
(3)如果還想用archiconda3,輸入如下命令再把權(quán)限改回來(lái)(需要注意的是這樣操作后ibus-setup又癱瘓了):
$sudochmod775/home/NVIDIA/archiconda3/
進(jìn)入IBus后,輸入法選項(xiàng)添加中文-拼音,若沒(méi)有中文選項(xiàng),可以重啟再試一次。進(jìn)入到“TextEntrySettings”選項(xiàng),用鼠標(biāo)點(diǎn)擊“Add”,找到Chinese(Pinyin)(IBus)。完成輸入法選項(xiàng)添加中文-拼音操作后,若按Shift鍵仍無(wú)法切換成拼音,解決辦法如下:在圖4.20所示的輸入法圖標(biāo)里手動(dòng)切換,之后按Shift鍵。
2.更換鏡像源
3.遠(yuǎn)程控制
進(jìn)入Xftp后用鼠標(biāo)點(diǎn)擊“新建”,在彈出的對(duì)話框的主機(jī)欄填入JETSONNano的IP地址,登錄框中選擇密碼登錄,填入本機(jī)的用戶(hù)名和密碼,如圖4.21所示。
圖4.21建立連接
連接完成后進(jìn)入就可以拖動(dòng)文件進(jìn)行兩個(gè)機(jī)器文件的互傳,也可以進(jìn)行刪除等操作,如圖4.22所示。圖4.22文件管理界面
進(jìn)入Xshell,在“新建會(huì)話屬性”對(duì)話框中,主機(jī)仍填JETSONNano的IP地址,如圖4.23所示。
圖4.23Xshell新建會(huì)話屬性界面
連接后輸入用戶(hù)名,利用密碼登錄即可。進(jìn)入后的界面如圖4.24所示。圖4.24遠(yuǎn)程控制界面
4.?QQ安裝
QQLinux版的官方網(wǎng)站為/linuxqq/download.html,在下載列表中選擇ARM64構(gòu)架+deb格式,必備文件中有l(wèi)inuxqq_2.0.0-b2-1084_arm64.deb。
QQ登錄界面如圖4.25所示。
圖4.25QQ登錄界面
5.包管理工具安裝及其后續(xù)
(1)安裝pip。pip是Python包管理工具。
(2)安裝tensorflow。
(3)安裝TensorRT-7.13。
(4)安裝OpenCV。
(5)安裝deepstream。
(6)各種安裝包的查看。
第5章JETSON平臺(tái)開(kāi)發(fā)實(shí)戰(zhàn)5.1
JETSON平臺(tái)軟件資源功能測(cè)試5.2人工智能應(yīng)用實(shí)戰(zhàn)
5.1
JETSON平臺(tái)軟件資源功能測(cè)試
5.1.1基本功能測(cè)試
1.開(kāi)發(fā)板最佳性能模式按Ctrl+?Alt?+?T組合鍵運(yùn)行Terminal程序,輸入如下命令:
$sudojetson_clocks在輸入管理員密碼后按回車(chē)鍵,即可開(kāi)啟開(kāi)發(fā)板的最佳性能模式。
在Terminal界面中鍵入如下命令可將時(shí)鐘值調(diào)到最大,為當(dāng)前的nvpmodel模式提供最佳性能,同時(shí)開(kāi)啟風(fēng)扇,如圖5.1所示。圖5.1開(kāi)啟開(kāi)發(fā)板的最佳性能模式
2.查詢(xún)?cè)O(shè)備信息范例測(cè)試
在Terminal界面中輸入如下命令,可編譯并運(yùn)行CUDA自帶的一些范例程序。
$cd/usr/localcuda-10.0/samples/1_Utilities/deviceQuery
$sudomake
$./deviceQuery
查詢(xún)?cè)O(shè)備信息范例程序用于查詢(xún)系統(tǒng)的各種設(shè)備信息并打印出來(lái),如圖5.2所示。
圖5.2查詢(xún)?cè)O(shè)備信息范例
3.?CPU與GPU性能對(duì)比范例測(cè)試
在Terminal界面中輸入如下命令,可編譯并運(yùn)行CPU與GPU自帶的范例程序。
cd..7..15_Simulations/nbody
$sudomake
$./nbody
$/nbody-cpu
CPU與GPU性能對(duì)比范例程序用于比較CPU圖形渲染處理和GPU處理圖形渲染的性能,如圖5.3所示。
圖5.3
GPU與CPU性能對(duì)比范例
4.?TensorRT推理范例測(cè)試
在Terminal界面中輸入如下命令,可編譯并運(yùn)行TensorRT自帶的范例程序。
$cd/usr/src/tensorrt/samples
$sudomake
$../bin/sample_mnist
TensorRT推理范例程序演示了使用TensorRT加速的手寫(xiě)體數(shù)字識(shí)別,TensorRT推理范例識(shí)別結(jié)果如圖5.4所示。
圖5.4
TensorRT推理范例
5.多媒體API范例測(cè)試
在Terminal界面中輸入如下命令,運(yùn)行一個(gè)機(jī)動(dòng)車(chē)檢測(cè)的demo程序。在輸入命令時(shí)注意區(qū)分字母的大小寫(xiě),在文件夾名稱(chēng)和文件名稱(chēng)處可嘗試輸入部分字母后按Tab鍵由系統(tǒng)自動(dòng)補(bǔ)齊。
程序在第一次運(yùn)行時(shí)需要先轉(zhuǎn)換模型,會(huì)耗時(shí)近5?min,耐心等待后會(huì)看到視頻界面,在視頻中可以識(shí)別出每一幀中的汽車(chē)。多媒體API(JETSONNano上會(huì)耗時(shí)近20min)范例如圖5.5所示。視頻全長(zhǎng)約1?min,播放結(jié)束后程序會(huì)自動(dòng)退出。
圖5.5多媒體API范例
5.1.2人工智能應(yīng)用測(cè)試
JETSON-inference是NVIDIA官方提供的人工智能相關(guān)應(yīng)用的源代碼范例,它提供了各種基于TensorRT深度學(xué)習(xí)的應(yīng)用實(shí)現(xiàn)代碼,可以在實(shí)時(shí)攝像頭應(yīng)用中加載深度學(xué)習(xí)模型,用于圖像識(shí)別和具有定位功能的網(wǎng)絡(luò)檢測(cè),還可實(shí)現(xiàn)圖像分割功能。
1.?
JETSON-inference下載與編譯
按Ctrl+Alt?+?T組合鍵運(yùn)行Terminal程序,在程序界面中輸入如下命令后按回車(chē)鍵,輸入密碼“NVIDIA”后按回車(chē)鍵,就可更新安裝程序列表,移除無(wú)用程序,升級(jí)現(xiàn)有程序。
$sudoaptupdate
$sudoaptautoremove
$sudoaptupgrade
執(zhí)行升級(jí)命令的耗時(shí)受限于網(wǎng)絡(luò)連接速度。升級(jí)完成后,在Terminal界面中輸入如下命令,安裝CMake。
$sudoaptinstallcmake
CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝和編譯過(guò)程。CMake并不能直接建構(gòu)出最終的軟件,只是產(chǎn)生一個(gè)標(biāo)準(zhǔn)的建構(gòu)檔,該建構(gòu)檔需要配合CMake工具才能建構(gòu)出最終的軟件。
CMake安裝完成后,在Terminal界面中輸入如下命令,下載JETSON-inference程序包并更新submodule。
$mkdir~/workspace/
$cd~/workspace/
$gitclonehttns://ithub.com/dusty-nv/JETSON-
inference
$cdJETSON-inference
$gitsubmoduleupdate–init
繼續(xù)輸入如下命令,完成JETSON-inference程序的預(yù)編譯工作。
$mkdirbuild
$cdbuild
$cmake..
在預(yù)編譯的過(guò)程中會(huì)彈出兩個(gè)對(duì)話框。在第一個(gè)對(duì)話框中需要確認(rèn)下載哪些預(yù)訓(xùn)練模型,如圖5.6所示。
圖5.6確認(rèn)是否下載預(yù)訓(xùn)練模型
在第二個(gè)對(duì)話框中需要確認(rèn)是否安裝PyTorch及安裝版本,如圖5.7所示。
圖5.7確認(rèn)是否安裝PyTorch
預(yù)編譯完成后,運(yùn)行如下命令編譯JETSON-inference。
$sudocmake-j4
2.圖像分類(lèi)范例測(cè)試
訪問(wèn)網(wǎng)址/dusty-nv/JETSON-inference/releases,下載“GoogleNet.
tar.gz”,下載文件會(huì)默認(rèn)保存到“~/Downloads”目錄下。在Terminal界面中輸入如下命令,解壓縮模型文件至相應(yīng)目錄中。
$cd~/workspace/JETSON-inference/data/networks
$tar-xzf~/Downloads/GoogleNet.tar.gz
圖5.8官方提供的預(yù)訓(xùn)練模型備用下載頁(yè)面
在Terminal界面中運(yùn)行如下命令,查看所使用攝像頭的索引號(hào)。
$ls/dev/video
查看攝像頭的運(yùn)行界面如圖5.9所示,當(dāng)系統(tǒng)中只有一個(gè)攝像頭時(shí),攝像頭的索引號(hào)通常是0;當(dāng)系統(tǒng)中有兩個(gè)攝像頭時(shí),攝像頭索引號(hào)通常是0和1。如果系統(tǒng)中同時(shí)有CSI攝像頭和USB攝像頭,CSI攝像頭的索引號(hào)通常為0,USB攝像頭的索引號(hào)為1。
圖5.9查看攝像頭索引號(hào)
如果使用CSI攝像頭(以索引號(hào)是0為例),在Terminal界面中輸入如下命令:
$cd~/workspace/JETSON-inference/build/aarch64/bin
$./imagenet-camera--network=googlenet--camera=0
如果使用USB攝像頭(以索引號(hào)是0為例),在Terminal界面中輸入如下命令:
$cd~/workspace/JETSON-inference/build/aarch64/bin
$./imagenet-camera--network=googlenet--camera=/dev/video0--width=640--height=480
此處運(yùn)行的imgenet-camera命令支持以下參數(shù):
圖像分類(lèi)范例如圖5.10所示,攝像頭實(shí)時(shí)采集的畫(huà)面通過(guò)分類(lèi)算法得到當(dāng)前畫(huà)面中類(lèi)別概率最高的物體,并將其類(lèi)別和類(lèi)別概率顯示在畫(huà)面的左上角。程序在第一次運(yùn)行時(shí)需要轉(zhuǎn)換模型,耗時(shí)較久,需要耐心等待。
圖5.10圖像分類(lèi)范例
3.圖像語(yǔ)義分割范例測(cè)試
訪問(wèn)網(wǎng)址/dusty-nv/jetson-inference/releases,下載“FCN-Alexnet-
Aerial-FPV-720p.tar.gz”,下載文件會(huì)默認(rèn)保存到“~/Downloads”目錄下。
在Terminal界面中輸入如下命令,解壓縮模型文件至相應(yīng)目錄中。
$cd~/workspace/JETSON-inference/data/networks
$tar-xf~/Downloads/FCN-Alexnet-Aerial-FPV-720p.tar.Gz
在Terminal界面中輸入如下命令,從存儲(chǔ)設(shè)備中讀取指定的圖片,然后加載預(yù)訓(xùn)練的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 9、2025年度綠色建筑模板單項(xiàng)勞務(wù)分包合同3篇
- 個(gè)人宅基及房屋銷(xiāo)售協(xié)議版B版
- 2025版門(mén)面租賃合同簽訂流程及注意事項(xiàng)4篇
- 游戲化教學(xué)增強(qiáng)小學(xué)生注意力的教育模式
- 2025版化妝品銷(xiāo)售代理合同范本6篇
- 美容院與互聯(lián)網(wǎng)平臺(tái)2025年度線上推廣服務(wù)合同4篇
- 智能化學(xué)習(xí)環(huán)境下的學(xué)生思維升級(jí)
- 二零二五年度汽車(chē)美容服務(wù)合同范本4篇
- 科技產(chǎn)品的動(dòng)態(tài)視覺(jué)設(shè)計(jì)實(shí)踐分享
- 時(shí)間管理對(duì)學(xué)習(xí)態(tài)度的積極影響
- 教師招聘(教育理論基礎(chǔ))考試題庫(kù)(含答案)
- 2024年秋季學(xué)期學(xué)校辦公室工作總結(jié)
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 智能養(yǎng)老院視頻監(jiān)控技術(shù)方案
- 你比我猜題庫(kù)課件
- 無(wú)人駕駛航空器安全操作理論復(fù)習(xí)測(cè)試附答案
- 建筑工地春節(jié)留守人員安全技術(shù)交底
- 默納克-NICE1000技術(shù)交流-V1.0
- 蝴蝶蘭的簡(jiǎn)介
- 老年人心理健康量表(含評(píng)分)
評(píng)論
0/150
提交評(píng)論