深度神經(jīng)網(wǎng)絡(luò)(DNN)是實(shí)現(xiàn)強(qiáng)大的計(jì)算機(jī)視覺和人工智能應(yīng)用的強(qiáng)大方法。今天發(fā)布的NVIDIA Jetpack 2.3使用NVIDIATensorRT(以前稱為GPU推理引擎或GIE)將嵌入式應(yīng)用中的DNN的運(yùn)行性能提高了兩倍以上。NVIDIA推出的1 TFLOP / s嵌入式Jetson TX1模塊可以部署在無(wú)人機(jī)和智能機(jī)器上,與推理工作負(fù)載相比,功耗高出Intel i7 CPU 20倍。Jetson和深度學(xué)習(xí)力量 - 自主性和數(shù)據(jù)分析方面的最新進(jìn)展,如超高性能Teal無(wú)人機(jī)如圖1所示。JetPack包含全面的工具和SDK,可簡(jiǎn)化為主機(jī)和嵌入式目標(biāo)平臺(tái)部署核心軟件組件和深度學(xué)習(xí)框架的過(guò)程。
圖1:能夠飛行85英里每小時(shí),輕量級(jí)Teal無(wú)人機(jī)采用NVIDIA Jetson TX1和即時(shí)深入學(xué)習(xí)。
JetPack 2.3具有新的API,可用于使用Jetson TX1進(jìn)行高效的低級(jí)相機(jī)和多媒體流式傳輸,以及Linux For Tegra(L4T)R24.2與Ubuntu 16.04 aarch64和Linux內(nèi)核3.10.96的更新。JetPack 2.3還包括CUDA Toolkit 8.0和cuDNN 5.1,它們?yōu)榫矸e神經(jīng)網(wǎng)絡(luò)(CNN)和高級(jí)網(wǎng)絡(luò)(如RNN和LSTM)提供GPU加速支持。為了高效地將數(shù)據(jù)流入和流出算法流水線,JetPack 2.3添加了新的Jetson Multimedia API包,以支持基于KhronosOpenKCam的低級(jí)硬件V4L2編解碼器和每幀相機(jī)/ ISP API。
JetPack中包含的這些工具為部署實(shí)時(shí)深度學(xué)習(xí)應(yīng)用程序及其后續(xù)工作奠定了基礎(chǔ)。請(qǐng)參閱下面的完整軟件列表。為了讓您入門,JetPack還包含深度學(xué)習(xí)示例和關(guān)于培訓(xùn)和部署DNN的端到端教程。
JetPack 2.3組件
Linux4Tegra R24.2TensorRT 1.0.2 RCVisionWorks 1.5.2.14Ubuntu 16.04 64位LTSCUDA工具包8.0.34OpenCV4Tegra 2.4.13-17Jetson Multimedia API R24.2cuDNN 5.1.5GStreamer 1.8.1Tegra系統(tǒng)分析器3.1.2Tegra圖形調(diào)試器2.3.16OpenGL 4.5.0TensorRT
現(xiàn)在通過(guò)JetPack 2.3可用于Linux和64位ARM,NVIDIA TensorRT可最大限度地提高神經(jīng)網(wǎng)絡(luò)在Jetson TX1或云中的生產(chǎn)部署的運(yùn)行性能。通過(guò)可訪問(wèn)的C ++接口提供神經(jīng)網(wǎng)絡(luò)prototext和訓(xùn)練好的模型權(quán)重后,TensorRT執(zhí)行流水線優(yōu)化,包括內(nèi)核融合,層自動(dòng)調(diào)整和半精度(FP16)張量布局,從而提高性能并提高系統(tǒng)效率。關(guān)于TensorRT及其圖形優(yōu)化背后的概念,請(qǐng)參閱此并行Forall文章。圖2中的基準(zhǔn)測(cè)試結(jié)果比較了GPU加速的Caffe和TensorRT之間的谷歌網(wǎng)絡(luò)圖像識(shí)別網(wǎng)絡(luò)的推理性能,這兩種網(wǎng)絡(luò)都支持FP16擴(kuò)展,并且在一系列的批量大小上進(jìn)行了比較。(與FP32相比,F(xiàn)P16模式不會(huì)導(dǎo)致分類精度損失。)
圖2:使用FP16模式和批量大小為2的Jetson TX1上運(yùn)行GoogleNet時(shí),TensorRT將Caffe的性能提高了一倍以上。
性能的衡量標(biāo)準(zhǔn)是使用TensorRT或Caffe優(yōu)化的nvcaffe / fp16分支,使用GoogleNet處理的每秒圖像數(shù)。測(cè)試使用平面BGR 224×224圖像,GPU內(nèi)核時(shí)鐘頻率調(diào)節(jié)器最高為998MHz。批量大小表示網(wǎng)絡(luò)一次處理了多少個(gè)圖像。
圖2的基準(zhǔn)結(jié)果顯示,TensorRT和Caffe之間的推斷性能在批量大小為2時(shí)提高了2倍以上,并且單幅圖像的改進(jìn)大于30%。盡管使用批量大小1可以在單個(gè)數(shù)據(jù)流上提供最低的瞬時(shí)延遲,但同時(shí)處理多個(gè)數(shù)據(jù)流或傳感器的應(yīng)用程序,或執(zhí)行窗口化或感興趣區(qū)域(ROI)子采樣的應(yīng)用程序,可能會(huì)使批量大小2.可支持更高批量(例如8,64或128)的應(yīng)用程序(例如數(shù)據(jù)中心分析)可實(shí)現(xiàn)更高的整體吞吐量。
比較功耗顯示GPU加速的另一個(gè)優(yōu)點(diǎn)。如圖3所示,帶有TensorRT的Jetson TX1在運(yùn)行Caffe和MKL 2017的英特爾i7-6700K Skylake CPU上進(jìn)行深度學(xué)習(xí)推理的效率是其18倍。
圖3:在深度學(xué)習(xí)推理中,Jetson TX1的功率效率比CPU高20倍。
圖3的結(jié)果是通過(guò)將測(cè)量的每秒處理的GoogleNet圖像除以基準(zhǔn)期間處理器的功耗來(lái)確定的。這些結(jié)果使用批量大小2,盡管批量大小64 Jetson TX1能夠以21.5 GoogleNet圖像/秒/瓦的速度。從網(wǎng)絡(luò)層規(guī)范(原型文件)開始,TensorRT在網(wǎng)絡(luò)層和更高層執(zhí)行優(yōu)化;例如,融合內(nèi)核并每次處理更多層,節(jié)省系統(tǒng)資源和內(nèi)存帶寬。
通過(guò)將TensorRT連接到攝像頭和其他傳感器,可以實(shí)時(shí)評(píng)估深度學(xué)習(xí)網(wǎng)絡(luò)的實(shí)時(shí)數(shù)據(jù)。對(duì)于實(shí)現(xiàn)導(dǎo)航,運(yùn)動(dòng)控制和其他自治功能很有用,深度學(xué)***減少了實(shí)現(xiàn)復(fù)雜智能機(jī)器所需的硬編碼軟件數(shù)量。請(qǐng)參閱此GitHub回購(gòu),以獲取使用TensorRT快速識(shí)別Jetson TX1車載攝像頭的對(duì)象以及定位視頻輸入中行人坐標(biāo)的教程。
除了快速評(píng)估神經(jīng)網(wǎng)絡(luò)之外,TensorRT還可以與NVIDIA的DIGITS工作流程一起有效地用于交互式GPU加速網(wǎng)絡(luò)培訓(xùn)(見圖4)。DIGITS可以在云中運(yùn)行,也可以在桌面本地運(yùn)行,并且可以使用Caffe或Torch提供簡(jiǎn)單的配置和網(wǎng)絡(luò)培訓(xùn)的交互式可視化。有多個(gè)DIGITS演練示例可用于開始使用您自己的數(shù)據(jù)集來(lái)培訓(xùn)網(wǎng)絡(luò)。DIGITS在每個(gè)訓(xùn)練時(shí)期保存模型快照(通過(guò)訓(xùn)練數(shù)據(jù))。所需的模型快照或.caffemodel以及網(wǎng)絡(luò)原型文件規(guī)范被復(fù)制到Jetson TX1,TensorRT加載并解析網(wǎng)絡(luò)文件并構(gòu)建優(yōu)化的執(zhí)行計(jì)劃。
圖4:用于在獨(dú)立GPU上訓(xùn)練網(wǎng)絡(luò)并在Jetson TX1上部署TensorRT的DIGITS工作流程。
使用DIGITS與DGX-1超級(jí)計(jì)算機(jī)進(jìn)行培訓(xùn),以及Jetson上的TensorRT,NVIDIA的完整計(jì)算平臺(tái)使各地的開發(fā)人員能夠利用端到端的深度學(xué)習(xí)解決方案部署先進(jìn)的人工智能和科學(xué)研究。
CUDA工具包8.0和cuDNN 5.1
CUDA Toolkit 8.0包含針對(duì)Jetson TX1的集成NVIDIA GPU的CUDA的最新更新。主機(jī)編譯器支持已更新為包含GCC 5.x,NVCC CUDA編譯器已進(jìn)行了優(yōu)化,編譯速度提高了2倍。CUDA 8包含nvGRAPH,這是GPU加速圖形算法的新庫(kù),如PageRank和單源最短路徑。CUDA 8還包含新的API,用于在CUDA內(nèi)核以及cuBLAS和cuFFT等庫(kù)中使用半精度浮點(diǎn)運(yùn)算(FP16)。cuDNN,CUDA深度神經(jīng)網(wǎng)絡(luò)庫(kù)5.1版支持最新的高級(jí)網(wǎng)絡(luò)模型,如LSTM(長(zhǎng)期短期記憶)和RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))。看到這個(gè)并行Forall現(xiàn)在支持cuDNN的RNN模式,包括ReLU,門控循環(huán)單元(GRU)和LSTM。
cuDNN已被納入所有最流行的深度學(xué)習(xí)框架,包括Caffe,Torch,CNTK,TensorFlow等。使用與cuDNN綁定編譯的Torch,最近可用的網(wǎng)絡(luò)(如LSTM)支持深層強(qiáng)化學(xué)習(xí)等領(lǐng)域的功能,其中人工智能代理學(xué)習(xí)如何基于傳感器狀態(tài)和來(lái)自獎(jiǎng)勵(lì)功能的反饋在現(xiàn)實(shí)世界或虛擬環(huán)境中聯(lián)機(jī)運(yùn)行。通過(guò)釋放深度強(qiáng)化學(xué)習(xí)者來(lái)探索他們的環(huán)境并適應(yīng)不斷變化的條件,人工智能代理開發(fā)理解并采用復(fù)雜的預(yù)測(cè)和直觀的類人行為。該OpenAI健身房項(xiàng)目中有許多虛擬環(huán)境用于訓(xùn)練AI代理的例子。在具有非常復(fù)雜的狀態(tài)空間的環(huán)境中(如許多真實(shí)世界場(chǎng)景中的情景),深度神經(jīng)網(wǎng)絡(luò)被強(qiáng)化學(xué)習(xí)者用來(lái)通過(guò)估計(jì)未來(lái)來(lái)選擇下一個(gè)動(dòng)作基于感官輸入的潛在獎(jiǎng)勵(lì)(通常稱為Q學(xué)習(xí)和深度Q學(xué)習(xí)網(wǎng)絡(luò):DQN)。由于為了將傳感器狀態(tài)(如高分辨率攝像機(jī)和LIDAR數(shù)據(jù))映射為代理可以執(zhí)行的每個(gè)潛在動(dòng)作的輸出,DQN通常非常大,因此cuDNN對(duì)于加速?gòu)?qiáng)化學(xué)習(xí)網(wǎng)絡(luò)至關(guān)重要,因此AI代理保持交互性并且可以實(shí)時(shí)學(xué)習(xí)。圖5顯示了我為在Jetson TX1上實(shí)時(shí)學(xué)習(xí)而編寫的DQN的輸出。這個(gè)例子的代碼,可在GitHub上獲得,使用cuDNN綁定在Torch中實(shí)現(xiàn),并具有用于集成到機(jī)器人操作系統(tǒng)(ROS)等機(jī)器人平臺(tái)的C ++庫(kù)API。
圖5:深層強(qiáng)化Q-learning Network(DQN)在Jetson TX1上運(yùn)行游戲和模擬時(shí)學(xué)習(xí)。
在許多現(xiàn)實(shí)世界的機(jī)器人應(yīng)用和傳感器配置中,完全可觀察的狀態(tài)空間可能無(wú)法使用,因此網(wǎng)絡(luò)無(wú)法保持對(duì)整個(gè)環(huán)境狀態(tài)的即時(shí)感知訪問(wèn)。來(lái)自cuDNN的GPU加速LSTM在解決部分可觀測(cè)性問(wèn)題方面特別有效,依賴于LSTM編碼的存儲(chǔ)器來(lái)記憶先前的經(jīng)驗(yàn)并將觀測(cè)連鎖在一起。LSTM在具有語(yǔ)法結(jié)構(gòu)的自然語(yǔ)言處理(NLP)應(yīng)用程序中也很有用。
Jetson多媒體SDK
JetPack 2.3還包含新的Jetson Multimedia API軟件包,為開發(fā)人員提供低級(jí)API訪問(wèn),以便在使用Tegra X1硬件編解碼器,MIPI CSI Video Ingest(VI)和圖像信號(hào)處理器(ISP)時(shí)靈活地開發(fā)應(yīng)用程序。這是以前版本中提供的GStreamer媒體框架的補(bǔ)充。Jetson多媒體API包括攝像頭攝取和ISP控制,以及Video4Linux2(V4L2),用于編碼,解碼,縮放等功能。這些較低級(jí)別的API可以更好地控制底層硬件塊。
V4L2支持可訪問(wèn)視頻編碼和解碼設(shè)備,格式轉(zhuǎn)換和縮放功能,包括支持EGL和高效內(nèi)存流。用于編碼的V4L2打開了許多功能,如比特率控制,質(zhì)量預(yù)設(shè),低延遲編碼,時(shí)間折衷,提供運(yùn)動(dòng)矢量地圖等等,以實(shí)現(xiàn)靈活而豐富的應(yīng)用程序開發(fā)。通過(guò)添加強(qiáng)大的錯(cuò)誤和信息報(bào)告,跳幀支持,EGL圖像輸出等,解碼器功能得到顯著增強(qiáng)。VL42公開了Jetson TX1強(qiáng)大的視頻硬件功能,用于圖像格式轉(zhuǎn)換,縮放,裁剪,旋轉(zhuǎn),濾波和多個(gè)同步流編碼。
為了幫助開發(fā)人員將深度學(xué)習(xí)應(yīng)用程序與數(shù)據(jù)流源快速集成,Jetson Multimedia API包含了與TensorRT一起使用V4L2編解碼器的強(qiáng)大實(shí)例。多媒體API包中包含圖6中的對(duì)象檢測(cè)網(wǎng)絡(luò)示例,該示例源自GoogleNet,并通過(guò)V4L2解碼器和TensorRT傳輸預(yù)編碼的H.264視頻數(shù)據(jù)。
圖6:Jetson Multimedia SDK附帶的修改后的GoogleNet網(wǎng)絡(luò)以全動(dòng)態(tài)視頻檢測(cè)汽車邊框。
與核心圖像識(shí)別相比,除了分類以外,物體檢測(cè)還提供了圖像內(nèi)的邊界位置,使其對(duì)追蹤和避障有用。多媒體API示例網(wǎng)絡(luò)源自GoogleNet,具有用于提取邊界框的附加圖層。在960×540半高清輸入分辨率下,物體檢測(cè)網(wǎng)絡(luò)捕獲的分辨率高于原始GoogleNet,同時(shí)使用TensorRT在Jetson TX1上保留實(shí)時(shí)性能。
Jetson Multimedia API包中的其他功能包括ROI編碼,它允許定義一個(gè)幀中最多6個(gè)感興趣的區(qū)域。這通過(guò)允許僅為感興趣的區(qū)域分配較高的比特率來(lái)實(shí)現(xiàn)傳輸和存儲(chǔ)帶寬優(yōu)化。為了進(jìn)一步促進(jìn)CUDA和OpenGL之類的API與EGLStreams之間的高效流式傳輸,NV dma_buf結(jié)構(gòu)在Multimedia API中公開。
相機(jī)ISP API
基于Khronos OpenKCam,低級(jí)攝像機(jī)/ ISP API libargus提供針對(duì)攝像機(jī)參數(shù)和EGL流輸出的細(xì)粒度的每幀控制,以實(shí)現(xiàn)與GStreamer和V4L2流水線的有效互操作。相機(jī)API為開發(fā)人員提供了對(duì)MIPI CSI相機(jī)視頻攝取和ISP引擎配置的低級(jí)訪問(wèn)。樣本C ++代碼和API參考也包含在內(nèi)。以下示例代碼片段搜索可用攝像頭,初始化攝像頭流并捕獲視頻幀。
#包括<阿格斯/?Argus.h>#include #include #包括#包括使用名稱空間Argus;使用名稱空間Argus;//列舉相機(jī)設(shè)備并創(chuàng)建Argus會(huì)話//列舉相機(jī)設(shè)備并創(chuàng)建Argus會(huì)話UniqueObjcameraProvider(CameraProvider::create());UniqueObjcameraProvider(CameraProvider::create());CameraProvider*iCameraProvider=interface_cast(cameraProvider);CameraProvider*iCameraProvider=interface_cast(cameraProvider);std::vector 相機(jī);::vector相機(jī);狀態(tài)狀態(tài)=iCameraProvider->getCameraDevices(&cameras);狀態(tài)狀態(tài)=iCameraProvider->getCameraDevices(&cameras);UniqueObjcaptureSession(iCameraProvider->createCaptureSession(cameras[0],UniqueObjcaptureSession(iCameraProvider->createCaptureSession(cameras[0], &狀態(tài)));&status));ICaptureSession*iSession=interface_cast(captureSession);ICaptureSession*iSession=interface_cast(captureSession);//配置攝像機(jī)輸出流參數(shù)//配置攝像機(jī)輸出流參數(shù)UniqueObjstreamSettings(iSession->createOutputStreamSettings());UniqueObjstreamSettings(iSession->createOutputStreamSettings());IOutputStreamSettings*iStreamSettings=interface_cast(streamSettings);IOutputStreamSettings*iStreamSettings=interface_cast(streamSettings); iStreamSettings->setPixelFormat(PIXEL_FMT_YCbCr_420_888);->setPixelFormat(PIXEL_FMT_YCbCr_420_888);iStreamSettings->setResolution(Size(640,480));->setResolution(大?。?40,480));//將相機(jī)輸出連接到EGLStream//將相機(jī)輸出連接到EGLStreamUniqueObj流(iSession->createOutputStream(streamSettings.get()));UniqueObj流(的Isession->createOutputStream(streamSettings。獲得()));UniqueObj使用者(EGLStream::FrameConsumer::create(stream.get()));UniqueObj消費(fèi)者(EGLStream::FrameConsumer::創(chuàng)建(流。獲得()));EGLStream::IFrameConsumer*iFrameConsumer=interface_cast(consumer);EGLStream::IFrameConsumer*iFrameConsumer=interface_cast(consumer);//從EGLStream獲取一幀//從EGLStream獲取一幀constuint64_tFIVE_SECONDS_IN_NANOSECONDS=5000000000;constuint64_tFIVE_SECONDS_IN_NANOSECONDS=5000000000;UniqueObj框架(iFrameConsumer->acquireFrame(FIVE_SECONDS_IN_NANOSECONDS,UniqueObj框架(iFrameConsumer->acquireFrame(FIVE_SECONDS_IN_NANOSECONDS, &狀態(tài)));&status));EGLStream::IFrame*iFrame=interface_cast(frame);EGLStream::IFrame*iFrame=interface_cast(frame);EGLStream::Image*image=iFrame->getImage();EGLStream::Image*image=iFrame->getImage();
所述杰特森TX1開發(fā)工具包包括與所述豪威OV5693 RAW圖像傳感器的5MP相機(jī)模塊。現(xiàn)在通過(guò)相機(jī)API或GStreamer插件啟用對(duì)該模塊的ISP支持。Leopard Imaging公司的IMX185可以通過(guò)相機(jī)/ ISP API(見Leopard Imaging的Jetson相機(jī)套件)完全支持來(lái)自Leopard Imaging的IMX185的2.1MP相機(jī)。ISP通過(guò)首選合作伙伴服務(wù)支持額外的傳感器。此外,USB攝像頭,集成了ISP的CSI攝像頭和ISP旁路模式下的RAW輸出CSI攝像頭可用于V4L2 API。
展望未來(lái),所有相機(jī)設(shè)備驅(qū)動(dòng)程序都應(yīng)該使用V4L2介質(zhì)控制器傳感器內(nèi)核驅(qū)動(dòng)程序API - 請(qǐng)參閱V4L2傳感器驅(qū)動(dòng)程序編程指南了解詳細(xì)信息以及基于Developer Kit相機(jī)模塊的完整示例。
智能機(jī)器無(wú)處不在
JetPack 2.3包含用于部署使用NVIDIA Jetson TX1和GPU技術(shù)的生產(chǎn)級(jí)高性能嵌入式系統(tǒng)的所有最新工具和組件。NVIDIA GPU借助深度學(xué)習(xí)和人工智能的最新突破,用于解決日常面臨的重大挑戰(zhàn)。使用JetPack 2.3中的GPU和工具,任何人都可以開始設(shè)計(jì)高級(jí)AI來(lái)解決實(shí)際問(wèn)題。訪問(wèn)NVIDIA的深度學(xué)習(xí)研究院,獲取實(shí)踐培訓(xùn)課程以及這些Jetsonwiki資源的深度學(xué)習(xí)資源。NVIDIA的JetsonTX1DevTalk論壇也可用于與社區(qū)開發(fā)人員進(jìn)行技術(shù)支持和討論。下載JetPack今天并為Jetson和PC安裝最新的NVIDIA工具。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4793瀏覽量
102433 -
深度神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
61瀏覽量
4501
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論