當前位置:
首頁 > 最新 > 淺析圖像視頻類AI晶元的靈活度

淺析圖像視頻類AI晶元的靈活度

兼容性和靈活度是晶元快速殺入新市場、擴大市場範圍、快速適應客戶需求,減少開發周期的關鍵特性。目前深度學習的網路結構已走向了多樣化,出現了大量的演算法變種、更多的運算元和複雜層次結構,這對晶元的支撐靈活度能力提出了挑戰。本文通過列舉目前圖像視頻類的典型演算法、典型網路結構、典型平台和介面等方面來分析AI晶元的靈活度範圍。

目前,DNN加速器會收斂於三類形態,第一類是支持通用運算的DSP或者GPU,它既可以實現神經網路運算,也可以實現其他數學運算或者通用程序,例如圖像處理和語音處理,其典型特徵是具有通用指令集和支持類C編程,如OpenCL;第二類是適用於通用數學運算的可編程架構,控制流程往往收斂於圖計算表達或者數據流圖,其特點是可以支持通用數學計算運算元,也稱作計算原語;第三類是針對若干典型神經網路結構設計的專用處理器或加速器,具有很高的能效,但沒有考慮處理其他類型的運算。要了解神經網路的基本運算元,可以參考「從NNVM和ONNX看AI晶元的基礎運算運算元」。第一類和第三類往往具有一個數量級甚至兩個數量級的性能差異。而一般做到第二類才能更容易的支持靈活的訓練演算法(而不僅僅是推理或單一訓練演算法)。各個類別的典型代表如表所示。

表: 由最靈活到最不靈活的三類加速器

(在此不區分晶元還是IP)

注1: 具體可以參考唐博士的「AI/ML/DL ICs and IPs」列表中「Traditional IP Vendors」部分。

注2: 由GraphCore公開資料推測。

值得注意的是,三者沒有明顯的界限,廠商產品可能迅速更新,擴充靈活度後,第三類也會擴展成前兩類。另外,國內廠商的設計第三類較多,但也有前兩類設計出現,此處未列出國內的設計。

由於篇幅受限,本文僅討論靈活度最低的一個類別,即僅用於神經網路的加速器。另外本文只考慮推理(Inference)而不考慮訓練,主要關注視頻(圖像)類應用。此處,我們將結合現今CNN的各種網路拓撲結構和參數使用情況,提供一個靈活度參考表。

1. 卷積運算元的參數覆蓋需求

二維卷積操作是深度學習中最重要的操作,具有平移不變性,且相比MLP而言具有很少的參數量而不易訓練過擬合。這使得深度學習之所以取得圖像處理性能的飛躍提升的關鍵。卷積網的參數較多,總結起來如下表所示。

2. 池化運算元(Pooling)的參數覆蓋需求

雖然現在圖像的縮小由原來的池化操作逐漸被卷積階段的Stride操作代替,但很多系統中還是存在池化。因此支持池化還是很重要的。

3. 非線性函數支持

一般而言,非線性函數主要用於激活函數或者銳化。激活函數往往採用ReLU,對於一個通用計算機,實現其他激活函數並不難,而對於定點的神經網路晶元而言,位寬問題和運算量會導致無法直接實現這些函數,因此往往採用查找表或者近似函數實現。

4. 後續處理層支持

後續處理層的主要作用是根據卷積網提供的特徵進行圖像/視頻的識別、檢測、圖像描述、視頻描述等。主要採用MLP或時序類神經網路結構實現。

5. 歸一化層、特殊層和特殊運算支持

Residual connections和Aggregated Transforms結構示意圖

"S. Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR』17."

C.ReLU結構示意圖

"K. Kim et al. PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection. arXiv"16"

FPN結構

傳統的方法 (a).用圖片金字塔生成特徵金字塔,(b).只在特徵最上層預測,(c).特徵層分層預測,(d).提出的FPN方法從高層攜帶信息傳給底層,再分層預測

"Lin et al. Feature Pyramid Networks for Object Detection. CVPR』17"

6. 訓練框架與軟體工具鏈支持

目前深度學習加速器會對主流框架生成的網路結構進行再加工。因此再加工的程度就導致的性能區別。

7. 圖像預處理與後處理能力

因為大部分應用都是圖像應用。如果直接對接攝像頭,那麼預處理是必需的。

8. 用戶介面與內存介面

9. 用於Benchmark的網路結構

10. 宿主系統與程序

一般而言,深度網路本身並不能構成系統。因此根據業務需求,需要考慮如何將它集成到宿主程序中,與其他部分程序有機結合起來。例如嵌入式深度學習方案Nvidia Jetson TX2採用Linux+Python+Framework作為基礎平台。如何讓晶元與程序的其他部分互聯互通是個需要考慮的問題。在此例舉幾個比較典型的系統示例。

視頻類深度學習晶元主要用於行人檢測、車輛檢測、頭部面部檢測、人臉識別、障礙物檢測等場合。如果上述功能基本都能兼容,那麼這個晶元在這些應用上應該可以獲得不錯的使用體驗。另外,值得特別注意的是,系統精度會在一定程度上影響識別性能,例如8b定點的晶元和16b浮點相比,對於複雜任務可能會有2個百分點以上的識別率下降,具體下降情況需要根據網路結構和任務加以細緻考量。值得注意的是,圖像檢測識別演算法中的非神經網路處理(後處理)可能比較複雜。例如SSD,有著很複雜的後處理步驟,包括通過計算出來的偏移值進行邊框修正,概率排序和閾值過濾,Softmax歸一化,求最大值所在類別,非極大抑制(多個重合選框的合併),矩陣的變形等。因此一個神經網路加速晶元也需要具備足夠的通用處理能力才能有效解決目標檢測識別問題。

綜上,本文簡述了用於推理的各項需求指標,對於系統集成商,在選擇晶元時,可以關注是否支持上述功能,並比對晶元的Benchmark網路的性能,從而選擇合適的晶元。對於晶元/IP核設計團隊,可作為兼容性檢查使用。

希望本文能對神經網路測試標準化和設計標準化起到借鑒作用。由於此文涉及面較廣,有可能不夠準確,在此僅供拋磚引玉之用,各位如見到有錯誤和不足之處請務必留言指出。

- END -

作者簡介:

題圖來自網路,版權歸原作者所有


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 StarryHeavensAbove 的精彩文章:

TAG:StarryHeavensAbove |