基于FPGA的CNN加速項(xiàng)目案例解析_第1頁
基于FPGA的CNN加速項(xiàng)目案例解析_第2頁
基于FPGA的CNN加速項(xiàng)目案例解析_第3頁
基于FPGA的CNN加速項(xiàng)目案例解析_第4頁
基于FPGA的CNN加速項(xiàng)目案例解析_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

基于FPGA的CNN加速項(xiàng)目案例解析人工智能(AI)長期以來一直是科幻作家和學(xué)者的主題。將人腦的復(fù)雜性復(fù)制到計(jì)算機(jī)中的挑戰(zhàn)催生了新一代的科學(xué)家、數(shù)學(xué)家和計(jì)算機(jī)算法開發(fā)人員。持續(xù)的研究現(xiàn)在已經(jīng)讓位于人工智能的使用,通常被稱為深度學(xué)習(xí)或機(jī)器學(xué)習(xí),這些應(yīng)用正越來越成為我們世界的一部分。雖然基本概念已經(jīng)存在很長時(shí)間,但商業(yè)現(xiàn)實(shí)從未完全實(shí)現(xiàn)。近年來,數(shù)據(jù)的生成速度飛速發(fā)展,開發(fā)人員不得不長時(shí)間思考如何編寫算法來從中提取有價(jià)值的數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)。還,另一個(gè)關(guān)鍵因素是高度可擴(kuò)展級別的計(jì)算資源的可用性,這是云自愿提供的。例如,您口袋里的智能手機(jī)可能會使用Google的Now(“OKGoogle”)或Apple的Siri語音命令應(yīng)用程序,這些應(yīng)用程序使用深度學(xué)習(xí)算法(稱為(人工)神經(jīng)網(wǎng)絡(luò))的強(qiáng)大功能來實(shí)現(xiàn)語音識別和學(xué)習(xí)能力。然而,除了與手機(jī)通話的樂趣和便利之外,還有大量工業(yè)、汽車和商業(yè)應(yīng)用程序現(xiàn)在受益于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的強(qiáng)大功能。稱為(人工)神經(jīng)網(wǎng)絡(luò),以實(shí)現(xiàn)語音識別和學(xué)習(xí)能力。然而,除了與手機(jī)通話的樂趣和便利之外,還有大量工業(yè)、汽車和商業(yè)應(yīng)用程序現(xiàn)在受益于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的強(qiáng)大功能。稱為(人工)神經(jīng)網(wǎng)絡(luò),以實(shí)現(xiàn)語音識別和學(xué)習(xí)能力。然而,除了與手機(jī)通話的樂趣和便利之外,還有大量工業(yè)、汽車和商業(yè)應(yīng)用程序現(xiàn)在受益于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的強(qiáng)大功能。卷積神經(jīng)網(wǎng)絡(luò)在查看其中一些應(yīng)用程序之前,讓我們先研究一下神經(jīng)網(wǎng)絡(luò)的工作原理以及它需要哪些資源。當(dāng)我們一般談?wù)撋窠?jīng)網(wǎng)絡(luò)時(shí),我們應(yīng)該更準(zhǔn)確地將它們描述為人工神經(jīng)網(wǎng)絡(luò)。作為軟件算法實(shí)現(xiàn),它們基于人類和動物的生物神經(jīng)網(wǎng)絡(luò)——中樞神經(jīng)系統(tǒng)。多年來,人們構(gòu)想了幾種不同類型的神經(jīng)網(wǎng)絡(luò)架構(gòu),其中卷積神經(jīng)網(wǎng)絡(luò)(CNN)得到了最廣泛的采用。造成這種情況的主要原因之一是他們的架構(gòu)方法使它們非常適合使用基于GPU和FPGA設(shè)備的硬件加速器提供的并行化技術(shù)。CNN受歡迎的另一個(gè)原因是它們適合處理具有大量空間連續(xù)性的數(shù)據(jù),其中圖像處理應(yīng)用程序非常適合??臻g連續(xù)性是指特定位置附近的像素共享相似的強(qiáng)度和顏色屬性。CNN由不同的層構(gòu)成,每個(gè)層都有特定的目的,并且在它們的操作中使用了兩個(gè)不同的階段。第一部分是指令或訓(xùn)練階段,它允許處理算法了解它擁有哪些數(shù)據(jù)以及每條數(shù)據(jù)之間的關(guān)系或上下文。CNN是作為結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的學(xué)習(xí)框架創(chuàng)建的,計(jì)算機(jī)創(chuàng)建的神經(jīng)元形成連接和中斷網(wǎng)絡(luò)。模式匹配是CNN背后的一個(gè)關(guān)鍵概念,

