人工智能(AI)長期以來一直是科幻作家和學(xué)者的主題。將人類大腦的復(fù)雜性復(fù)制到計(jì)算機(jī)中的挑戰(zhàn)催生了新一代的科學(xué)家,數(shù)學(xué)家和計(jì)算機(jī)算法開發(fā)人員?,F(xiàn)在,持續(xù)的研究已經(jīng)讓位于人工智能的使用,更常被稱為深度學(xué)習(xí)或機(jī)器學(xué)習(xí),這些應(yīng)用正日益成為我們世界的一部分。雖然基本概念已存在很長時(shí)間,但商業(yè)現(xiàn)實(shí)從未完全實(shí)現(xiàn)。近年來,數(shù)據(jù)產(chǎn)生的速度飆升,開發(fā)人員不得不長時(shí)間思考如何編寫算法以從中提取有價(jià)值的數(shù)據(jù)和統(tǒng)計(jì)數(shù)據(jù)。此外,另一個(gè)關(guān)鍵因素是高可擴(kuò)展級別的計(jì)算資源的可用性,這是云自愿產(chǎn)生的。例如,口袋里的智能手機(jī)可能會(huì)使用Google的Now('OK Google')或Apple的Siri語音命令應(yīng)用程序,這些應(yīng)用程序使用深度學(xué)習(xí)算法(稱為(人工)神經(jīng)網(wǎng)絡(luò))的強(qiáng)大功能來啟用語音識(shí)別和學(xué)習(xí)功能。然而,除了與手機(jī)通話的樂趣和便利之外,還有許多工業(yè),汽車和商業(yè)應(yīng)用,現(xiàn)在正受益于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的力量。
卷積神經(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),基于人類和動(dòng)物的生物神經(jīng)網(wǎng)絡(luò) - 中樞神經(jīng)系統(tǒng)。多年來已經(jīng)構(gòu)思出幾種不同類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中卷積神經(jīng)網(wǎng)絡(luò)(CNN)是最廣泛采用的。其中一個(gè)關(guān)鍵原因是它們的架構(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ù)以及每個(gè)數(shù)據(jù)之間的關(guān)系或上下文。 CNN被創(chuàng)建為來自結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的學(xué)習(xí)框架,計(jì)算機(jī)創(chuàng)建的神經(jīng)元形成連接和斷開的網(wǎng)絡(luò)。模式匹配是CNN背后的關(guān)鍵概念,在機(jī)器學(xué)習(xí)中廣泛使用。
圖1:CNN的層方法
有關(guān)CNN工作原理的更多見解可以在Cadence 1a 的論文中找到,以及在最近的IEEE社會(huì)新會(huì)議上記錄的有用視頻 1b 計(jì)算機(jī)前沿。當(dāng)微軟研究團(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)行平均或“匯集”共同特征來減少變化。然后可以將其傳遞給進(jìn)一步的卷積和池化層。 CNN層的數(shù)量與圖像識(shí)別的準(zhǔn)確性相關(guān),盡管這增加了系統(tǒng)性能需求。如果存儲(chǔ)器帶寬可用,則層可以以并行方式操作,CNN中計(jì)算密集度最高的部分是卷積層。
開發(fā)人員面臨的挑戰(zhàn)是如何提供足夠高的計(jì)算資源來運(yùn)行CNN,以確定在應(yīng)用程序的時(shí)間限制內(nèi)所需的不同圖像分類的數(shù)量。例如,工業(yè)自動(dòng)化應(yīng)用可能使用計(jì)算機(jī)視覺來識(shí)別部件需要在傳送帶上路由到哪個(gè)下一級。暫停該過程直到神經(jīng)網(wǎng)絡(luò)識(shí)別該部分將破壞流程并減緩生產(chǎn)。
實(shí)施CNN
加速部分CNN正在進(jìn)行的“強(qiáng)化”學(xué)習(xí)和執(zhí)行階段將顯著加快這一主要是數(shù)學(xué)任務(wù)。憑借其高內(nèi)存帶寬和計(jì)算能力,GPU和FPGA是這項(xiàng)工作的潛在候選者。具有任何Von Neumann架構(gòu)所展示的緩存瓶頸的傳統(tǒng)微處理器可以運(yùn)行算法,但是將層抽象任務(wù)移交給硬件加速器。雖然GPU和FPGA都提供了重要的并行處理能力,但GPU固定架構(gòu)的性質(zhì)意味著FPGA具有靈活且動(dòng)態(tài)可重構(gòu)的架構(gòu),更適合CNN加速任務(wù)。憑借非常精細(xì)的粒度方法,基本上在硬件中實(shí)現(xiàn)CNN算法,與GPU的軟件衍生算法方法相比,F(xiàn)PGA架構(gòu)有助于將延遲保持在絕對最小值并且更具確定性。 FPGA的另一個(gè)優(yōu)點(diǎn)是能夠在設(shè)備結(jié)構(gòu)內(nèi)“硬化”功能模塊,例如DSP;這種方法進(jìn)一步加強(qiáng)了網(wǎng)絡(luò)的確定性。在資源使用方面,F(xiàn)PGA非常高效,因此每個(gè)CNN層都可以在FPGA架構(gòu)內(nèi)構(gòu)建,并且靠近它自己的內(nèi)存。
圖2:圖像處理概述CNN
圖2突出顯示了為行業(yè)圖像處理應(yīng)用設(shè)計(jì)的CNN的關(guān)鍵組件塊,兩個(gè)中間代表CNN核心的塊。
基于FPGA的CNN加速應(yīng)用程序的開發(fā)通過使用C語言的OpenCL 2a 并行編程擴(kuò)展來補(bǔ)充。適用于卷積神經(jīng)網(wǎng)絡(luò)的FPGA器件的一個(gè)例子是英特爾可編程解決方案組(PSG)的Arria 10系列器件,正式名稱為Altera。
為了幫助開發(fā)人員著手進(jìn)行基于FPGA的CNN加速項(xiàng)目,英特爾PSG提供了CNN參考設(shè)計(jì)。這使用OpenCL內(nèi)核來實(shí)現(xiàn)每個(gè)CNN層。使用通道和管道將數(shù)據(jù)從一個(gè)層傳遞到下一個(gè)層,該功能允許在OpenCL內(nèi)核之間傳遞數(shù)據(jù),而不必占用外部存儲(chǔ)器帶寬。卷積層使用FPGA中的DSP模塊和邏輯實(shí)現(xiàn)。硬化塊包括浮點(diǎn)函數(shù),可進(jìn)一步提高設(shè)備吞吐量,而不必影響可用內(nèi)存帶寬。
圖3所示的框圖突出顯示了一個(gè)可以使用FPGA作為加速處理單元的示例圖像處理和分類系統(tǒng)。
圖3:使用FPGA加速的圖像分類系統(tǒng)的框圖
英特爾PSG還在其網(wǎng)站上提供了許多關(guān)于在工業(yè),醫(yī)療和汽車應(yīng)用中使用FPGA卷積神經(jīng)網(wǎng)絡(luò)的有用文檔和視頻。選擇深度學(xué)習(xí)應(yīng)用程序的框架是關(guān)鍵的第一步。為了幫助開發(fā)人員,有越來越多的工具,如OpenANN(openann.github.io),一個(gè)人工神經(jīng)網(wǎng)絡(luò)的開源庫,以及信息社區(qū)網(wǎng)站,如deeplearning.net和embedded-vision.com。流行的深度學(xué)習(xí)設(shè)計(jì)框架包括對使用OpenCL的支持,包括基于C ++的Caffe(caffe.berkeleyvision.org)和基于Lua的Torch。 DeepCL是另一個(gè)完全支持OpenCL的框架,雖然它尚未獲得前兩個(gè)用戶群。
結(jié)論
工業(yè)市場熱衷于利用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的功能可以帶來許多制造和自動(dòng)化控制應(yīng)用。由于德國工業(yè)4.0等倡議以及更廣泛的工業(yè)物聯(lián)網(wǎng)概念,這一重點(diǎn)得到了進(jìn)一步的發(fā)展。配備高品質(zhì)的視覺相機(jī),CPU和CPU。例如,F(xiàn)PGA解決方案和相關(guān)控制,卷積神經(jīng)網(wǎng)絡(luò)可用于自動(dòng)化大量制造過程檢查,提高產(chǎn)品質(zhì)量,可靠性和工廠安全性。
憑借其動(dòng)態(tài)可配置邏輯架構(gòu),高內(nèi)存帶寬和高功效,F(xiàn)PGA非常適合加速CNN的卷積和匯聚層。由許多社區(qū)驅(qū)動(dòng)的開源框架和并行代碼庫(如OpenCL)提供支持,未來將FPGA用于此類應(yīng)用程序是安全的。 FPGA提供了高度可擴(kuò)展且靈活的解決方案,以滿足許多工業(yè)領(lǐng)域的不同應(yīng)用需求。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21777瀏覽量
604794 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100974 -
機(jī)器視覺
+關(guān)注
關(guān)注
162文章
4400瀏覽量
120516
發(fā)布評論請先 登錄
相關(guān)推薦
評論