基於數據流計算圖的卷積神經網絡的理論和設計

2020-12-09 電子產品世界

謝仁傑 (英特爾戰略合作和創新業務部 技術經理,人工智慧開放創新平臺聯合學者,上海 200241)

本文引用地址:http://www.eepw.com.cn/article/202003/410481.htm

摘  要:近年來在許多信號處理應用領域中,深度卷積神經網絡引起了學術界和工業界很大的關注,其中 基於數據流圖的深度學習網絡Tensorflow框架得到了很多人的青睞。但在一些商業落地的研究和調查中發 現,部分機構涉及一些自開發的計算單元,而它不被大型網絡框架所支持,又出於技術的保密性往往需要 自行修改工業界的深度學習框架,這就造成了以下情況, ①工業級大型代碼框架極其複雜,各大庫之間的 調用很深且一般沒有注釋,不容易讀懂和修改,②對某一個單一應用來說,工業界絕大多數的代碼都是有 冗餘的,這就使得代碼整體比較臃腫(厚),性能會受點影響。基於這種受限的情況下,本文提出了一種 基於信號處理數據流計算圖模型的方法,在多個平臺多核下實現車輛分類。該方法在整個使用過程中,展 現了靈活地設計實現優化轉換能力,多平臺的兼容可實施性,可在有限的資源內根據自己的算法需求,分 立式地量身定製。在硬體電路加速或晶片的設計中,數據流所得到的高輸出率、低延時特點是各廠家在寫 RTL硬體設計語言時著重提出的特點,其次基於數據流的軟硬體設計易於算法代碼之間的轉換、實現、移 植、調試、分析、綜合、集成、優化和驗證。 

關鍵詞:深度學習;數據流;計算圖多核運算車輛分類

0  引言 

隨著國家進入人工智慧時代,深度學習在嵌入式 和計算機應用領域無處不在,例如汽車嵌入式系統和 物聯網,從而激發了在資源受限的邊緣端做深度卷積 神經網絡的設計方法和研究。本文中以車輛分類作為 具體研究案例,設計一種基於信號處理的數據流計算 圖的模型框架和實現優化方法,迭代式的實現,實驗 及優化,並在不同的平臺及有限的計算資源下實現針 對四種相近車輛的分類。本文以數據流計算圖原理出 發,介紹不同數據流技術建模的原理和形式,後舉一 個從零開始基於車輛分類的例子,從訓練某個應用的網絡,選取網絡參數和神經元權重開始,進行Matlab 的仿真代碼實現,並以此為參考代碼進行基於數據 流計算圖C代碼實現,隨後對整個計算圖進行深度優 化,最後單核和多核在不同平臺下的性能進行了一一 對比。數據流計算圖的簡潔,跨平臺,可擴展的完全 自主的特性,可用於任何特定領域,特別適合量身定 制的的嵌入圖像和視頻信號的操作。

1  數據流模型 (Dataflow Modeling) 

1.1 數據流模型原理 

在數據流建模模型中,數據流圖可表示為有向圖,由一系列Actors(頂點)和edges(前進先出, FIFO)組成,其中actor表示任意複雜程度的計算單元 (可以是高節點的actor封裝了一些計算圖),edge表 示連接各actors的連線,從而構成一組計算圖,代表 一個函數功能系統,數據類型則封裝在token,在一 個actor通過 edge輸出至另一個actor輸入端。數據流邊 緣可以表示e =(v1; v2),表示數據從v1到v2。這裡 src(e)表示的v1稱為源actor,sink(e)表示的v2稱 為接收器。在一個數據流計算圖中,一個actor在其接 受的數據足以計算該單元actor的算法時可以啟動和調 用該actor通過其enable和invoke函數, 每個actor需要明 確定義其輸入口消耗和輸出口產生的 token的數量。 整個數據流計算圖運行是一個離散的操作。在圖1 中,Actor: FS1,FS2是2個源的參與者;Actor: Adder 是加法操作; Actor: FK是接收器。整個圖表產生每個 actor觸發(消耗)一個token到每個actor輸出(輸入) 埠上。

1.2 數據流模型概述 

