NVIDIA Jetson AGX Xavier在(zài)邊(biān)緣部(bù)署(shǔ)AI

 行業动态     |      2023-05-11 17:30:27    |      瀝拓

  


  利用(yòng)NVIDIAJetsonAGXavier在(zài)邊(biān)緣部(bù)署(shǔ)AI,以提(tí)高(gāo)铁(tiě)路(lù)安(ān)全(quán)性(xìng)


  人(rén)工智能(néng)(AI)越来(lái)越多(duō)的(de)用(yòng)于(yú)所(suǒ)有(yǒu)主(zhǔ)要(yào)行業,包(bāo)括但不(bù)限于(yú)醫疗衛生(shēng)、零(líng)售、金(jīn)融和(hé)房(fáng)地(dì)産運輸。在(zài)交通(tòng)領域,特(tè)斯拉、通(tòng)用(yòng)汽车、福特(tè)、Alphabet、蘋果(guǒ)和(hé)英伟达(dá)等公(gōng)司已經(jīng)開(kāi)始(shǐ)投資開(kāi)發(fà)無人(rén)駕駛汽车技術(shù)。此(cǐ)外(wài),一(yī)些(xiē)自(zì)动駕駛卡车創業公(gōng)司和(hé)美(měi)國(guó)铁(tiě)路(lù)协会(huì)已經(jīng)制定(dìng)了(le)無人(rén)駕駛汽车的(de)指導方(fāng)針(zhēn)。


  主(zhǔ)动列车控制是(shì)一(yī)项新(xīn)技術(shù)(PositiveTrainControl,PTC),已經(jīng)成(chéng)功部(bù)署(shǔ)和(hé)實(shí)施了(le)100%的(de)1級PTC路(lù)線(xiàn)公(gōng)里(lǐ)网(wǎng)络。該系(xì)統使用(yòng)GPS、为了(le)避免碰撞和(hé)脫軌,WiFi和(hé)無線(xiàn)電(diàn)傳輸在(zài)列车和(hé)遠(yuǎn)程计算机之(zhī)間(jiān)傳輸數據(jù)。如(rú)果(guǒ)發(fà)現(xiàn)潜在(zài)威脅或(huò)違規行为,系(xì)統会(huì)利用(yòng)列车速度(dù)和(hé)當前(qián)速度(dù)限制等數據(jù)自(zì)动停止列车。但是(shì)这(zhè)个(gè)解(jiě)決方(fāng)案(àn)並(bìng)不(bù)是(shì)很先(xiān)進(jìn),端到(dào)端的(de)自(zì)动化(huà)無法(fǎ)提(tí)供,操作(zuò)人(rén)員必須控制列车。


  在(zài)这(zhè)篇(piān)博文(wén)中(zhōng),我(wǒ)们(men)介紹了(le)一(yī)種(zhǒng)用(yòng)于(yú)貨運列车自(zì)动駕駛车輛的(de)概念验(yàn)證端到(dào)端解(jiě)決方(fāng)案(àn),並(bìng)解(jiě)釋了(le)它(tā)是(shì)如(rú)何實(shí)施和(hé)部(bù)署(shǔ)的(de)。首先(xiān),我(wǒ)们(men)描述了(le)如(rú)何使用(yòng)TensorFlow和(hé)TensorRT框架对一(yī)组模型進(jìn)行訓练和(hé)優化(huà),以檢查铁(tiě)路(lù)上(shàng)的(de)侵略者(zhě),並(bìng)識别铁(tiě)路(lù)标(biāo)志和(hé)标(biāo)志。然後(hòu),我(wǒ)们(men)深入(rù)讨論邊(biān)緣設備(NVIDIAJetsonXavierAGX)布(bù)局(jú)模型所(suǒ)面(miàn)臨的(de)問(wèn)题,软(ruǎn)件(jiàn)架構和(hé)設计原理(lǐ)的(de)使用(yòng),以及(jí)端到(dào)端推理(lǐ)延遲基準測試的(de)解(jiě)決方(fāng)案(àn)。


  簡介解(jiě)決方(fāng)法(fǎ)


  我(wǒ)们(men)開(kāi)發(fà)了(le)一(yī)種(zhǒng)端到(dào)端解(jiě)決方(fāng)案(àn),在(zài)運輸过(guò)程中(zhōng)幫助操作(zuò)人(rén)員檢測铁(tiě)軌上(shàng)的(de)闯入(rù)者(zhě)、識别信(xìn)号(hào)及(jí)其(qí)相應(yìng)含義,從而(ér)提(tí)高(gāo)貨運列车的(de)安(ān)全(quán)性(xìng)。


  在(zài)NVIDIAJetsonXavierAGX上(shàng)部(bù)署(shǔ)了(le)我(wǒ)们(men)的(de)解(jiě)決方(fāng)案(àn)——这(zhè)是(shì)一(yī)款外(wài)形小巧的(de)计算設備,对能(néng)效進(jìn)行了(le)優化(huà),同(tóng)时(shí)給(gěi)運行端到(dào)端應(yìng)用(yòng)带(dài)来(lái)了(le)強(qiáng)大(dà)的(de)硬(yìng)件(jiàn)堆(duī)栈。該設備拥有(yǒu)512核VoltaGPU和(hé)TensorCores、32GBRAM、两(liǎng)个(gè)深度(dù)學(xué)習加速器,一(yī)个(gè)视覺加速器,支持(chí)基于(yú)硬(yìng)件(jiàn)的(de)视頻編碼和(hé)解(jiě)碼。你可(kě)以在(zài)这(zhè)里(lǐ)獲得更(gèng)多(duō)關(guān)于(yú)設備規格的(de)信(xìn)息。


  NVIDIA带(dài)来(lái)了(le)许多(duō)SDK,例如(rú)DeepStream,以及(jí)对CUDA和(hé)TensorRT的(de)支持(chí),以幫助開(kāi)發(fà)者(zhě)入(rù)門(mén)。DeepStreamSDK是(shì)一(yī)个(gè)構建在(zài)GStreamer之(zhī)上(shàng)的(de)框架,它(tā)允许開(kāi)發(fà)者(zhě)構建複雜的(de)AI管(guǎn)道。但是(shì),DeepStreamSDK並(bìng)沒(méi)有(yǒu)被應(yìng)用(yòng)到(dào)这(zhè)个(gè)用(yòng)例中(zhōng),因为它(tā)更(gèng)适合工作(zuò)环(huán)境,而(ér)我(wǒ)们(men)構建端到(dào)端解(jiě)決方(fāng)案(àn)的(de)主(zhǔ)要(yào)工作(zuò)是(shì)在(zài)原型設计階(jiē)段(duàn)。


  TensorRT框架是(shì)SDK,用(yòng)于(yú)高(gāo)性(xìng)能(néng)深度(dù)學(xué)習優化(huà)模型。为了(le)减少(shǎo)延遲和(hé)提(tí)高(gāo)模型的(de)吞吐量(liàng),它(tā)提(tí)供了(le)改進(jìn),例如(rú)降低(dī)混合精度(dù)和(hé)层(céng)結合。


  問(wèn)题闡述


  我(wǒ)们(men)試图(tú)解(jiě)決的(de)主(zhǔ)要(yào)挑战是(shì)通(tòng)过(guò)幫助列车運營商監控环(huán)境来(lái)提(tí)高(gāo)安(ān)全(quán)性(xìng),尤其(qí)是(shì)在(zài)較长(cháng)的(de)運輸时(shí)間(jiān)內(nèi)。列车經(jīng)过(guò)的(de)环(huán)境非(fēi)常複雜,因为它(tā)可(kě)能(néng)包(bāo)括不(bù)可(kě)預測的(de)事(shì)件(jiàn),如(rú)入(rù)侵者(zhě)或(huò)軌道上(shàng)的(de)物(wù)體(tǐ)。此(cǐ)外(wài),操作(zuò)人(rén)員還(huán)必須了(le)解(jiě)各(gè)種(zhǒng)交通(tòng)法(fǎ)規,如(rú)閃爍的(de)信(xìn)号(hào)或(huò)靠近(jìn)信(xìn)号(hào)的(de)特(tè)定(dìng)字(zì)母,将附加信(xìn)息傳遞給(gěi)操作(zuò)人(rén)員。


  端到(dào)端解(jiě)決方(fāng)案(àn)旨在(zài)滿足如(rú)图(tú)所(suǒ)示的(de)需求。檢查跟踪信(xìn)号(hào)、任何相關(guān)字(zì)母或(huò)數字(zì)标(biāo)記(jì),然後(hòu)将其(qí)映射到(dào)信(xìn)号(hào)規則中(zhōng),以提(tí)供其(qí)含義的(de)信(xìn)息。此(cǐ)外(wài),系(xì)統還(huán)必須識别侵略者(zhě),並(bìng)在(zài)識别侵略者(zhě)时(shí)發(fà)出(chū)警報。


  这(zhè)带(dài)来(lái)了(le)很多(duō)挑战,因为解(jiě)決方(fāng)案(àn)必須能(néng)夠在(zài)不(bù)同(tóng)的(de)时(shí)間(jiān)段(duàn)檢測和(hé)跟踪人(rén)員和(hé)信(xìn)号(hào)。該解(jiě)決方(fāng)案(àn)還(huán)應(yìng)确定(dìng)檢測到(dào)的(de)人(rén)員是(shì)現(xiàn)场(chǎng)工作(zuò)人(rén)員還(huán)是(shì)侵略者(zhě),以及(jí)相關(guān)信(xìn)号(hào)及(jí)其(qí)含義。我(wǒ)们(men)把(bǎ)我(wǒ)们(men)的(de)解(jiě)決方(fāng)案(àn)構建成(chéng)一(yī)个(gè)模块(kuài)来(lái)整合这(zhè)个(gè)功能(néng)。


  端到(dào)端的(de)解(jiě)決方(fāng)法(fǎ)需要(yào)使用(yòng)机器學(xué)習模型来(lái)識别铁(tiě)路(lù)信(xìn)号(hào)和(hé)人(rén)員。


  解(jiě)決方(fāng)法(fǎ)要(yào)求


  为檢測和(hé)監控人(rén)員和(hé)信(xìn)号(hào),我(wǒ)们(men)應(yìng)在(zài)單个(gè)JetsonXavierAGX設備上(shàng)部(bù)署(shǔ)端到(dào)端解(jiě)決方(fāng)案(àn),端到(dào)端延遲不(bù)少(shǎo)于(yú)10FPS和(hé)Web-基于(yú)UI的(de)可(kě)视化(huà)和(hé)分(fēn)析目的(de)。


  所(suǒ)以,我(wǒ)们(men)必須考慮许多(duō)深度(dù)學(xué)習模型,比如(rú)MobileNet,而(ér)不(bù)是(shì)ResNet50,它(tā)允许較小的(de)內(nèi)存占用(yòng),显著减少(shǎo)推理(lǐ)延遲,而(ér)是(shì)以降低(dī)準确性(xìng)为代(dài)價。另(lìng)外(wài),深度(dù)學(xué)習模型在(zài)處(chù)理(lǐ)大(dà)量(liàng)數據(jù)时(shí)表(biǎo)現(xiàn)异(yì)常出(chū)色(sè),但另(lìng)一(yī)个(gè)挑战是(shì)收(shōu)集足夠的(de)數據(jù)。下(xià)面(miàn),我(wǒ)们(men)将詳细(xì)介紹如(rú)何應(yìng)对这(zhè)些(xiē)挑战。


  客戶在(zài)構建解(jiě)決方(fāng)案(àn)时(shí)面(miàn)臨上(shàng)述限制,这(zhè)在(zài)構建和(hé)部(bù)署(shǔ)解(jiě)決方(fāng)案(àn)时(shí)带(dài)来(lái)了(le)額外(wài)的(de)考验(yàn)。


  软(ruǎn)體(tǐ)結構與(yǔ)設计原理(lǐ)


  由(yóu)于(yú)Python的(de)全(quán)局(jú)編譯器鎖(GIL)为确保每一(yī)个(gè)模块(kuài)都是(shì)非(fēi)阻塞性(xìng)的(de),我(wǒ)们(men)对所(suǒ)有(yǒu)模块(kuài)都采用(yòng)了(le)獨立的(de)过(guò)程。


  使用(yòng)对象(xiàng)跟踪模块(kuài)跟踪目标(biāo)後(hòu),使用(yòng)預處(chù)理(lǐ)邏輯为每个(gè)後(hòu)續模块(kuài)分(fēn)離目标(biāo)。例如(rú),只(zhī)有(yǒu)檢測到(dào)的(de)人(rén)才会(huì)被傳达(dá)到(dào)入(rù)侵者(zhě)的(de)分(fēn)类模块(kuài),而(ér)檢測到(dào)的(de)信(xìn)号(hào)会(huì)被傳达(dá)到(dào)交通(tòng)燈(dēng)檢測器。信(xìn)号(hào)修改器分(fēn)类器檢查交通(tòng)燈(dēng)的(de)顔色(sè)和(hé)信(xìn)号(hào)上(shàng)相應(yìng)的(de)數字(zì)或(huò)字(zì)母代(dài)碼。


  由(yóu)于(yú)在(zài)任何給(gěi)定(dìng)幀中(zhōng)都可(kě)能(néng)有(yǒu)许多(duō)不(bù)同(tóng)的(de)交通(tòng)信(xìn)号(hào)(參照图(tú)2),因此(cǐ)使用(yòng)啟發(fà)算法(fǎ)将正(zhèng)确的(de)交通(tòng)信(xìn)号(hào)與(yǔ)包(bāo)含信(xìn)号(hào)軌道相關(guān)模块(kuài)的(de)火(huǒ)车軌道相關(guān)聯。通(tòng)过(guò)交通(tòng)信(xìn)号(hào)算法(fǎ)和(hé)領域模型獲取(qǔ)这(zhè)些(xiē)信(xìn)息,識别信(xìn)号(hào)是(shì)否閃爍,檢測任何入(rù)侵者(zhě)並(bìng)輸出(chū)相應(yìng)的(de)規則代(dài)碼,操作(zuò)者(zhě)可(kě)以解(jiě)釋这(zhè)些(xiē)代(dài)碼以做出(chū)進(jìn)一(yī)步的(de)決定(dìng)。这(zhè)些(xiē)信(xìn)息通(tòng)过(guò)MQTTMessageBroker傳达(dá)給(gěi)操作(zuò)者(zhě)。


  ML模型–優化(huà)和(hé)基準測試


  显示了(le)图(tú)5中(zhōng)每个(gè)相應(yìng)的(de)Python模块(kuài)的(de)网(wǎng)络結構、分(fēn)辨率和(hé)推理(lǐ)速度(dù)。由(yóu)于(yú)需要(yào)準确的(de)目标(biāo)檢測器,我(wǒ)们(men)選擇了(le)ResNet50主(zhǔ)干(gàn)网(wǎng)作(zuò)为第(dì)一(yī)階(jiē)段(duàn)檢測器。由(yóu)于(yú)GPU內(nèi)存和(hé)端到(dào)端延遲的(de)限制,後(hòu)續模块(kuài)采用(yòng)了(le)較輕(qīng)的(de)主(zhǔ)干(gàn)。


  使用(yòng)TensorRT框架轉(zhuǎn)換的(de)模型适用(yòng)于(yú)FP32和(hé)FP16精度(dù)方(fāng)法(fǎ)列出(chū)的(de)推理(lǐ)速度(dù)。由(yóu)于(yú)TensorRT不(bù)支持(chí)某些(xiē)操作(zuò),所(suǒ)以我(wǒ)们(men)使用(yòng)了(le)混合TensorFlow-TensorRT模型。當TensorFlow運行不(bù)支持(chí)的(de)操作(zuò)时(shí),TensorRT支持(chí)的(de)操作(zuò)就(jiù)可(kě)以得到(dào)改進(jìn)。由(yóu)于(yú)精度(dù)明(míng)显下(xià)降,初始(shǐ)时(shí)間(jiān)較大(dà),所(suǒ)以沒(méi)有(yǒu)使用(yòng)INT8精度(dù)方(fāng)法(fǎ)。