基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序_第1頁(yè)
基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序_第2頁(yè)
基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序_第3頁(yè)
基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序_第4頁(yè)
基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于FPGA的邊緣設(shè)備開發(fā)深度神經(jīng)網(wǎng)絡(luò)檢測(cè)程序機(jī)器學(xué)習(xí)是使用算法解析數(shù)據(jù),從中學(xué)習(xí),然后做出決策或預(yù)測(cè)的過(guò)程。機(jī)器不是準(zhǔn)備程序代碼來(lái)完成任務(wù),而是使用大量數(shù)據(jù)和算法“訓(xùn)練”以自行執(zhí)行任務(wù)。機(jī)器學(xué)習(xí)正在使用神經(jīng)網(wǎng)絡(luò)(NN)算法發(fā)生革命性變化,神經(jīng)網(wǎng)絡(luò)算法是我們大腦中發(fā)現(xiàn)的生物神經(jīng)元的數(shù)字模型。這些模型包含像大腦神經(jīng)元一樣連接的層。許多應(yīng)用程序都受益于機(jī)器學(xué)習(xí),包括圖像分類/識(shí)別、大數(shù)據(jù)模式檢測(cè)、ADAS、欺詐檢測(cè)、食品質(zhì)量保證和財(cái)務(wù)預(yù)測(cè)。作為機(jī)器學(xué)習(xí)的算法,神經(jīng)網(wǎng)絡(luò)包括由多個(gè)層組成的廣泛的拓?fù)浣Y(jié)構(gòu)和大??;第一層(“輸入層”)、中間層(“隱藏層”)和最后一層(“輸出層”)。隱藏層對(duì)輸入執(zhí)行各種專用任務(wù)并將其傳遞到下一層,直到在輸出層生成預(yù)測(cè)。一些神經(jīng)網(wǎng)絡(luò)相對(duì)簡(jiǎn)單,只有兩層或三層神經(jīng)元,而所謂的深度神經(jīng)網(wǎng)絡(luò)(DNN)可能包含多達(dá)1000層。為特定任務(wù)確定正確的NN拓?fù)浜痛笮⌒枰c類似網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)和比較。設(shè)計(jì)高性能機(jī)器學(xué)習(xí)應(yīng)用程序需要網(wǎng)絡(luò)優(yōu)化,這通常使用修剪和量化技術(shù)完成,以及計(jì)算加速,使用ASIC或FPGA執(zhí)行。在本文中,我們將討論DNN的工作原理、為什么FPGA在DNN推理中越來(lái)越受歡迎,并考慮使用FPGA開始設(shè)計(jì)和實(shí)現(xiàn)基于深度學(xué)習(xí)的應(yīng)用程序所需的工具。開發(fā)DNN應(yīng)用程序的設(shè)計(jì)流程設(shè)計(jì)DNN應(yīng)用程序是一個(gè)三步過(guò)程。這些步驟是選擇正確的網(wǎng)絡(luò),訓(xùn)練網(wǎng)絡(luò),然后將新數(shù)據(jù)應(yīng)用于訓(xùn)練模型進(jìn)行預(yù)測(cè)(推理)。如前所述,DNN模型中有多個(gè)層,每一層都有特定的任務(wù)。在深度學(xué)習(xí)中,每一層都旨在提取不同層次的特征。例如,在邊緣檢測(cè)神經(jīng)網(wǎng)絡(luò)中,第一個(gè)中間層檢測(cè)邊緣和曲線等特征。然后將第一個(gè)中間層的輸出饋送到第二層,第二層負(fù)責(zé)檢測(cè)更高級(jí)別的特征,例如半圓或正方形。第三個(gè)中間層組裝其他層的輸出以創(chuàng)建熟悉的對(duì)象,最后一層檢測(cè)對(duì)象。在另一個(gè)示例中,如果我們開始識(shí)別停車標(biāo)志,則經(jīng)過(guò)訓(xùn)練的系統(tǒng)將包括用于檢測(cè)八邊形形狀、顏色以及其中的字母“S”、“T”、“O”和“P”的層秩序和孤立。輸出層將負(fù)責(zé)確定它是否是停車標(biāo)志。DNN學(xué)習(xí)模型有四種主要的學(xué)習(xí)模型:監(jiān)督:在這個(gè)模型中,所有的訓(xùn)練數(shù)據(jù)都被標(biāo)記了。NN將輸入數(shù)據(jù)分類為從訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)的不同標(biāo)簽。無(wú)監(jiān)督:在無(wú)監(jiān)督學(xué)習(xí)中,深度學(xué)習(xí)模型被交給一個(gè)數(shù)據(jù)集,而沒(méi)有明確說(shuō)明如何處理它。訓(xùn)練數(shù)據(jù)集是沒(méi)有特定期望結(jié)果或正確答案的示例集合。然后,NN會(huì)嘗試通過(guò)提取有用的特征并分析其結(jié)構(gòu)來(lái)自動(dòng)找到數(shù)據(jù)中的結(jié)構(gòu)。半監(jiān)督:這包括帶有標(biāo)記和未標(biāo)記數(shù)據(jù)的訓(xùn)練數(shù)據(jù)集。這種方法在難以從數(shù)據(jù)中提取相關(guān)特征時(shí)特別有用,并且標(biāo)記示例對(duì)于專家來(lái)說(shuō)是一項(xiàng)耗時(shí)的任務(wù)。強(qiáng)化:這是獎(jiǎng)勵(lì)網(wǎng)絡(luò)以獲得結(jié)果并提高性能的行為。這是一個(gè)迭代過(guò)程:反饋的輪次越多,網(wǎng)絡(luò)就越好。這種技術(shù)對(duì)于訓(xùn)練機(jī)器人特別有用,機(jī)器人會(huì)在諸如駕駛自動(dòng)駕駛汽車或管理倉(cāng)庫(kù)庫(kù)存等任務(wù)中做出一系列決策。訓(xùn)練與推理在訓(xùn)練中,未經(jīng)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型從現(xiàn)有數(shù)據(jù)中學(xué)習(xí)新的能力。一旦訓(xùn)練好的模型準(zhǔn)備好,它就會(huì)被輸入新數(shù)據(jù)并測(cè)量系統(tǒng)的性能。正確檢測(cè)圖像的比率稱為推理。在圖1給出的示例中(識(shí)別貓),在輸入訓(xùn)練數(shù)據(jù)集后,DNN開始調(diào)整權(quán)重以尋找貓;其中權(quán)重是每個(gè)神經(jīng)元之間連接強(qiáng)度的度量。如果結(jié)果錯(cuò)誤,錯(cuò)誤將被傳播回網(wǎng)絡(luò)層以修改權(quán)重。這個(gè)過(guò)程一次又一次地發(fā)生,直到它得到正確的權(quán)重,這導(dǎo)致每次都得到正確的答案。如何實(shí)現(xiàn)高性能DNN應(yīng)用使用DNN進(jìn)行分類需要大數(shù)據(jù)集,從而提高準(zhǔn)確性。然而,一個(gè)缺點(diǎn)是它為模型產(chǎn)生了許多參數(shù),這增加了計(jì)算成本并且需要高內(nèi)存帶寬。優(yōu)化DNN應(yīng)用程序有兩種主要方法。首先是通過(guò)修剪冗余連接和量化權(quán)重并融合神經(jīng)網(wǎng)絡(luò)來(lái)縮小網(wǎng)絡(luò)規(guī)模的網(wǎng)絡(luò)優(yōu)化。修剪:這是DNN壓縮的一種形式。它減少了與其他神經(jīng)元的突觸連接數(shù),從而減少了數(shù)據(jù)總量。通常,接近零的權(quán)重會(huì)被移除。對(duì)于分類[2]等任務(wù),這有助于消除冗余連接,但精度會(huì)略有下降。量化:這樣做是為了使神經(jīng)網(wǎng)絡(luò)達(dá)到合理的大小,同時(shí)實(shí)現(xiàn)高性能的準(zhǔn)確性。這對(duì)于內(nèi)存大小和計(jì)算數(shù)量必然受到限制的邊緣應(yīng)用程序尤其重要。在此類應(yīng)用中,為了獲得更好的性能,模型參數(shù)保存在本地內(nèi)存中,以避免使用PCIe或其他互連接口進(jìn)行耗時(shí)的傳輸。在該方法中,執(zhí)行通過(guò)低位寬數(shù)的神經(jīng)網(wǎng)絡(luò)(INT8)來(lái)逼近使用浮點(diǎn)數(shù)的神經(jīng)網(wǎng)絡(luò)(FTP32)的過(guò)程。這極大地降低了使用神經(jīng)網(wǎng)絡(luò)的內(nèi)存需求和計(jì)算成本。通過(guò)量化模型,我們稍微損失了精度和準(zhǔn)確度。但是,對(duì)于大多數(shù)應(yīng)用程序來(lái)說(shuō),不需要32位浮點(diǎn)。優(yōu)化DNN的第二種方法是通過(guò)計(jì)算加速,使用ASIC或FPGA。其中,后一種選擇對(duì)機(jī)器學(xué)習(xí)應(yīng)用程序有很多好處。這些包括:電源效率:FPGA提供了一種靈活且可定制的架構(gòu),它只允許使用我們需要的計(jì)算資源。在ADAS等許多應(yīng)用中,為DNN配備低功耗系統(tǒng)至關(guān)重要??芍貥?gòu)性:與ASIC相比,F(xiàn)PGA被認(rèn)為是原始可編程硬件。此功能使它們易于使用,并顯著縮短了上市時(shí)間。為了趕上每天發(fā)展的機(jī)器學(xué)習(xí)算法,擁有對(duì)系統(tǒng)重新編程的能力是非常有益的,而不是等待SoC和ASIC的長(zhǎng)時(shí)間制造。低延遲:與最快的片外存儲(chǔ)器相比,F(xiàn)PGA內(nèi)部的BlockRAM提供的數(shù)據(jù)傳輸速度至少快50倍。這是機(jī)器學(xué)習(xí)應(yīng)用程序的游戲規(guī)則改變者,低延遲是必不可少的。性能可移植性:您無(wú)需任何代碼修改或回歸測(cè)試即可獲得下一代FPGA設(shè)備的所有優(yōu)勢(shì)。靈活性:FPGA是原始硬件,可以針對(duì)任何架構(gòu)進(jìn)行配置。沒(méi)有固定的架構(gòu)或數(shù)據(jù)路徑可以束縛您。這種靈活性使FPGA能夠進(jìn)行大規(guī)模并行處理,因?yàn)閿?shù)據(jù)路徑可以隨時(shí)重新配置。靈活性還帶來(lái)了任意對(duì)任意I/O連接能力。這使FPGA無(wú)需主機(jī)CPU即可連接到任何設(shè)備、網(wǎng)絡(luò)或存儲(chǔ)設(shè)備。功能安全::FPGA用戶可以在硬件中實(shí)現(xiàn)任何安全功能。根據(jù)應(yīng)用程序,可以高效地進(jìn)行編碼。FPGA廣泛用于航空電子設(shè)備、自動(dòng)化和安全領(lǐng)域,這證明了這些設(shè)備的功能安全性,機(jī)器學(xué)習(xí)算法可以從中受益。成本效率:FPGA是可重新配置的,應(yīng)用程序的上市時(shí)間非常短。ASIC非常昂貴,如果沒(méi)有出現(xiàn)錯(cuò)誤,制造時(shí)間需要6到12個(gè)月。這是機(jī)器學(xué)習(xí)應(yīng)用程序的一個(gè)優(yōu)勢(shì),因?yàn)槌杀痉浅V匾?,而且NN算法每天都在發(fā)展?,F(xiàn)代FPGA通常在其架構(gòu)中提供一組豐富的DSP和BRAM資源,可用于NN處理。但是,與DNN的深度和層大小相比,這些資源已不足以進(jìn)行完整和直接的映射;當(dāng)然不會(huì)像前幾代神經(jīng)網(wǎng)絡(luò)加速器中經(jīng)常使用的那樣。即使使用像ZynqMPSoC這樣的設(shè)備(即使是最大的設(shè)備也僅限于2kDSP片和總BRAM大小小于10MB),將所有神經(jīng)元和權(quán)重直接映射到FPGA上也是不可能的。那么,我們?nèi)绾卫肍PGA的功率效率、可重編程性、低延遲等特性進(jìn)行深度學(xué)習(xí)呢?需要新的NN算法和架構(gòu)修改才能在FPGA等內(nèi)存資源有限的平臺(tái)上進(jìn)行DNN推理?,F(xiàn)代DNN將應(yīng)用程序分成更小的塊,由FPGA處理。由于FPGA中的片上存儲(chǔ)器不足以存儲(chǔ)網(wǎng)絡(luò)所需的所有權(quán)重,我們只需要存儲(chǔ)當(dāng)前階段的權(quán)重和參數(shù),它們是從外部存儲(chǔ)器(可能是DDR存儲(chǔ)器)加載的。然而,在FPGA和內(nèi)存之間來(lái)回傳輸數(shù)據(jù)將使延遲增加多達(dá)50倍。首先想到的是減少內(nèi)存數(shù)據(jù)。除了上面討論的網(wǎng)絡(luò)優(yōu)化(剪枝和量化)之外,還有:權(quán)重編碼:在FPGA中,編碼格式可以隨意選擇??赡軙?huì)有一些準(zhǔn)確性損失,但是與數(shù)據(jù)傳輸引起的延遲及其處理的復(fù)雜性相比,這可以忽略不計(jì)。權(quán)重編碼創(chuàng)建了二元神經(jīng)網(wǎng)絡(luò)(BNN),其中權(quán)重減少到只有一位。這種方法減少了傳輸和存儲(chǔ)的數(shù)據(jù)量,以及計(jì)算復(fù)雜度。然而,這種方法只會(huì)導(dǎo)致具有固定輸入寬度的硬件乘法器的小幅減少。批處理:在這種方法中,我們使用流水線方法將芯片上已有的權(quán)重用于多個(gè)輸入。它還減少了從片外存儲(chǔ)器傳輸?shù)紽PGA[5]的數(shù)據(jù)量。在FPGA上設(shè)計(jì)和實(shí)現(xiàn)DNN應(yīng)用讓我們深入研究在FPGA上實(shí)現(xiàn)DNN。在此過(guò)程中,我們將利用最合適的商用解決方案來(lái)快速跟蹤應(yīng)用程序的開發(fā)。例如,Aldec有一個(gè)名為TySOM-3A-ZU19EG的嵌入式開發(fā)板。除了廣泛的外設(shè),它還搭載XilinxZynqUltraScale+MPSoC系列中最大的FPGA,該器件具有超過(guò)一百萬(wàn)個(gè)邏輯單元,并包括一個(gè)運(yùn)行頻率高達(dá)1.5GHz的四核ArmCortex-A53處理器。重要的是,就我們的目的而言,這款龐大的MPSoC還支持賽靈思為機(jī)器學(xué)習(xí)開發(fā)人員創(chuàng)建的深度學(xué)習(xí)處理單元(DPU)。DPU是專用于卷積神經(jīng)網(wǎng)絡(luò)(CNN)處理的可編程引擎。它旨在加速計(jì)算機(jī)視覺(jué)應(yīng)用中使用的DNN算法的計(jì)算工作量,例如圖像/視頻分類和對(duì)象跟蹤/檢測(cè)。DPU有一個(gè)特定的指令集,使其能夠有效地與許多CNN一起工作。與常規(guī)處理器一樣,DPU獲取、解碼和執(zhí)行存儲(chǔ)在DDR內(nèi)存中的指令。該單元支持多種CNN,如VGG、ResNet、GoogLeNet、YOLO、SSD、MobileNet、FPN等[3]。DPUIP可以作為一個(gè)塊集成到所選Zynq?-7000SoC和ZynqUltraScale?+MPSoC器件的可編程邏輯(PL)中,并直接連接到處理系統(tǒng)(PS)。為了創(chuàng)建DPU的說(shuō)明,Xilinx提供了深度神經(jīng)網(wǎng)絡(luò)開發(fā)套件(DNNDK)工具包。賽靈思聲明:DNNDK被設(shè)計(jì)為一個(gè)集成框架,旨在簡(jiǎn)化和加速深度學(xué)習(xí)處理器單元(DPU)上的深度學(xué)習(xí)應(yīng)用程序開發(fā)和部署。DNNDK是一個(gè)優(yōu)化推理引擎,它使DPU的計(jì)算能力變得容易獲得。它為開發(fā)深度學(xué)習(xí)應(yīng)用程序提供了最佳的簡(jiǎn)單性和生產(chǎn)力,涵蓋了神經(jīng)網(wǎng)絡(luò)模型壓縮、編程、編譯和運(yùn)行時(shí)啟用[4]的各個(gè)階段。DNNDK框架包括以下單元:DECENT:執(zhí)行剪枝和量化以滿足低延遲和高吞吐量DNNC:將神經(jīng)網(wǎng)絡(luò)算法映射到DPU指令DNNAS:將DPU指令組裝成ELF二進(jìn)制代碼N2Cube:充當(dāng)DNNDK應(yīng)用程序的加載器,處理資源分配和DPU調(diào)度。其核心組件包括DPU驅(qū)動(dòng)程序、DPU加載程序、跟蹤器和用于應(yīng)用程序開發(fā)的編程API。Profiler:由DPU跟蹤器和DSight組成。D跟蹤器在DPU上運(yùn)行NN時(shí)收集原始分析數(shù)據(jù)。DSight使用此數(shù)據(jù)生成可視化圖表以進(jìn)行性能分析。Dexplorer:為DPU提供運(yùn)行模式配置、狀態(tài)檢查和代碼簽名檢查。DDump:轉(zhuǎn)儲(chǔ)DPUELF、混合可執(zhí)行文件或DPU共享庫(kù)中的信息。它加速了用戶的調(diào)試和分析。這些符合圖2所示的流程。圖2.上述深度神經(jīng)網(wǎng)絡(luò)開發(fā)套件(DNNK)框架使基于FPGA的機(jī)器學(xué)習(xí)項(xiàng)目的設(shè)計(jì)過(guò)程對(duì)開發(fā)人員來(lái)說(shuō)更加容易。使用DNNDK可以讓開發(fā)人員更輕松地設(shè)計(jì)基于FPGA的機(jī)器學(xué)習(xí)項(xiàng)目;此外,Aldec的TySOM-3A-ZU19EG板等平臺(tái)也可提供寶貴的啟動(dòng)功能。例如,Aldec準(zhǔn)備了一些針對(duì)板的示例——包括手勢(shì)檢測(cè)、行人檢測(cè)、分割和交通檢測(cè)——這意味著開發(fā)人員不是從一張白紙開始的。讓我們考慮一下今年早些時(shí)候在ArmTechCon上展示的一個(gè)演示。這是使用TySOM-3A-ZU19EG和FMC-ADAS子卡構(gòu)建的交通檢測(cè)演示,該子卡為5倍高速數(shù)據(jù)(HSD)攝像頭、雷達(dá)、激光雷達(dá)和超聲波傳感器提供接口和外圍設(shè)備——大多數(shù)人的感官輸入ADAS應(yīng)用程序。圖3顯示了演示的架構(gòu)。FPGA中實(shí)現(xiàn)了兩個(gè)DPU,它們通過(guò)AXIHP端口連接到處理單元,以執(zhí)行深度學(xué)習(xí)推理任務(wù),例如圖像分類、對(duì)象檢測(cè)和語(yǔ)義分割。DPU需要指令來(lái)實(shí)現(xiàn)由DNNC和DNNAS工具準(zhǔn)備的神經(jīng)網(wǎng)絡(luò)。他們還需要訪問(wèn)輸入視頻和輸出數(shù)據(jù)的內(nèi)存位置。圖3.流量檢測(cè)演示具有5個(gè)視頻輸入管道,用于數(shù)據(jù)打包、AXI4到AXI流數(shù)據(jù)傳輸、色彩空間轉(zhuǎn)換(YUV2RGB)以及將視頻發(fā)送到內(nèi)存。應(yīng)用程序在應(yīng)用程序處理單元(APU)上運(yùn)行,以通過(guò)管理中斷和執(zhí)行單元之間的數(shù)據(jù)傳輸來(lái)控制系統(tǒng)。DPU和用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論