Core Functional Dataflow(CFDF)是一種可編程 的模型,常用於設計、分析及實現信號處理系統,尤 其是一種確定消耗產出比和有著動態數據流比例的 的信號處理單元的系統開發;Synchronous Dataflow (SDF)是最簡單最流行的數據流模型,它有個限 制,即一個actor在每個傳出邊緣上產生的數據值是個 數字常量,同時actor從進入邊緣消耗的數據值的數量 也需要是常量;Cyclo - Static Dataflow (CSDF) 是一 種類型的SDF,在一個 actor產生和消耗的token比是可變的,只要這個變值是一個固定的周期性的模式; Parameterized Dataflow (PDF) 是一種結合動態參數與 運行參數化的數據流計算圖,尤其是那些有很明確的 圖迭代概念的圖形;Boolean Dataflow (BDF) 是SDF的 擴展,其中一個actor產生和消耗的吞吐率取決於控制 的二值函數token,它源自於動態數據流actor中的一個 指定控制埠;Enable - Invoke Dataflow (EIDF)是另 一種動態數據流建模技術。它將actors分成一系列模 式,每個模式都有一個固定的消耗和生成的token 的 數量,代表一個分支可以在運行時切換多種模式。 

1.3  數據流模型環境: Lightweight Dataflow Environment – C (LIDE-C) 

LIDE-C(輕量級數據流環境C)是一個靈活設 計的C語言的編程環境,允許設計人員挖掘基於數據 流的技術信號處理系統的設計實現和優化,專注於 基本的應用程式編程接口(API)功能。在整個框架 提供廣泛的實現信號處理系統功能的組件,以及跨 平臺操作,包括可編程門陣列(FPGA),圖形處理 單元(GPU),可編程數位訊號處理器(DSP)和服 務器工作站。LIDE-C軟體包擁有許多數據流圖元素 (actor和edge)實現庫,基於這些基本要素可以自由 設計自己的數據流圖並定義元素,開發特定的應用程 序(例如,控制,參數化和儀器相關的模塊),和觸 發整個數據流圖的調度程序,詳解可參考文章[1]。在 LIDE-C數據流計算圖種actor和edge是關鍵2元素,其 中Actor設計包括四個接口函數:構造,啟動,調用和 種植函數(圖2)。

1)構造函數:創建actor的實例並連接埠,通過函數參數列表進行算法處理後傳遞給相連的一 組邊。 

2)啟用功能:在運行時檢查該actor是否有足夠 的輸入數據和空的緩衝區空間來支持下一次調用。 

3)調用函數:為actor執行單次調用。 

4)終止功能:關閉此actor在計算圖的作用,包 括釋放相關的存儲對象及其所佔用的資源。 

LIDE-C中的FIFO設計構成的數據流圖與其actors 本身相互獨立實現和優化,開發者可專注於Actor的設 計(如算法的實現和優化),然後通過明確定義的接 口和fifos集成這些actors, 從而進行數據流圖的調度 優化(並行,優先級), 這些可通過相互溝通實現整 個性能的表現。FIFO操作由C中的 接口函數封裝。函數指針是指向這 些接口功能,以不同形式實現不同 的接口。LIDE-C中的標準FIFO有 以下執行操作: 

創建具有特定容量的新FIFO。 

從/向一個fifo讀取和寫入 token。 

檢查FIFO的容量。 

檢查FIFO中當前的token數。 

使用FIFO完成後,用FIFO解除 存儲。 

在一個數據流計算圖應用程式 中創建所有actors和fifos之後,逐步 連接並逐步觸發檢查圖形下一個關 鍵actor,從而驗證檢查調試整個系 統的當前使用情況。

2   基於圖像的車輛識別的網絡架構 

本文以基於圖像的車輛識別網 絡系統,從零開始一步一步得到相 應的網絡,實現參考的Matlab推理網絡代碼,從而進 一步實現優化基於數據流計算圖的C代碼實現,此方 法具有一定的普適性和擴展性,且根據不同的需求可量身定製其它的應用需求。案例中的CNN實現四種 車輛之間的分類——公共汽車,卡車,麵包車和汽 車,此源數據和工作基於之前的車輛分類工作[3],提 取了相關的有用信息,使用Caffe + Python 隨機搜索 來最優的超參數。在使用50組隨機生成的超參數(圖 3)進行一系列搜索迭代之後,針對精確率和參數大 小及性能的特徵平衡,推導出一套可實施的優化過的 超參數車輛分類系統, 等到訓練模型穩定後,提取相 關的模型權重圖4(註:本文目的是演示實現優化數 據流計算圖的方法,所選取的類型為double型,讀者 可根據深度學習相關知識,可相應地調整網絡,例 如用全卷積網絡或半精度數據類型或者8比特的整數類型)。 