圖1:CNN的層方法(來源:Wikipedia–creditAphex341)。更多關(guān)于CNN工作原理的信息可以在Cadence1a的一篇論文中找到,以及一個(gè)有用的視頻1b,該視頻錄制在最近的IEEE協(xié)會關(guān)于計(jì)算新前沿的會議上。當(dāng)Microsoft研究團(tuán)隊(duì)1c贏得ImageNet計(jì)算機(jī)視覺挑戰(zhàn)時(shí),CNN對圖像處理應(yīng)用程序的有用性的證據(jù)獲得了進(jìn)一步的尊重。CNN的第二階段是執(zhí)行階段。由不同的層節(jié)點(diǎn)組成,關(guān)于什么可能的圖像可能變得越來越抽象的命題。卷積層從圖像源中提取低級特征,以檢測圖像中的線條或邊緣等特征。其他層,稱為池化層,用于通過平均或“池化”圖像特定區(qū)域的共同特征來減少變化。然后可以將其傳遞給進(jìn)一步的卷積和池化層。CNN層的數(shù)量與圖像識別的準(zhǔn)確性相關(guān),盡管這增加了系統(tǒng)性能需求。如果內(nèi)存帶寬可用,這些層可以以并行方式運(yùn)行,CNN中計(jì)算最密集的部分是卷積層。開發(fā)人員面臨的挑戰(zhàn)是他們?nèi)绾翁峁┳銐蚋叩挠?jì)算資源來運(yùn)行CNN,以確定在應(yīng)用程序的時(shí)間限制內(nèi)所需的不同圖像分類的數(shù)量。例如,工業(yè)自動化應(yīng)用程序可能會使用計(jì)算機(jī)視覺來識別需要將零件傳送到傳送帶上的下一個(gè)階段。在神經(jīng)網(wǎng)絡(luò)識別出零件之前暫停該過程會破壞流程并減慢生產(chǎn)速度。實(shí)現(xiàn)CNN加速部分CNN正在進(jìn)行的“強(qiáng)化”學(xué)習(xí)和執(zhí)行階段將顯著加速這項(xiàng)主要是數(shù)學(xué)任務(wù)。憑借其高內(nèi)存帶寬和計(jì)算能力,GPU和FPGA是這項(xiàng)工作的潛在候選者。具有任何馮諾依曼架構(gòu)所表現(xiàn)出的緩存瓶頸的傳統(tǒng)微處理器可以運(yùn)行算法,但將層抽象任務(wù)移交給硬件加速器。雖然GPU和FPGA都提供了顯著的并行處理能力,但GPU固定架構(gòu)的性質(zhì)意味著FPGA具有靈活且可動態(tài)重新配置的架構(gòu)更適合CNN加速任務(wù)。使用非常精細(xì)的方法,本質(zhì)上是在硬件中實(shí)現(xiàn)CNN算法,與GPU的軟件衍生算法方法相比,F(xiàn)PGA架構(gòu)有助于將延遲保持在絕對最小值,并且更具確定性。FPGA的另一個(gè)優(yōu)點(diǎn)是能夠在設(shè)備結(jié)構(gòu)中“硬化”功能塊,例如DSP。這種方法進(jìn)一步加強(qiáng)了網(wǎng)絡(luò)的確定性。就資源使用而言,F(xiàn)PGA非常高效,因此每個(gè)CNN層都可以在FPGA結(jié)構(gòu)內(nèi)構(gòu)建,并且它自己的內(nèi)存靠近它。

圖2:圖像處理CNN概述(來源:Cadence2)。圖2突出顯示了為工業(yè)圖像處理應(yīng)用程序設(shè)計(jì)的CNN的關(guān)鍵組件塊,中間的兩個(gè)塊代表CNN的核心。使用C語言的OpenCL2a并行編程擴(kuò)展來補(bǔ)充基于FPGA的CNN加速應(yīng)用程序的開發(fā)。適用于卷積神經(jīng)網(wǎng)絡(luò)的FPGA器件的一個(gè)示例是英特爾可編程解決方案集團(tuán)(PSG)的Arria10系列器件,其正式名稱為Altera。為了幫助開發(fā)人員開展基于FPGA的CNN加速項(xiàng)目,英特爾PSG提供了CNN參考設(shè)計(jì)。這使用OpenCL內(nèi)核來實(shí)現(xiàn)每個(gè)CNN層。數(shù)據(jù)使用通道和管道從一層傳遞到下一層,該功能允許數(shù)據(jù)在OpenCL內(nèi)核之間傳遞,而無需消耗外部內(nèi)存帶寬。卷積層是使用FPGA中的DSP模塊和邏輯實(shí)現(xiàn)的。硬化塊包括浮點(diǎn)功能,可進(jìn)一步提高設(shè)備吞吐量,而不必影響可用內(nèi)存帶寬。圖3所示的框圖突出顯示了可以使用FPGA作為加速處理單元的示例圖像處理和分類系統(tǒng)。

圖3:使用FPGA進(jìn)行加速的圖像分類系統(tǒng)框圖(來源:FPGA上的深度學(xué)習(xí),過去、現(xiàn)在和未來3)。英特爾PSG還在其網(wǎng)站4上提供了許多有關(guān)將FPGA卷積神經(jīng)網(wǎng)絡(luò)用于工業(yè)、醫(yī)療和汽車應(yīng)用的主題的有用文檔和視頻。為深度學(xué)習(xí)應(yīng)用程序選擇框架是關(guān)鍵的第一步。為了幫助開發(fā)人員,有越來越多的工具,例如OpenANN(openann.github.io),這是一個(gè)用于人工神經(jīng)網(wǎng)絡(luò)的開源庫,以及諸如和E等信息豐富的社區(qū)站點(diǎn)。包括對使用OpenCL的支持的流行深度學(xué)習(xí)設(shè)計(jì)框架包括Caffe(caffe.berkeleyvision.org),基于C++和基于Lua的Torch。DeepCL是另一個(gè)完全支持OpenCL的框架,盡管它尚未獲得前兩者的用戶群。結(jié)論工業(yè)市場熱衷于利用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)可以為許多制造和自動化控制應(yīng)用帶來的特性。由于德國的工業(yè)4.0等舉措以及更廣泛的工業(yè)物聯(lián)網(wǎng)概念,這一重點(diǎn)得到了進(jìn)一步的推動。與高質(zhì)量的視覺相機(jī)、CPU和FPGA解決方案以及相關(guān)控制相結(jié)合,卷積神經(jīng)網(wǎng)絡(luò)可用于自動執(zhí)行大量制造過程檢查,從而提高產(chǎn)品質(zhì)量

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論