李建東,孟廣雙,嚴利民
(1.唐山工業(yè)職業(yè)技術學院,河北 唐山 063000;2.上海大學 微電子研究與開發(fā)中心,上海 200444 )
機器視覺識別系統(tǒng)是機器人智能化的關鍵特征之一,其性能的優(yōu)劣將直接影響機器人的識別性能與智能化程度。機器人視覺識別系統(tǒng)的核心是圖像處理,為提高圖像的處理速度,學術界與工業(yè)界將各種并行計算方法引入圖像處理過程中,如采用MPI 標準并行編程環(huán)境和基于集群的多機處理系統(tǒng)對圖像進行信息提取、基于多線程的圖像快速處理方法和基于GPU 與CPU 異構模式圖像快速處理方法等。上述方法采用的GPU 結構存在功耗、體積等問題無法在機器人系統(tǒng)中廣泛應用,而基于CPU 的結構則共享存儲結構,存在內存嚴重不足的問題,通常想法是將圖像劃分為若干塊,每次只處理一塊圖像數據,這種方法可以顯著降低內存的使用量,但存在頻繁的I/O 操作,對于需要若干次迭代收斂的算法,圖像處理速度將會下降幾倍甚至數十倍。
業(yè)界通常采用兩種方法解決上述問題,一是采用內存映射文件技術,內存映射文件建立從磁盤中文件到特定內存區(qū)域的映射關系,通過映射關系可以顯著提升文件訪問速度[1-2]。另一種方法是采用分布式計算技術,每個計算節(jié)點處理的分塊小于其內存容量,避免了迭代過程中多次讀寫存儲[3]。本文從分布式計算技術考慮,采用并行計算系統(tǒng)結構和文獻[4]提出的采用數據驅動機制的多核處理器原型結構,設計了一種用于智能機器人的數據驅動多核識別系統(tǒng)。
數據流模型(數據驅動并行程序執(zhí)行模型)是馮·諾依曼在控制流計算機并行化歷史上劃時代的突破。數據流程序邏輯基于圖表達,是一種優(yōu)美、直觀、強大的并行計算模型,其思路最初由麻省理工學院提出。經過近半個世紀的研究,數據流理論不斷完善、成熟,由于其獨特的性能、功耗表現,對計算機的眾多領域產生了深遠影響,直到目前仍然是前沿研究的熱點。[5]
多年的實踐證明數據流模型在并行方面存在優(yōu)勢,區(qū)別于傳統(tǒng)指令驅動操作的馮·諾伊曼計算機。數據流計算機采用了數據驅動執(zhí)行方式,僅當某一指令所需的操作數全部到齊后,指令即始執(zhí)行。這樣,如有多條指令同時滿足上述條件,就可以彼此并發(fā)執(zhí)行而不受指令順序執(zhí)行的限制,從而充分開拓并行性。
同一運算程序下控制流與數據流的不同的執(zhí)行過程如圖1 所示。圖中可見傳統(tǒng)馮·諾依曼機采用程序計數控制,指令執(zhí)行必須按順序執(zhí)行,而采用數據驅動方式執(zhí)行時,任一指令所需要的操作數完備后,只要有可以使用的計算資源就能立即驅動執(zhí)行,產生的運算結果又可以驅動下一條指令,這使得數據驅動模式具有天然的并行性。
圖1 控制驅動與數據驅動機制比較
本文采用顯式令牌存儲匹配機制實現數據驅動,即直接匹配(direct matching)[6]。其原理是為活躍的代碼塊(code block)分配獨立的數據幀存儲空間,存儲空間內保存著某個代碼塊的操作數,存儲地址的訪問通過“虛擬地址+偏移地址”完成,如圖2 所示。在t 時刻,當有與“乘指令”相關的數據令牌進入后進行完備性檢測,當檢測到乘指令所需的數據令牌未完備時,在t+1 時刻暫存相對應的幀存儲空間中,同時將相應數據到達標記位置,當執(zhí)行乘指令的所有數據令牌到達時,立即觸發(fā)乘指令執(zhí)行,同時,乘指令收到執(zhí)行下一次操作的數據令牌,在t+2 時刻將其存儲在FP’幀存儲空間中,而乘指令執(zhí)行后產生的結果數據令牌出現在乘指令的輸出端,作為觸發(fā)其它指令的數據令牌。
圖2 硬件實現顯示存儲匹配機制
本文提出的數據驅動多核視覺識別系統(tǒng)可應用在多場景下的智能機器人中,依據具體應用進行編程,系統(tǒng)結構如圖3 所示。
圖3 數據驅動視覺識別系統(tǒng)
系統(tǒng)由四個處理器核組成,每個處理器核與其相關的片上SRAM 存儲、Flash 非易失存儲、調試接口等其它IP 部件掛載到系統(tǒng)總線,構成小型單核系統(tǒng),經獨立硬件數據驅動模塊后點對點片內通信。其中,主核CPU 完成從圖像采集到目標切割等系列任務,主核CPU 總線掛載攝像頭I2C 接口、SDRAM、SRAM、顯示器接口,掛接相關圖像預處理加速器。主核完成圖像切割后,將切割得到的待識別圖像信息經數據令牌驅動,通過點對點通信模塊發(fā)往其它識別處理器進行相應特征的提取與識別。在識別處理器完成各自識別任務后,將識別結果經數據令牌驅動返回主核CPU 匯總識別。
主核視覺識別系統(tǒng)配置如圖4 所示,配置接口分為三類,第一類用于圖像傳感器捕獲及圖像存放接口,如圖4 中的攝像頭I2C 接口、SRAM 顯存讀寫接口、FLASH 讀寫接口;第二類是程序代碼執(zhí)行部件,如圖4 中配置的處理器、SDRAM 控制器、JTAG 接口、UART 接口;第三類是其它接口,包括通信擴展口、SRAM顯存控制接口、計時器等。從核系統(tǒng)配置中僅保留有運行識別程序的處理器,供識別代碼運行的片上存儲器。
圖4 主核視覺識別系統(tǒng)配置
系統(tǒng)借鑒文獻[7]中提出的交點隊列型通信結構,在數據通信中增加了支持中斷信號處理與廣播式數據傳播,其是一種點對點的并行通信結構,在每個交點處都有一個FIFO 緩存,具體結構見圖5 所示,由解碼流水、仲裁器、FIFO 緩存隊列、Crossbar、中斷控制組成。數據輸入時解碼流水對數據解包,根據匹配地址表查找數據目的FIFO 緩存隊列,每個輸入端口對應3 個FIFO 存儲隊列組。解碼流水為兩級流水線結構,首先是標簽過濾器,根據數據包信息判定數據目的地寄存有效數據,根據數據包控制信息將有效數據存儲到相應FIFO緩存隊列中,緩存FIFO 隊列非空時向相應目的地發(fā)送請求信號,經仲裁器仲裁后,通過Crossbar 形成一條鏈路進行數據傳送。
圖5 點對點通信結構
為提高系統(tǒng)效率,設計集成廣播指令,即一個數據包同時發(fā)送至其它處理器核,集成中斷控制,無需頻繁查詢避免擁堵。
為保證系統(tǒng)的絕對公平,通信仲裁算法采用輪詢方式,關鍵參數是交點緩存深度,需構建通信模型。交點隊列通信是多隊列單服務臺結構,借助排隊論構建M/M/1 的排隊模型,具體過程如下。
1)問題的一般描述
設輸入為泊松過程,服務時間呈負指數分布,單個服務臺、系統(tǒng)無限制、數據源無限制,求系統(tǒng)狀態(tài)概率Pn與系統(tǒng)運行指標數據平均長度Ls,滯留隊列長度Lq,數據平均停留時間Ws,平均隊列等待時間Wq之間的關系。
2)系統(tǒng)狀態(tài)概率
利用狀態(tài)轉移圖列出平衡方程。設到達與服務率分別為λ和μ,可列出平衡方程如下:
可解得狀態(tài)概率為:
3)系統(tǒng)運行指標
排隊系統(tǒng)運行指標分別有Ls、Lq、Ws、Wq,可證明得到其與服務強度的關系如下:
指標關系可用little 公式表示:
基于上述理論分析,采用輪詢的仲裁算法,通過Matlab 構建模型進行仿真驗證,最終實現的緩存實時隊長在深度4 時,數據吞吐達到98%,基于此,將緩存深度提高至8 時,也僅為99%,即僅增加1 個百分點。綜合上述分析,權衡系統(tǒng)性能與資源消耗,選擇系統(tǒng)互聯緩存深度為4。
系統(tǒng)的關鍵特性表現在分布式任務計算和數據驅動表征數據相關性上。
識別系統(tǒng)由目標定位和目標識別兩部分組成,系統(tǒng)示意圖如圖6 所示,主要流程包括圖像采集處理、紅色分量提取、前后列相減、sobel 算法二值化、數據膨脹、數據腐蝕、目標定位和目標識別。識別系統(tǒng)以FPGA 為設計平臺,FPGA 資源消耗見表1,圖像傳感器采用OmnVision 公司OV9650。
圖6 目標識別系統(tǒng)示意圖
表1 FPGA資源消耗
目標識別系統(tǒng)最初是在單核系統(tǒng)完成圖像采集至目標識別任務,本文將其移植至多核平臺,使用點對點通信結構為多核核間通信連接,提高系統(tǒng)多核并行性,使用數據驅動標定待計算數據間的依賴關系。相比于單核識別系統(tǒng),特征明顯:
1)任務分工更明確,主核CPU 由按順序執(zhí)行轉變成為由主核CPU 管理和控制下的多核分布式計算任務模型。
2)多處理器核以數據驅動方式自發(fā)進行數據交換,避免程序控制,數據并行性優(yōu)異。
3)模型具備擴展性,簡單拆解成多核平臺分布式計算。
以臺球識別場景為例,一般包括色彩、大小、位置等參數,識別系統(tǒng)的分布式計算任務圍繞參數識別展開,系統(tǒng)將一個處理器作為主核,其余三個處理器作為從核。主核是從核的任務發(fā)起者,即從核的計算任務由主核在數據驅動機制作用下開始,完成從圖像采集到目標切割任務,將切割得到的圖像矩陣值以數據驅動方式分別發(fā)送至色彩、大小、位置等識別處理器,分別完成識別任務。本文設計的機器人應用平臺如圖7 所示,平臺由主控板和機械臂組成,通過視覺識別系統(tǒng)進行目標球識別和定位,控制機械臂進行抓取,識別結果如圖8 所示。
圖7 機器人實物圖
圖8 臺球識別
針對多應用場景,對單核系統(tǒng)和四核系統(tǒng)進行了加速比趨勢分析,如圖9 所示。在計算誤差允許的范圍內,加速比隨著計算量增大而緩慢上升,四核加速比逐漸趨近于4。表明隨著計算量增大,通信時間所占比例逐漸減小,不因通信量與計算量的增大而線性增大,不會成為限制多核性能的瓶頸,具有很好的性能,設計的多核處理器結構實現過程中每個C 代碼段執(zhí)行純函數的操作,消除了函數間的共享變量,并行編程的復雜度有所降低。同時,采用的數據驅動機制沒有執(zhí)行順序的嚴格限制,充分挖掘了算法潛在的并行性。
圖9 加速比趨勢圖
針對智能機器人中圖像識別對并行化的處理以及低功耗應用需求,結合分布式計算與數據流計算模型,設計了一種用于智能機器人的數據驅動多核識別系統(tǒng),系統(tǒng)采用分布式多核結構,核間通信采用數據驅動機制,支持函數語言編程。實驗結果表明,系統(tǒng)采用的數據驅動機制充分增加粗粒度的多核并行性,線性加速比較好。