訓練好後得到的超參數所形成的CNN架構(見圖 4)由五層組成——兩個卷積層,兩個全連接層,最後是分類器層。第一層包括三個通道 (紅綠藍RGB通 道),每個輸入圖像96 x 96的三通道經過過濾後分解 成32個特徵圖,然後最大值池化為48×48。在第二層 中,有32組特徵圖再次卷積,然後下採樣最大值池化 到24×24。第三層和第四層是兩層全連接層,每個節 點有100個節點。分類器層執行從100個元素到4個元 素並通過softmax運算符得到4個等級可能概率值。在 層於層相鄰之間,應用整流線性單元非線性激活函數 (ReLU)。

3  基於數據流的網絡架構計算圖設計 

在得到整個網絡拓撲圖(圖5)並提取出網絡各 個神經元的權重(圖4)後,先在Matlab環境中實現其 CNN 推理的圖像分類代碼,其主要目的其一是確保此 參數模型的最後效果,性能和準確性,其二是有一個 參考代碼並可收集每一層運算後的數值,便於後續數 據流計算圖C代碼的實現、比較、調試和優化,這種 逐層式至最後龐大系統的檢測有益於整體代碼實現的 魯棒性,並將可能的測試失敗的原因顯示化在具體的 某一層某個actor或fifo,進行更好更快速的實現代碼設 計優化和迭代。 

在開發了基於Matlab的CNN車輛分類系統的仿真 參考模型後(圖6和圖7),我們繼續開發基於數據流計算圖LIDE-C的設計以及實現,並在多平臺多核上 進行性能測試,通過迭代式優化數據流計算圖及actor 算法來提高整體性能。


作為數據流模型的第一步,把CNN網絡拓圖轉 換了網絡框圖(圖8),每個框圖都可以看成帶參數 的高階actor, 高階actor可以封裝一個或多個帶參數 subgraph系統子圖,而其中可能存在成千上萬的actor 互連,其形式類似於硬體模塊的實現,所以可以進行 很好的軟硬體結合,此網絡包含了共10種不同類型 的actor:讀通道actor,寫通道actor,卷積actor,池化actor, 非線性激活函數actor,分類器actor, 聚合actor, 廣播actor,乘加 actor,矩陣乘 法actor。針對這些actors,按照不同的圖結 構進行封裝設計,形成三種不同的數據流 計算圖(圖9,圖10,圖11)。 


設計一的優點是整個架構與框圖最接 近,且非常的清晰,易於理解和實現,驗 證和檢查整個數據流計算圖很直接方便。 缺點是當子圖已經確定且封裝為一個大的 actor後,難以進一步深層次地優化,若子 圖來自於第三方機構,當整個程序有錯誤 時,很難進行調試;設計二相對簡潔,在 卷積層用到了循環展開(loop unrolling)和 流水線(pipeline)技術進行優化,增加延遲 但提高輸出量。此方法很適合用於網絡訓 練圖結構,但需要一些技巧,總體來說, 整個計算圖仍舊可以理解;設計三的優點 是整個數據流計算圖可以任意地在某一 步、某一個actor或fifo或緩衝區裡跟蹤,控 制,管理,驗證,檢測數據,除此之外, 設計三的顆粒度更細,可以更深層次進行 優化,自行控制的選擇餘地比較多,相 反的,缺點是不易於理解,構成,實現, 優化這顆粒度細且龐大複雜的數據流計 算圖。

參考文獻: 

[1] SHEN C,PLISHKER W,WU H,et al.A lightweight dataflow approach for design and implementation of SDR systems[C]. Proceedings of the Wireless Innovation Conference and Product Exposition,Washington DC, USA, November, 2010:640–645. 

[2] BHATTACHARYYA S S,PLISHKER W,SHEN C,et al.The DSPCAD integrative command line environment: Introduction to DICE version 1.1.Institute for Advanced Computer Studies, University of Maryland at College Park, Tech. Rep. UMIACSTR-2011-10, 2011. 

[3] HUTTUNEN H,YANCHESHMEH F, CHENK.Car type recognition with deep neural networks[C].ArXiv e-prints, February 2016, submitted to IEEE Intelligent Vehicles Symposium 2016. 

[4] BOUTELLIER J,LUNNIKIVI H.Design Flow for Portable Dataflow Programming of Heterogeneous Platforms[C].2018 Conference on Design and Architectures for Signal and Image Processing (DASIP):106-111. 

[5] Representative Projects of the Maryland DSPCAD Research Group[EB/OL]. https://ece.umd.edu/DSPCAD/ projects/toplevel/projects.htm.

本文來源於科技期刊《電子產品世界》2020年第03期第22頁,歡迎您寫論文時引用,並註明出處。

