王海鵬 李夫玲 余斌 阮偉華
摘 ?要:文章提出一種基于賽靈思嵌入式人工智能FPGA開發(fā)平臺PYNQ-Z2的人臉追蹤檢測原型系統(tǒng)。通過搭建Linux環(huán)境并運行Jupyter Notebook交互式在線編譯器,調(diào)用IPython內(nèi)核和PYNQ的硬件庫,導入OpenCV庫編寫并且編譯執(zhí)行Python程序,可實現(xiàn)在線控制PYNQ-Z2來獲得視頻流輸入并對視頻數(shù)據(jù)進行傳輸和處理,從而實現(xiàn)人臉圖像的分析與檢測。本設計利用了PYNQ-Z2的可編程系統(tǒng)(PS)和可編程邏輯(PL)的交互式數(shù)據(jù)傳輸處理,盡可能的發(fā)揮ARM和FPGA的優(yōu)勢,從而實時的進行人臉檢測。
關鍵詞:現(xiàn)場可編程門陣列(FPGA);深度學習;人臉識別;Python;OpenCV;PYNQ
中圖分類號:TN911.7 文獻標識碼:A 文章編號:2095-2945(2020)01-0012-03
Abstract: This paper presents a prototype system of face tracking and detection based on PYNQ-Z2, an embedded artificial intelligence FPGA development platform. By building Linux environment and running Jupyter Notebook interactive online compiler, invoking IPython kernel and hardware library of PYNQ, importing OpenCV library, compiling and executing Python program, we can realize on-line control of PYNQ-Z2 to obtain video stream input and transmit and process video data, so as to realize face image analysis and detection. This design makes use of the interactive data transmission processing of PYNQ-Z2's programmable system (PS) and programmable logic (PL), giving full play to the advantages of ARM and FPGA as far as possible, so as to carry out real-time face detection.
Keywords: field programmable gate array (FPGA); deep learning; face recognition; Python; OpenCV; PYNQ
1 概述
計算機視覺[1]已經(jīng)成為科學研究的重點,在生活中得到了廣泛的應用。與此同時個人信息安全在當前社會形成嚴重的漏洞,迫切需要增強其安全性。而人臉識別是現(xiàn)代化高科技的識別技術(shù)[2],利用人類面部信息的唯一性這一高度安全性特征,不僅能夠滿足基本的安全需求,而且可實現(xiàn)方便、快捷的人機交互。其工作原理是利用高清攝像頭對人臉定位并采集人臉信息,然后將采集的視頻流傳入計算機中進行預處理,鎖定人臉的位置后對面部的特征值進行采樣,最后提取每個人臉中的身份特征,并與預先存儲的人臉信息進行對比,認證通過后再顯示設備上輸出結(jié)果并通過身份認證。
典型的人臉識別步驟是:圖像采集、圖像預處理、人臉檢測、定位和對齊、人臉識別。如圖1所示。采用基于CMOS圖像傳感器的工業(yè)攝像頭,通過使用基于電荷耦合器件(CCD)方法的CMOS工藝圖像采集芯片,模擬視頻信號轉(zhuǎn)換成數(shù)字信號后傳送到計算機中存儲或者直接處理。CMOS傳感器就將所有的外加電路直接集成到芯片的內(nèi)部,其他的輔助電路也非常簡單,體積更小,功耗更低。
經(jīng)過攝像頭采集后的視頻圖像,因為拍攝環(huán)境的影響,會產(chǎn)生許多噪聲,使獲取的視頻圖像極易受到干擾和低分辨率等問題,從而導致特征不明顯。若不對其進行處理,將大大影響后續(xù)的檢測識別精度。經(jīng)過預處理,可以從攝像頭采集的原始數(shù)據(jù)中清除模糊的干擾信息,并提取精準信息,之后將預處理后數(shù)據(jù)提供給算法分析,以保證算法運行結(jié)果的清晰度和正確性,為人臉檢測做好準備。圖像預處理可采用圖像轉(zhuǎn)正、圖像增強、濾波、人臉銳化、灰度化、二值化、歸一化等方法[3]。
人臉檢測算法主要使用模板匹配技術(shù),其主要原理是用一張人臉的模型圖片和采集到的圖像進行對比匹配,如果出現(xiàn)人臉,就會將人臉標出。選用人臉和非人臉作為對比的模板進行訓練,在正面檢測的研究中有重大突破,可以判斷并檢測出人臉的大致位置,具有很高的精度,但是因為人臉分類器設計起來特別復雜,采樣方式是基于密集滑動窗口,所以人臉檢測的速度很慢。經(jīng)過前四項的圖像處理后,最后將采集到的人臉信息特征點提取出來,主要包括全局提取和局部特征提取[4]。面部的信息提取之后需要進行匹配,一般完整的人臉識別系統(tǒng)會提前錄入每個人的人臉信息,或者建立數(shù)據(jù)庫并通過網(wǎng)絡在各地的識別終端同時進行對比。
本文使用賽靈思(Xilinx)的嵌入式人工智能FPGA開發(fā)平臺PYNQ-Z2實現(xiàn)了便攜式的人臉追蹤檢測的原型系統(tǒng)設計,并進行硬件加速。
2 設計與實現(xiàn)
2.1 系統(tǒng)整體結(jié)構(gòu)
本文設計人臉追蹤檢測系統(tǒng)主要是由圖像采集模塊、主控PYNQ模塊、結(jié)果輸出模塊等幾部分構(gòu)成,整體系統(tǒng)框圖如圖2所示。圖像采集使用工業(yè)高清攝像頭連接至PYNQ-Z2的USB HOST接口作為視頻的輸入入口;主控是嵌入式人工智能FPGA開發(fā)PYNQ-Z2,進行底層邏輯設計和處理數(shù)據(jù),主要核心芯片采用Xilinx ZYNQ XC7Z020,其內(nèi)部異構(gòu)雙核ARM Cortex-A9 CPU和FPGA,可編程系統(tǒng)PS(ARM)和可編程邏輯PL(FPGA)之間通過片上高速AXI總線進行數(shù)據(jù)交互,有效克服ARM和FPGA間數(shù)據(jù)傳輸?shù)牡退?、延時、外界干擾等問題,可充分結(jié)合連接兩者的特性,聯(lián)合開發(fā)。其工作流程為工業(yè)攝像頭對人臉信息進行采集,通過接口傳到PYNQ的ARM部分,ARM負責調(diào)度整個系統(tǒng),并且控制人臉信息的輸入,然后傳給FPGA部分進行圖像的處理,最后將處理好的視頻通過HDMI傳遞到顯示模塊上,呈現(xiàn)出系統(tǒng)的識別結(jié)果。
2.2 PYNQ-Z2嵌入式人工智能開發(fā)平臺
PYNQ-Z2是第一款支持Python語言的FPGA硬件平臺。PYNQ平臺[5]提供了base.bit文件,開發(fā)者可以在不設計底層邏輯電路的情況下直接在Jupyter Notebook來完成項目設計。PYNQ的開發(fā)模式是Python+ZYNQ的形式,不僅可以進行傳統(tǒng)的Xilinx的FPGA編程,而且支持Python語言進行線上編程。通過Vivado HLS集成環(huán)境使用C、C++編程并封裝成IP核導入底層的邏輯電路。其最大的特點是CPU和FPGA可以協(xié)同工作[6]來提高效率,實現(xiàn)加速效果。在處理神經(jīng)網(wǎng)絡時,ARM內(nèi)核可以與部署功能強大且靈活的卷積專用處理器協(xié)同使用。專用卷積處理器嵌入卷積引擎和可編程軟核,釋放ARM處理器的大部分監(jiān)督職責,并允許加速器由軟件以超細度控制。這種方法為協(xié)同異構(gòu)計算:加速器處理CNN的大部分工作量,ARM核心可以無縫地執(zhí)行難以加速的部分計算。在ARM Cortex-A9 CPU上運行的軟件包括:載有Jupyter Notebooks設計環(huán)境的網(wǎng)絡服務器、IPython內(nèi)核和程序包IPython內(nèi)核和程序包、Linux、FPGA的基本硬件庫和API。PYNQ的架構(gòu)是將PS(處理系統(tǒng))和PL(可編程邏輯)集合起來,其間使用片內(nèi)AXI總線連接,PL部分用來實現(xiàn)高速邏輯、算術(shù)和數(shù)據(jù)流子系統(tǒng)PS部分支持軟件程序和操作系統(tǒng)。這樣,系統(tǒng)設計的整個功能可以恰當?shù)卦谟布蛙浖g做出劃分,劃分方法是一般邏輯算法在ARM端運行,大量計算卸載到FPGA端運行,ARM+FPGA高速互聯(lián)、協(xié)同運行,如圖3所示。
2.3 系統(tǒng)實現(xiàn)及流程
首先通過開源工具Win32diskimager將PYNQ-Z2的映像文件燒錄在SD卡中(SD卡至少8GB)。然后如圖4所示,將PYNQ-Z2開發(fā)平臺中Boot跳線設置為SD卡位置;設置電源跳線選擇供電方式;將裝有鏡像文件的SD卡插入卡槽;插入USB線供電;連接電腦和PYNQ-Z2的以太網(wǎng)端口;開啟開關,啟動板卡。在設置完這些步驟以后,紅色LED亮起表示板卡已上電,黃色LED亮起證明PYNQ-Z2正常運行。一分鐘后兩個藍色LED和四個黃色LED同時閃爍,藍色LED開啟后就會熄滅二黃色LED常亮,表示Linux系統(tǒng)成功啟動可以使用。
連接好各模塊后,更改電腦的靜態(tài)IP地址,使用網(wǎng)絡瀏覽器登錄http://192.168.2.99,新建Python文件進行頂層設計。若攝像頭的初始化顯示屏時偶爾出現(xiàn)色差或者屏幕分割的情況,可以考慮重新啟動PYNQ-Z2來解決。
OpenCV是開源跨平臺的計算機視覺庫,其實現(xiàn)了許多圖像處理和計算機視覺的算法,應用領域有機器視覺、無人駕駛、運動跟蹤和人臉識別。OpenCV中自帶基于深度學習開發(fā)的Haar級聯(lián)分類器,可用于人臉面部特征的檢測和追蹤,同時需要用OpenCV的函數(shù)來初始化攝像頭的輸入,再調(diào)用OpenCV函數(shù)CascadeClassifier()對視頻中的面部信息進行分類,需要實時識別,就需要在人臉檢測的程序中加入無限循環(huán),系統(tǒng)關鍵代碼如圖5所示。
3 實驗結(jié)果
搭建好原型系統(tǒng)之后,運行調(diào)試程序,調(diào)試現(xiàn)場如圖6所示。攝像頭會采集人臉信息,傳輸?shù)絇YNQ-Z2開發(fā)平臺中處理,調(diào)用OpenCV視覺庫進行人臉追蹤識別,經(jīng)過HDMI傳輸?shù)斤@示屏中,從圖中可以看到輸出的視頻結(jié)果會用虛線方框和實線方框分別標記出整個人臉的位置和其他器官的位置。當人臉移動時,方框也會隨著人臉移動。
4 結(jié)論
本論文中設計的人臉追蹤檢測系統(tǒng),可以對采集的圖像中分類中人臉信息和其他信息,并將人臉信息框出鎖定。調(diào)用OpenCV計算機視覺庫后出現(xiàn)延時較高,視頻輸出不流暢的現(xiàn)象,在下步中可以針對PYNQ-Z2的邏輯電路進一步的設計,在Vivado HLS中使用C語言編寫加速IP核,對視頻數(shù)據(jù)在PYNQ-Z2中傳輸?shù)倪^程進行加速,提高圖像的傳輸速度。同時,也可以對算法處理過后的視頻圖像單位時間內(nèi)的顯示的幀數(shù)進行加速,來提升圖像的輸出流暢性。
另外,也可以使用PYNQ-Z2對神經(jīng)網(wǎng)絡[7]進行研究,根據(jù)官方提供的資料PYNQ-Z2的內(nèi)部結(jié)構(gòu)可以充分的實現(xiàn)二值化處理以及對BNN[8]進行硬件加速。
參考文獻:
[1]施巍松,張星洲,王一帆,等.邊緣計算:現(xiàn)狀與展望[J].計算機研究與發(fā)展,2019,56(1):69-89.
[2]Ferreira V C, Nery A S, Fran?觭a F M G. A smart disk for in-situ face recognition[C]. 2018 IEEE International Parallel and Distributed Processing Symposium Workshops, 2018: 1241-1249.
[3]戴鎮(zhèn)原.基于PYNQ的人臉識別設計與實現(xiàn)[D].河南:鄭州大學,2018.
[4]Stornaiuolo L, Santambrogio M, Sciuto D. On how to efficiently implement Deep Learning algorithms on PYNQ platform[C]. 2018 IEEE Computer Society Annual Symposium on VLSI, 2018:587-590.
[5]Kstner F, Jan?茁en B, Kautz F, et al. Hardware/Software Codesign for Convolutional Neural Networks Exploiting Dynamic Partial Reconfiguration on PYNQ[C]. 2018 IEEE International Parallel and Distributed Processing Symposium Workshops, 2018:154-161.
[6]Meloni P, Capotondi A, Deriu G, et al. NEURA ghe: Exploiting CPU-FPGA Synergies for Efficient and Flexible CNN Inference Acceleration on Zynq SoCs[J]. ACM Transactions on Reconfigurable Technology and Systems (TRETS),2018,11(3):18.
[7]Carvino A, Coppola T. Heterogeneous implementation of an artificial neural network[D]. New York: State University Of New York,2018.
[8]Blott M, Preu?茁er T B, Fraser N J, et al. FINN-R: An End-to-End Deep-Learning Framework for Fast Exploration of Quantized Neural Networks[J]. ACM Transactions on Reconfigurable Technology and Systems, 2018,11(3):16.