江漢大學,湖北武漢 430056
此系統的開發是為了應對現在日益龐大的數據處理量需求,加速數據處理效率。從最初的單核CPU,發展到后來的多核CPU,雖然處理速率有了顯著的增強,但功耗較大,且從軟硬件協同的角度上來看,在并行操作過程中,調整比較困難,再發展到如今利用CPU、GPU、DSP和FPGA來互相搭配,實現多內核運算,大大降低了功耗,而不足之處在于其算法邏輯的設計是一道不可避免的難題[1]。
2012年11月,Altera公司公開展示一款基于FPGA的OpenCL SDK,這種開放式標準可以讓開發者在編程實現過程中用C/C++語言來代替傳統的硬件編程語言,這樣無需再深入思考FPGA底層的HDL語言設計,大大簡化編程實現過程,將更多的時間放在并行加速的優化設計上[2]。FPGA和OpenCL結合的優勢如下:
(1)比較于CPU,GPU等處理器,具有大幅度提高性能,功耗低的優勢;
(2)基于C的編程環境,具有靈活的可編程性和并行執行能力;
(3)降低在提取線程級并行處理操作在FPGA中實現以提高性能時的難度;
(4)設計過程中,OpenCL將相應的高級描述轉化為流水線,可移植性強。
OpenCL(Open Computer Language)是一種開放性的語言標準,能夠為異構平臺提供編寫程序的框架[3]。最早于2008年由蘋果公司提出,希望能夠為軟硬件的協同設計提供更多的方式。OpenCL支持基于C/C++的編程環境的代碼開發,并且可以很好地應用于CPU、GPU、DSP和FPGA系統中,除此之外,支持相應的API,并通過PCI-E協議實現硬件與主機的數據交互。

(1)OpenCL架構及其模型分析
OpenCL架構由平臺模型、執行模型、內存模型、編程模型四個模型組成[4]。平臺模型架構主要由一個主機和多個OpenCL計算設備構成,每個設備由一個或多個計算單元組成,每個計算單元又包含多個處理元件。所有通過OpenCL執行的操作都是由主機發出,控制處理元件完成相應計算工作,再反饋給主機。執行模型的核心工作在于操作相應的kernels的運行。通過定義索引,賦予全局以及局部ID來不斷切割任務,創建相應工作組。內存模型是通過私有內存、本地內存、常量內存以及全局內存來完成內存空間的管理操作[5]。最后,編程模型是建立在OpenCL提供了基于任務分割以及數據分割的并行運算機制上,在運算過程中,每一個空間節點和內存中實例的對象相對應,將算法不斷細化、切割,且每個線程相互之間保持獨立[6]。開發者只需要按照需求定義并行運算數據量,具體操作交由OpenCL實現分配。
(2)OpenCL在FPGA上的實現
FPGA可以根據用戶需求制定特定的硬件設計模塊,具有優良的并行能力[7]。往往在一塊FPGA系統中,存在著上百萬的邏輯單元,通過這些邏輯電路實現對應的邏輯功能。除此之外,還具有上千的DSP模塊,用來實現算法加速等功能[8]。
Alter的OpenCL SDK支持異構平臺的并行開發環境,并不像傳統開發需要在固定的處理器上完成,而是將程序轉化為FPGA上的硬件模塊,將其作為FPGA的配置數據的形式下輸出。在操作過程中,PC會將寫入這些數據的FPGA進行內核處理。從上文的闡述不難看出開發者在編程過程中可以在不具備硬件設計基礎的情況下得到FPGA的配置數據,用C語言完成中間的設計操作。編譯器編譯文件過程如圖1所示。
接下來,本文將介紹基于FPGA與OpenCL所設計的一套高速傳送帶上的物品分類統計系統,將從系統原理、結構功能、軟硬件實現以及測試數據及其分析進行闡述。
在現代工業領域,傳送帶被廣泛運用于各類商品的包裝、檢測等工作中。傳統的傳送帶應用一般處于低速狀態,物體運動速度很低,配合人工輔助操作來實現,因此這種方法的效率較低,處理速度較慢,且需要人工的參與,逐漸變得不太適合于現今這種物流量大、效率需求高的實際生產需求。而如果加快傳送帶速度,人工輔助操作就不能與高速運動下的物體相適應,人眼甚至不能捕捉到物體準確的信息,更無法對其進行判斷與操作。如果計算機和機器可以代替人工操作,便可以實現在高速傳送帶上的實際化操作,從而有效地完成各種實際應用,滿足提高效率的需求。為了保證高速識別,本文基于FPGA和OpenCL技術設計了一款高速傳送帶的運動物品識別系統,將傳統識別的傳送帶速度由0.5m/s提升至2.5m/s。


