作者:Steve Leibson, 賽靈思戰略營銷與業務規劃總監
從圖像和影音識別到大數據采集,卷積神經網絡(CNN)和深度學習的發展為識別應用程序帶來了一場新的革命。在2015年度嵌入式視覺峰會上,來自百度的GPU應用先驅任武博士發表主題演講。他指出,百度公司基于GPU的深度學習CNN在分析網絡圖像大規模視覺識別數據集時準確率非常高,處于世界領先水平(詳見“百度引領人工智能基準”一文)。目前,GPU也成為CNN研發人員青睞的應用技術——因為這是他們熟悉的編程模型。但GPU卻功耗過高。不過,在嵌入式視覺峰會上,Auviz Systems公司的創始人Nagesh Gupta對圖像處理CNN相關工作的效果進行了闡述。而Auviz Systems一直致力于為數據中心開發基于FPGA的中間件IP,以減少應用程序的功耗。
在百度高精準處理網絡圖像的技術處于領先地位前,多倫多大學的AlexNet一直保持領先優勢。AlexNet有五個卷積層和三個致密層(CNN)。每個卷積層都用一套重量過濾器卷積輸入特征圖,以此產生輸出特征圖。AlexNet的卷積層可實現以下功能:
1、3D卷積
2、使用ReLU(修正線性單元)激活函數
3、二級抽樣
這是個復雜的算法,比起以下我將進行的計算需要做更多的計算。但我們先了解下僅計算一個3D卷積需要做多少工作。11x11 Weight Matrix和11x11 輸入特征圖相乘,可得出1個輸出值,如下所示:
該運算涉及121個平行的MAC(相乘/累積)操作,使用指令串行CPU將需要相當長一段時間完成操作。FPGA則可依據其規格,并行或在一個時鐘周期內輕松地計算出512個或更多這樣的MAC結果。
AuvizDNN是Auviz Systems的函數庫,可提供所有所需的對象、類和函數,以在FPGA上實現CNN。AuvizDNN可以提供配置函數,而使用配置函數可以創建任何類型和任何配置的CNN。從程序開發者的角度來說,使用AuvizDNN在FPGA上實現一個完整的CNN應用,就像一個C /C++函數調用序列。在此舉例AlexNet只是一個說明??蓱肁uvizDNN函數庫實現所有類型的CNN。而實現效果如何見下圖。下圖為Auviz Systems使用Xilinx Kintex-7和Kintex UltraScale FPGA的實時系統圖:
基于Microsoft最新發布的數據,根據Auviz,FPGA如Xilinx Kintex Ultrascale可處理14個或更多圖像/秒/瓦特,而一個高端的GPU僅能處理4個圖像/秒/瓦特。這表明,FPGA是實現快速、低功耗及數據中心應用的最佳選擇。
想了解更多有關CNN應用使用FPGA的信息,可從Auviz官網下載白皮書《加速云端的機器學習:FPGA深層神經網絡》(需注冊)。