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