相關焦點

  • 基於PVANet卷積神經網絡模型的交通標誌識別算法
    針對這一瓶頸問題, 採用對PVANet網絡的淺層特徵提取層、深層特徵提取層和HyperNet層(多層特徵信息融合層)進行改進的措施, 提出了一種適用於小目標物體檢測的改進PVANet卷積神經網絡模型, 並在TT100K(Tsinghua-Tencent 100K)數據集上進行了交通標誌檢測算法驗證實驗。
  • 改進卷積神經網絡,你需要這14種設計模式
    選自Topbots作者:Mariya Yao機器之心編譯參與:馬亞雄、吳攀深度學習領域近來已經發展出大量的新架構,而如何選擇使用這些新架構提升卷積神經網絡的性能就顯得越發重要了。機器之心之前報導過提交 ICLR 2017 的論文:解析深度卷積神經網絡的14種設計模式也正是關注於此。而本文在描述14種設計模式之餘更加注重於闡述構建和訓練卷積網絡的小技巧。
  • 讓你的電腦擁有「視力」,用卷積神經網絡就可以!
    卷積神經網絡極大地提升了圖像識別模型的精度,在生活中也有很多的應用。在這篇文章中,我將描述它的工作原理、一些實際應用,以及如何用Python和Keras是實現一個卷積神經網絡。也就是神經網絡能夠幫助我們解決的問題!人工神經網絡(Artificial Neural Networks)是一種基於人類大腦的程序。神經網絡由許多個聯結的神經元組成。有一些神經網絡有數百萬個節點(神經元)和數十億個聯結!
  • 卷積神經網絡預測模型:提前24個月預測ENSO
    通過不斷探索,研究團隊選取相對成熟的卷積神經網絡進行ENSO 預測。近年來,卷積神經網絡在多個方向得到應用,在語音識別、人臉識別、通用物體識別等方面均有突破。在人工智慧領域,它是比較成熟的方法,並且有很多的開源程序和網站,可以直接使用。「卷積神經網絡的優點是可以處理大量數據。其實,這既是優點,也是缺點。
  • 卷積神經網絡理解(一):濾波器的意義
    卷積神經網絡的發展二. 卷積神經網絡的重要性三. 卷積神經網絡與圖像識別四. 濾波器一.卷積神經網絡的發展卷積神經網絡受到視覺細胞研究的啟發,1962年,Hubel和Wiesel發現初級視覺皮層中的神經元會響應視覺環境中特定的簡單特徵(比如有向的邊等)。
  • 用TensorFlow和Keras構建卷積神經網絡
    全文共9940字,預計學習時長20分鐘或更長不同神經網絡結構各有所長。本文主要介紹如何在Python中使用TensorFlow和Keras構建卷積神經網絡。 卷積神經網絡是過去十年中深度學習成為一大熱點的部分原因。今天將使用TensorFlow的eager API來訓練圖像分類器,以辨別圖像內容是狗還是貓。
  • 盤點四大民間機器學習開源框架:Theano、Caffe、Torch和SciKit-learn
    它的開發始於 2007,早期開發者包括傳奇人物 Yoshua Bengio 和 Ian Goodfellow。Theano 基於 Python,是一個擅長處理多維數組的庫(這方面它類似於 NumPy)。當與其他深度學習庫結合起來,它十分適合數據探索。它為執行深度學習中大規模神經網絡算法的運算所設計。
  • ​卷積神經網絡與Transformer結合,東南大學提出視頻幀合成新架構
    深度卷積神經網絡(CNN)是功能非常強大的模型,在一些困難的計算機視覺任務上性能也很卓越。儘管卷積神經網絡只要有大量已標記的訓練樣本就能夠執行,但是由於物體的變形與移動、場景照明變化以及視頻序列中攝像頭位置的變化,卷積神經網絡在視頻幀合成方面的表現並不出色。
  • 北京大學查紅彬:基於數據流處理的SLAM技術
    北京大學查紅彬教授為大家帶來報告《基於數據流處理的SLAM技術》。查紅彬,北京大學信息科學技術學院智能科學系教授,機器感知與智能教育部重點實驗室主任。主要從事計算機視覺與智能人機互動的研究,在三維視覺幾何計算、三維重建與環境幾何建模、三維物體識別等方面取得了一系列成果。
  • 卷積神經網絡與Transformer結合,東南大學提出視頻幀合成新架構
    深度卷積神經網絡(CNN)是功能非常強大的模型,在一些困難的計算機視覺任務上性能也很卓越。儘管卷積神經網絡只要有大量已標記的訓練樣本就能夠執行,但是由於物體的變形與移動、場景照明變化以及視頻序列中攝像頭位置的變化,卷積神經網絡在視頻幀合成方面的表現並不出色。
  • ​卷積神經網絡與Transformer結合,東南大學提視頻幀合成新架構
    選自arXiv作者:Zhouyong Liu 等機器之心編譯機器之心編輯部研究者表示,這是卷積神經網絡與 Transformer 首度結合用於視頻幀合成。深度卷積神經網絡(CNN)是功能非常強大的模型,在一些困難的計算機視覺任務上性能也很卓越。儘管卷積神經網絡只要有大量已標記的訓練樣本就能夠執行,但是由於物體的變形與移動、場景照明變化以及視頻序列中攝像頭位置的變化,卷積神經網絡在視頻幀合成方面的表現並不出色。
  • 重金屬汙染土壤穩定化修復材料 ——基於理論原理和實踐條件的設計...
    適宜的修復材料是土壤重金屬穩定化技術實施的重要基礎和前提。本文從土壤重金屬穩定化的理論原理和修復實踐兩個角度,對重金屬穩定化修復材料的實用性設計思路進行簡要梳理。一、基於理論原理的重金屬穩定化修復材料設計思路土壤中重金屬的穩定化修復過程,本質上為重金屬元素與修復材料之間的相互作用過程。此作用過程,實質上為極其複雜的物理化學反應過程。
  • 基於工作流理論的民用飛機排故路徑
    一、工作流理論 工作流的研究源於資料庫的發展,資料庫及其管理系統把數據和數據管理從應用程式中分離出來,從而簡化了應用程式,也提高了它的可靠性。工作流的提出不僅是為業務流程自動化提供基礎,也為網絡環境下應用系統的進一步分離提供基礎。
  • 自動化數據增強:實踐、理論和新方向
    從實踐到理論理解:儘管在實際應用中增強技術的設計研發進展速度很快,但由於缺乏分析工具,我們仍然難以理解這類技術的好處。該如何從理論上理解實踐中使用的各種數據增強技術? 從粗粒度到細粒度的模型質量保證:儘管現有的大多數數據增強方法的關注重點都是提升模型的整體性能,但通常還需在更細的粒度上關注數據的關鍵子集。
  • JMC|賽諾菲研究基於AI的分子從頭設計
    本文介紹了基於強化學習來進行化學空間的探索的方案;同時,也對相關的評分方法進行了研究;最後,在對典型藥物研發項目的回顧性研究中,作者研究了如何生成項目進展所需的相關分子,以及如何定製方案以滿足分子合成和優化的相關需求。生成性神經網絡被訓練以用於從頭設計具有指定屬性的化合物。訓練過程主要包括兩個步驟。
  • 用樂高積木搭建的首臺——卷積神經網絡樂高分揀機
    樂高是世界上最好的發明之一,但有兩件事可能令人煩惱:分類和踩踏小物件。美國樂高達人丹尼爾·韋斯特(Daniel West)經過兩年的研發,用10,000多種樂高積木、 6個樂高電機和9個伺服電機提供動力。製作了一臺通用樂高分揀機。
  • 基於軟體無線電理論設計的接收機射頻前端系統
    本方案接收機射頻前端系統基於軟體無線電理論來設計和實現,以達到建立一個通用化、標準化、模塊化的接收機射頻前端系統仿真平臺的目標。以實現接收機射頻前端系統低噪聲係數,小的互調失真,大的動 態範圍和鏡像抑制,良好的AGC,足夠的增益和正確的選擇性等設計要求。
  • 從系統和代碼實現角度解析TensorFlow的內部實現原理 | 深度
    這些OpKernels以Tensor為處理對象,依賴網絡通信和設備內存分配,實現了各種Tensor操作或計算。Opkernels不僅包含MatMul等計算操作,還包含Queue等非計算操作,這些將在第5章Kernels模塊詳細介紹。第三層是圖計算層(Graph),包含本地計算流圖和分布式計算流圖的實現。
  • 數據中心自動化與網絡可視性的作用
    儘管該技術仍在不斷發展,但基於目前市場的發展,似乎只需幾年時間就可以實現自動化基線分析的機器學習產品。任何機器學習引擎都要求輸入良好的數據,因此網絡需要全面的可視性工具,以提供高質量的數據,以便從機器學習引擎中獲取價值。所有網絡都是不同的,因此機器學習算法需要先實施大量的基線和學習才能產生好的建議,所有這些都需要網絡數據,即提供網絡可視性解決方案輸入的相同數據。