隨著攝像頭和其他設備產(chǎn)生的數(shù)據(jù)在快速增長,促使人們運用機器學習從汽車、安防和其他應用產(chǎn)生的影像中提取更多有用的信息。專用器件有望在嵌入式視覺應用中實現(xiàn)高性能機器學習 (ML) 推理。但是此類器件大都處于早期開發(fā)階段,因為設計人員正在努力尋找最有效的算法,甚至人工智能 (AI) 研究人員也在迅速推演新方法。
目前,開發(fā)人員一般使用針對 ML 的可用 FPGA 平臺來構建嵌入式視覺系統(tǒng),以期滿足更高的性能要求。與此同時,他們可以保持所需的靈活性,以跟上機器學習發(fā)展的步伐。
本文將介紹 ML 處理的要求,以及為何 FPGA 能解決許多性能問題。然后,將介紹一個合適的基于 FPGA 的 ML 平臺及其使用方法。
機器學習算法和推理引擎
在 ML 算法中,卷積神經(jīng)網(wǎng)絡 (CNN) 已成為圖像分類的首選解決方案。其圖像識別的準確率非常高,因而得以廣泛應用于多種應用,跨越不同的平臺,例如智能手機、安防系統(tǒng)和汽車駕駛員輔助系統(tǒng)。作為一種深度神經(jīng)網(wǎng)絡 (DNN),CNN 使用的神經(jīng)網(wǎng)絡架構由專用層構成。在對標注圖像進行訓練期間,它會從圖像中提取特征,并使用這些特征給圖像分類(參見“利用現(xiàn)成的軟硬件啟動機器學習”)。
CNN 開發(fā)人員通常在高性能系統(tǒng)或云平臺上進行訓練,使用圖形處理單元 (GPU) 加速在標注圖像數(shù)據(jù)集(通常數(shù)以百萬計)上訓練模型所需的巨量矩陣計算。訓練完成之后,訓練好的模型用在推理應用中,對視頻流中的新圖像或幀進行分類。推理部署完成后,訓練好的模型仍然需要執(zhí)行同樣的矩陣計算,但由于輸入量要少很多,開發(fā)人員可以將 CNN 用于在通用硬件上運行的普通機器學習應用(參見“利用 Raspberry Pi 構建機器學習應用”)。
然而,對于許多應用而言,通用平臺缺乏在 CNN 推理中同時實現(xiàn)高準確率和高性能所需的性能。優(yōu)化技術和替代 CNN 架構(如 MobileNet 或 SqueezeNet)有助于降低平臺要求,但通常會犧牲準確率并增加推理延時,而這可能與應用要求相沖突。
與此同時,快速發(fā)展的算法使得機器學習 IC 的設計工作變得復雜,因為需要機器學習 IC 既要足夠專門化以加速推理,又要足夠通用化以支持新算法。FPGA 多年來一直扮演著這一特定角色,提供加速關鍵算法所需的性能和靈活性,解決了通用處理器性能不足或沒有專用器件可用的問題。
FPGA 作為機器學習平臺
對于機器學習而言,GPU 仍然是標桿——這是早期的 FPGA 根本無法企及的。最近出現(xiàn)的一些器件,如 Intel Arria 10 GX FPGA 和 Lattice Semiconductor ECP5 FPGA,大大縮小了先進 FPGA 和 GPU 之間的差距。對于某些使用緊湊的整數(shù)數(shù)據(jù)類型的 DNN 架構來說,此類 FPGA 的性能/功耗比甚至高于主流 GPU。
高級 FPGA 組合了嵌入式存儲器和數(shù)字信號處理 (DSP) 資源,對于一般矩陣乘法 (GEMM) 運算能夠實現(xiàn)很高的性能。其嵌入式存儲器靠近計算引擎,從而緩解了 CPU 存儲器瓶頸,而這種瓶頸通常會限制通用處理器上機器學習算法的性能。反之,相比于典型 DSP 器件(圖 1),F(xiàn)PGA 上的嵌入式 DSP 計算引擎提供了更多的并行乘法器資源。FPGA 廠商在交付專門用于機器學習的 FPGA 開發(fā)平臺時充分利用了這些特性。
例如,Intel 最近推出的支持 FPGA 的 OPENVINO? 擴展了該平臺將推理模型部署到不同類型設備(包括 GPU、CPU 和 FPGA)的能力。在該平臺上,開發(fā)人員可使用 Intel 的深度學習推理引擎工作流程,其中整合了 Intel 深度學習部署工具包和在 Intel OPENVINO 工具包中提供的 Intel 計算機視覺軟件開發(fā)套件 (SDK)。開發(fā)人員使用 SDK 的應用編程接口 (API) 構建模型,并且可利用 Intel 的運行模型優(yōu)化器針對不同硬件平臺進行優(yōu)化。
深度學習部署工具包旨在與 Intel DK-DEV-10AX115S-A Arria 10 GX FPGA 開發(fā)套件配合使用,讓開發(fā)人員能從領先的 ML 框架(包括 Caffe 和 TensorFlow)導入訓練好的模型(圖 2)。在諸如 Arria 10 GX FPGA 開發(fā)套件之類目標平臺或使用 Arria 10 GX FPGA 器件的定制設計上,工具包中的模型優(yōu)化器和推理引擎分別處理模型轉換和部署。
為了遷移預訓練模型,開發(fā)人員使用基于 Python 的模型優(yōu)化器生成了一個中間表示 (IR),該表示包含在一個提供網(wǎng)絡拓撲的 xml 文件和一個以二進制值提供模型參數(shù)的 bin 文件中。除了生成 IR 之外,模型優(yōu)化器還會執(zhí)行一項關鍵功能——移除模型中用于訓練但對推理毫無作用的層。此外,該工具會在可能的情況下將每個提供獨立數(shù)學運算的層合并到一個組合層中。
通過這種網(wǎng)絡修剪和合并,模型變得更緊湊,進而加快推理時間并減少對目標平臺的存儲器需求。
Intel 推理引擎是一個 C++ 庫,其中包含一組 C++ 類。這些類對于受支持的目標硬件平臺來說是通用的,因此可以在各個平臺上實現(xiàn)推理。對于推理應用而言,開發(fā)人員使用像 CNNNetReader 這樣的類來讀取 xml 文件 (ReadNetwork) 中包含的 CNN 拓撲以及 bin 文件 (ReadWeights) 中包含的模型參數(shù)。模型加載完成后,調用類方法 Infer() 執(zhí)行阻塞推理,同時調用類方法 StartAsync() 執(zhí)行異步推理,當推理完成時使用等待或完成例程處理結果。
Intel 在 OPENVINO 環(huán)境提供的多個示例應用程序中演示了完整的工作流程和詳細的推理引擎 API 調用。例如,安全屏障攝像機示例應用程序展示了使用推理模型流水線,以首先確定車輛邊界框(圖 3)。流水線中的下一個模型檢查了邊界框中的內容,識別車輛類別、顏色和車牌位置等車輛屬性。
流水線中的最后一個模型使用這些車輛屬性從車牌中提取字符。
-
FPGA
+關注
關注
1626文章
21670瀏覽量
601873 -
機器學習
+關注
關注
66文章
8378瀏覽量
132415
原文標題:機器學習加持,基于FPGA的高性能視覺應用方案設計
文章出處:【微信號:cirmall,微信公眾號:電路設計技能】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論