本文所設計的系統由五部分組成:用于捕獲圖像數據的500萬像素的高速工業相機;用于匹配處理圖像數據的UP2開發板;用于支持FPGA和OpenCL進行硬件加速的C5P開發板;用于顯示結果并進行語音播報的QT顯示界面;專門定制的3m×1m×0.5m的高速傳送帶,如圖2所示。
物品在高速傳送帶上經過工業相機時,被相機捕獲相應圖像數據,以. jpg的格式傳給UP2。UP2進行圖像的處理和匹配,在處理過程中先通過OpenCV進行物體特征識別,物體特征包括形狀、大小、紋理等標志位,同時,UP2將部分數據通過PCI-E協議傳送給C5P,C5P對獲得的圖像數據交由硬件加速模塊進行硬件加速處理,再將處理后的數據返還給UP2,當檢測到正確的樣本,特征標志位改變,UP2就將數據通過HDMI轉VGA通道和AUX交互給揚聲器進行語音播報,并將匹配的結果顯示在QT界面上。
系統功能如圖3所示,其主要功能有以下幾個方面:
(1)采集信息:本系統使用500萬像素高速工業相機捕獲樣本在傳送帶上的圖像信息;
(2)硬件加速處理圖像數據:結合OpenCL與FPGA對來自UP2的圖像數據進行硬件加速處理;
(3)高速識別:本系統借助OpenCV實現了實時物體特征識別。通過OpenCV,選取擴展的LBP特征,結合Adaboosting算法進行樣本檢測以及分類器的訓練,然后通過實驗測試分析不同分類器樣本庫大小和正負樣本質量對實驗結果的直接影響,最終通過實驗比較選取最好的樣本庫;
(4)基于QT Creater結果顯示:QT提供了信號槽機制,可以很好地降低耦合,提升代碼的復用性,所以選用其作為顯示界面。上面增設五個功能按鈕,分別為預覽、計數、開始、停止以及語音播報的功能。同時QT的開源環境以及可移植性強的特點也方便于后期的跨平臺開發[9]。
硬件設計如圖4所示,主要包括UP2嵌入式開發板、C5P開發板、揚聲器以及顯示屏四個模塊。
(1)硬件模塊
SDRAM芯片采用LVCMOS信號標準,可以進行數據的存儲提取。
C5P開發板有2個七段數碼顯示管,七段數碼管的每個引腳(共陽模式)均連接到 Cyclone V FPGA,還有4個由FPGA直接控制的LED。每一個LED都由Cyclone V FPGA 獨立驅動,驅動相關的引腳至高電平或低電平來打開或關閉LED。FPGA輸出低電壓的時候,對應的字碼段點亮,反之則熄滅,輸出的低電平信號可作為后期輸出給機械臂的控制信號。

PCI-E接口進行UP2和C5P開發板間的通信。PCI-E系統是由FPGA系統和PC系統兩個主要組件組成。FPGA系統基于Avalon-MM Cyclone V Hard IP for PCI Express 和 Modular SGDMA 開發。PC端的應用軟件是Terasic基于Intel PCI-E內核模式驅動開發的。
(2)FPGA結合OpenCL的硬件加速模塊
FPGA具有實現宏函數的嵌入式陣列以及實現普通功能的邏輯陣列,具有很強的并行運算能力[6],但實現操作過程中往往不可避免地需要使用比較繁瑣的HDL語言,而OpenCL就為其提供了一種開放式標準,用純C語言來代替HDL,這樣大大簡化了編程實現過程。C環境下OpenCV的一些識別算法程序,例如積分圖像算法,在需要計算多個區域的直方圖的時候,可以用來提高統計圖像子區域像素的效率。這種算法在圖像模糊、邊緣提取、對象檢測的時候可以極大地降低計算量,所以在OpenCV識別過程中會被反復調用執行。我們將這類算法通過OpenCL將其轉化為FPGA上的硬件模塊,將這些硬件模塊進行并行運算,從而加速圖像數據處理。具體實現操作如下:利用Quartus工程編譯最終用于配制FPGA的.sof文件,將.sof文件轉化為.jic文件,通過JTAG端口借助串行Flash引導功能將.jic文件燒寫到EPCQ器件中進行編程固化。
由于傳送帶上的貨物檢測主要以邊緣、線段為主,所以采取LBP特征進行分類,并通過Adaboosting算法來訓練分類器,進行樣本的檢測以及可視化分析。Adaboosting算法是一種迭代算法,其核心思想通過不斷改變權值,最終按照權值將弱分類器組合為一個最強分類器,其原理就不再贅述[10]。識別流程如圖5所示。

能否快速正確識別物體是整個系統能夠正常運行的關鍵。為測試物體框架的實時性和準確性,構建以下測試框架。首先測試系統實時性,把樣本A、B、C與其他物體放在傳送帶上,改變傳送帶速度,記錄系統是否正確檢測到相應樣本,數據如表1所示;其次測試系統識別準確性,將各種各樣的負樣本放在傳送帶上,記錄系統誤判比,如表2所示。
對圖表進行處置分析,可知物體識別準確性與負樣本數目、傳送帶速度有關。當負樣本數目足夠時,在通過OpenCL加速后系統可以在比較理想的識別率的基礎上對處于2.5m/s的高速傳送帶上的物品進行識別以及分類,該系統符合設計初衷。

表1 物體識別實時性測試

表2 物體識別準確性測試表
本文介紹了OpenCL的并行運算架構,研究了并行計算的模型,以及其在FPGA上的實現方式,最后基于FPGA與OpenCL的硬件加速設計了一套在高速傳送帶上的商品分類識別系統,并對測試結果進行了分析,系統的準確性達到了預期的目標。該系統進一步的完善在于,FPGA開發板會將PCI-E傳來的圖片數據處理后在FPGA開發板上進行LED和數碼管的顯示,將顯示信號作為控制信號,搭配相應的機械臂,控制機械臂抓取移動商品,實現在高速傳送帶上對商品的分類統計工作。