版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于FPGA的邊緣設備開發(fā)深度神經網絡檢測程序機器學習是使用算法解析數據,從中學習,然后做出決策或預測的過程。機器不是準備程序代碼來完成任務,而是使用大量數據和算法“訓練”以自行執(zhí)行任務。機器學習正在使用神經網絡(NN)算法發(fā)生革命性變化,神經網絡算法是我們大腦中發(fā)現的生物神經元的數字模型。這些模型包含像大腦神經元一樣連接的層。許多應用程序都受益于機器學習,包括圖像分類/識別、大數據模式檢測、ADAS、欺詐檢測、食品質量保證和財務預測。作為機器學習的算法,神經網絡包括由多個層組成的廣泛的拓撲結構和大??;第一層(“輸入層”)、中間層(“隱藏層”)和最后一層(“輸出層”)。隱藏層對輸入執(zhí)行各種專用任務并將其傳遞到下一層,直到在輸出層生成預測。一些神經網絡相對簡單,只有兩層或三層神經元,而所謂的深度神經網絡(DNN)可能包含多達1000層。為特定任務確定正確的NN拓撲和大小需要與類似網絡進行實驗和比較。設計高性能機器學習應用程序需要網絡優(yōu)化,這通常使用修剪和量化技術完成,以及計算加速,使用ASIC或FPGA執(zhí)行。在本文中,我們將討論DNN的工作原理、為什么FPGA在DNN推理中越來越受歡迎,并考慮使用FPGA開始設計和實現基于深度學習的應用程序所需的工具。開發(fā)DNN應用程序的設計流程設計DNN應用程序是一個三步過程。這些步驟是選擇正確的網絡,訓練網絡,然后將新數據應用于訓練模型進行預測(推理)。如前所述,DNN模型中有多個層,每一層都有特定的任務。在深度學習中,每一層都旨在提取不同層次的特征。例如,在邊緣檢測神經網絡中,第一個中間層檢測邊緣和曲線等特征。然后將第一個中間層的輸出饋送到第二層,第二層負責檢測更高級別的特征,例如半圓或正方形。第三個中間層組裝其他層的輸出以創(chuàng)建熟悉的對象,最后一層檢測對象。在另一個示例中,如果我們開始識別停車標志,則經過訓練的系統(tǒng)將包括用于檢測八邊形形狀、顏色以及其中的字母“S”、“T”、“O”和“P”的層秩序和孤立。輸出層將負責確定它是否是停車標志。DNN學習模型有四種主要的學習模型:監(jiān)督:在這個模型中,所有的訓練數據都被標記了。NN將輸入數據分類為從訓練數據集中學習的不同標簽。無監(jiān)督:在無監(jiān)督學習中,深度學習模型被交給一個數據集,而沒有明確說明如何處理它。訓練數據集是沒有特定期望結果或正確答案的示例集合。然后,NN會嘗試通過提取有用的特征并分析其結構來自動找到數據中的結構。半監(jiān)督:這包括帶有標記和未標記數據的訓練數據集。這種方法在難以從數據中提取相關特征時特別有用,并且標記示例對于專家來說是一項耗時的任務。強化:這是獎勵網絡以獲得結果并提高性能的行為。這是一個迭代過程:反饋的輪次越多,網絡就越好。這種技術對于訓練機器人特別有用,機器人會在諸如駕駛自動駕駛汽車或管理倉庫庫存等任務中做出一系列決策。訓練與推理在訓練中,未經訓練的神經網絡模型從現有數據中學習新的能力。一旦訓練好的模型準備好,它就會被輸入新數據并測量系統(tǒng)的性能。正確檢測圖像的比率稱為推理。在圖1給出的示例中(識別貓),在輸入訓練數據集后,DNN開始調整權重以尋找貓;其中權重是每個神經元之間連接強度的度量。如果結果錯誤,錯誤將被傳播回網絡層以修改權重。這個過程一次又一次地發(fā)生,直到它得到正確的權重,這導致每次都得到正確的答案。如何實現高性能DNN應用使用DNN進行分類需要大數據集,從而提高準確性。然而,一個缺點是它為模型產生了許多參數,這增加了計算成本并且需要高內存帶寬。優(yōu)化DNN應用程序有兩種主要方法。首先是通過修剪冗余連接和量化權重并融合神經網絡來縮小網絡規(guī)模的網絡優(yōu)化。修剪:這是DNN壓縮的一種形式。它減少了與其他神經元的突觸連接數,從而減少了數據總量。通常,接近零的權重會被移除。對于分類[2]等任務,這有助于消除冗余連接,但精度會略有下降。量化:這樣做是為了使神經網絡達到合理的大小,同時實現高性能的準確性。這對于內存大小和計算數量必然受到限制的邊緣應用程序尤其重要。在此類應用中,為了獲得更好的性能,模型參數保存在本地內存中,以避免使用PCIe或其他互連接口進行耗時的傳輸。在該方法中,執(zhí)行通過低位寬數的神經網絡(INT8)來逼近使用浮點數的神經網絡(FTP32)的過程。這極大地降低了使用神經網絡的內存需求和計算成本。通過量化模型,我們稍微損失了精度和準確度。但是,對于大多數應用程序來說,不需要32位浮點。優(yōu)化DNN的第二種方法是通過計算加速,使用ASIC或FPGA。其中,后一種選擇對機器學習應用程序有很多好處。這些包括:電源效率:FPGA提供了一種靈活且可定制的架構,它只允許使用我們需要的計算資源。在ADAS等許多應用中,為DNN配備低功耗系統(tǒng)至關重要??芍貥嬓裕号cASIC相比,FPGA被認為是原始可編程硬件。此功能使它們易于使用,并顯著縮短了上市時間。為了趕上每天發(fā)展的機器學習算法,擁有對系統(tǒng)重新編程的能力是非常有益的,而不是等待SoC和ASIC的長時間制造。低延遲:與最快的片外存儲器相比,FPGA內部的BlockRAM提供的數據傳輸速度至少快50倍。這是機器學習應用程序的游戲規(guī)則改變者,低延遲是必不可少的。性能可移植性:您無需任何代碼修改或回歸測試即可獲得下一代FPGA設備的所有優(yōu)勢。靈活性:FPGA是原始硬件,可以針對任何架構進行配置。沒有固定的架構或數據路徑可以束縛您。這種靈活性使FPGA能夠進行大規(guī)模并行處理,因為數據路徑可以隨時重新配置。靈活性還帶來了任意對任意I/O連接能力。這使FPGA無需主機CPU即可連接到任何設備、網絡或存儲設備。功能安全::FPGA用戶可以在硬件中實現任何安全功能。根據應用程序,可以高效地進行編碼。FPGA廣泛用于航空電子設備、自動化和安全領域,這證明了這些設備的功能安全性,機器學習算法可以從中受益。成本效率:FPGA是可重新配置的,應用程序的上市時間非常短。ASIC非常昂貴,如果沒有出現錯誤,制造時間需要6到12個月。這是機器學習應用程序的一個優(yōu)勢,因為成本非常重要,而且NN算法每天都在發(fā)展?,F代FPGA通常在其架構中提供一組豐富的DSP和BRAM資源,可用于NN處理。但是,與DNN的深度和層大小相比,這些資源已不足以進行完整和直接的映射;當然不會像前幾代神經網絡加速器中經常使用的那樣。即使使用像ZynqMPSoC這樣的設備(即使是最大的設備也僅限于2kDSP片和總BRAM大小小于10MB),將所有神經元和權重直接映射到FPGA上也是不可能的。那么,我們如何利用FPGA的功率效率、可重編程性、低延遲等特性進行深度學習呢?需要新的NN算法和架構修改才能在FPGA等內存資源有限的平臺上進行DNN推理?,F代DNN將應用程序分成更小的塊,由FPGA處理。由于FPGA中的片上存儲器不足以存儲網絡所需的所有權重,我們只需要存儲當前階段的權重和參數,它們是從外部存儲器(可能是DDR存儲器)加載的。然而,在FPGA和內存之間來回傳輸數據將使延遲增加多達50倍。首先想到的是減少內存數據。除了上面討論的網絡優(yōu)化(剪枝和量化)之外,還有:權重編碼:在FPGA中,編碼格式可以隨意選擇??赡軙幸恍蚀_性損失,但是與數據傳輸引起的延遲及其處理的復雜性相比,這可以忽略不計。權重編碼創(chuàng)建了二元神經網絡(BNN),其中權重減少到只有一位。這種方法減少了傳輸和存儲的數據量,以及計算復雜度。然而,這種方法只會導致具有固定輸入寬度的硬件乘法器的小幅減少。批處理:在這種方法中,我們使用流水線方法將芯片上已有的權重用于多個輸入。它還減少了從片外存儲器傳輸到FPGA[5]的數據量。在FPGA上設計和實現DNN應用讓我們深入研究在FPGA上實現DNN。在此過程中,我們將利用最合適的商用解決方案來快速跟蹤應用程序的開發(fā)。例如,Aldec有一個名為TySOM-3A-ZU19EG的嵌入式開發(fā)板。除了廣泛的外設,它還搭載XilinxZynqUltraScale+MPSoC系列中最大的FPGA,該器件具有超過一百萬個邏輯單元,并包括一個運行頻率高達1.5GHz的四核ArmCortex-A53處理器。重要的是,就我們的目的而言,這款龐大的MPSoC還支持賽靈思為機器學習開發(fā)人員創(chuàng)建的深度學習處理單元(DPU)。DPU是專用于卷積神經網絡(CNN)處理的可編程引擎。它旨在加速計算機視覺應用中使用的DNN算法的計算工作量,例如圖像/視頻分類和對象跟蹤/檢測。DPU有一個特定的指令集,使其能夠有效地與許多CNN一起工作。與常規(guī)處理器一樣,DPU獲取、解碼和執(zhí)行存儲在DDR內存中的指令。該單元支持多種CNN,如VGG、ResNet、GoogLeNet、YOLO、SSD、MobileNet、FPN等[3]。DPUIP可以作為一個塊集成到所選Zynq?-7000SoC和ZynqUltraScale?+MPSoC器件的可編程邏輯(PL)中,并直接連接到處理系統(tǒng)(PS)。為了創(chuàng)建DPU的說明,Xilinx提供了深度神經網絡開發(fā)套件(DNNDK)工具包。賽靈思聲明:DNNDK被設計為一個集成框架,旨在簡化和加速深度學習處理器單元(DPU)上的深度學習應用程序開發(fā)和部署。DNNDK是一個優(yōu)化推理引擎,它使DPU的計算能力變得容易獲得。它為開發(fā)深度學習應用程序提供了最佳的簡單性和生產力,涵蓋了神經網絡模型壓縮、編程、編譯和運行時啟用[4]的各個階段。DNNDK框架包括以下單元:DECENT:執(zhí)行剪枝和量化以滿足低延遲和高吞吐量DNNC:將神經網絡算法映射到DPU指令DNNAS:將DPU指令組裝成ELF二進制代碼N2Cube:充當DNNDK應用程序的加載器,處理資源分配和DPU調度。其核心組件包括DPU驅動程序、DPU加載程序、跟蹤器和用于應用程序開發(fā)的編程API。Profiler:由DPU跟蹤器和DSight組成。D跟蹤器在DPU上運行NN時收集原始分析數據。DSight使用此數據生成可視化圖表以進行性能分析。Dexplorer:為DPU提供運行模式配置、狀態(tài)檢查和代碼簽名檢查。DDump:轉儲DPUELF、混合可執(zhí)行文件或DPU共享庫中的信息。它加速了用戶的調試和分析。這些符合圖2所示的流程。圖2.上述深度神經網絡開發(fā)套件(DNNK)框架使基于FPGA的機器學習項目的設計過程對開發(fā)人員來說更加容易。使用DNNDK可以讓開發(fā)人員更輕松地設計基于FPGA的機器學習項目;此外,Aldec的TySOM-3A-ZU19EG板等平臺也可提供寶貴的啟動功能。例如,Aldec準備了一些針對板的示例——包括手勢檢測、行人檢測、分割和交通檢測——這意味著開發(fā)人員不是從一張白紙開始的。讓我們考慮一下今年早些時候在ArmTechCon上展示的一個演示。這是使用TySOM-3A-ZU19EG和FMC-ADAS子卡構建的交通檢測演示,該子卡為5倍高速數據(HSD)攝像頭、雷達、激光雷達和超聲波傳感器提供接口和外圍設備——大多數人的感官輸入ADAS應用程序。圖3顯示了演示的架構。FPGA中實現了兩個DPU,它們通過AXIHP端口連接到處理單元,以執(zhí)行深度學習推理任務,例如圖像分類、對象檢測和語義分割。DPU需要指令來實現由DNNC和DNNAS工具準備的神經網絡。他們還需要訪問輸入視頻和輸出數據的內存位置。圖3.流量檢測演示具有5個視頻輸入管道,用于數據打包、AXI4到AXI流數據傳輸、色彩空間轉換(YUV2RGB)以及將視頻發(fā)送到內存。應用程序在應用程序處理單元(APU)上運行,以通過管理中斷和執(zhí)行單元之間的數據傳輸來控制系統(tǒng)。DPU和用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)解除勞動合同樣本
- 農業(yè)技術聘用合同證明
- 倉儲管理租賃代理合同
- 建筑行業(yè)專家聘用合同
- 小區(qū)玻璃施工合同范例
- 音響技術員勞動合同三篇
- 配電柜制造設備承攬合同三篇
- 音樂錄制與發(fā)行合同三篇
- 退伙合同協(xié)議書范本甲乙丙
- 集體宿舍租賃合同一般寫幾字
- 2025蛇年春聯帶橫批
- 湖南工業(yè)大學《自然語言處理》2022-2023學年第一學期期末試卷
- 護理各類風險評估及防范
- 電力變壓器生產項目可行性研究報告
- 充電樁知識培訓
- 2024-2030年地質勘察行業(yè)市場前景與發(fā)展預測
- 簡諧運動的回復力和能量課件
- 中國轉型債券白皮書 2024
- 2023-2024年人教版六年級數學上冊期末試卷及答案
- 高職勞動教育學習通超星期末考試答案章節(jié)答案2024年
- 2023年注冊城鄉(xiāng)規(guī)劃師考試:城鄉(xiāng)規(guī)劃相關知識歷年真題匯編(共388題)
評論
0/150
提交評論