国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA和卷積神經(jīng)網(wǎng)絡的人臉識別系統(tǒng)

2021-07-27 03:52范世朝鄭國強孫國慶韓旭
電子元器件與信息技術(shù) 2021年5期
關(guān)鍵詞:池化層池化人臉

范世朝,鄭國強,孫國慶,韓旭

(河南科技大學信息工程學院,河南 洛陽 471023)

0 引言

常規(guī)的基于FPGA的人臉識別系統(tǒng)大多是利用HDL語言來實現(xiàn),這就要求開發(fā)者熟悉硬件之間的邏輯關(guān)系。為了使軟件開發(fā)者能更方便的參與FPGA開發(fā),Xilinx公司推出了HLS高層次綜合工具和PYNQ系列FPGA開發(fā)板。對于軟件開發(fā)者可以在HLS平臺利用C語言實現(xiàn)邏輯功能,之后高層次綜合會自動將C語言轉(zhuǎn)化為Verilog語言,生成相應的IP核。而PYNQ系列開發(fā)板ARM端內(nèi)置Jupyter notebook網(wǎng)絡服務器,Linux系統(tǒng)和IPython內(nèi)核,可以十分方便的利用Python對生成的IP核進行調(diào)用,大大降低了開發(fā)門檻[1]。

1 人臉識別系統(tǒng)的流程

本文利用PYNQ-Z2開發(fā)板為基礎(chǔ),設(shè)計出一個基于卷積神經(jīng)網(wǎng)絡的人臉識別系統(tǒng),該系統(tǒng)能夠識別輸入的人臉圖像的面部特征,并判斷目標是否是訓練庫中的用戶,如果是會在結(jié)果中標識出目標的名字。該系統(tǒng)的總體架構(gòu)如圖1:

圖1 系統(tǒng)總體架構(gòu)圖

2 主要流程分析

2.1 數(shù)據(jù)集制作

利用Python調(diào)用PC端的攝像頭,實時采集圖像數(shù)據(jù),并進行人臉識別,當識別出人臉時,會自動抓取圖片并進行保存。這里對人臉進行識別的方法是調(diào)OpenCV的cv2級聯(lián)分類器haarcascade_frontalface_alt2.xml,同時在調(diào)用級聯(lián)器時,對級聯(lián)器的detectMultiScal函數(shù)中minNeighbors參數(shù)進行設(shè)置,來設(shè)定需要達到的檢測有效點數(shù),本文需要達到的檢測有效點數(shù)是2,意味著只有連續(xù)兩次識別成功時才會認為識別出了人臉數(shù)據(jù)。同時為了保證后續(xù)進行模型訓練時圖像的大小相同,在識別時設(shè)置保存的人臉圖像大小統(tǒng)一為64×64[2]。

整個數(shù)據(jù)集的制作流程如下:

圖2 數(shù)據(jù)集制作流程

2.2 模型訓練

訓練主要采用的是TensorFlow框架。訓練時,系統(tǒng)輸入層大小是64×64,卷積層有32個3×3大小的卷積核,并使用same方式卷積。池化層與卷積層交替循環(huán),三次池化均為最大池化,大小為2×2。第三層池化層之后是一層全連接層和一層輸出層。經(jīng)8個輸出端的輸出層輸出預測結(jié)果。訓練時選用的激活函數(shù)是ReLU函數(shù),使用TensorFlow自帶的AdamOptimizer優(yōu)化器對模型參數(shù)進行訓練。模型訓練完畢后將生成的模型文件導入Jupyter notebook[3][4]。

2.3 生成bit文件

卷積神經(jīng)網(wǎng)絡的重點在卷積層,池化層和全連接層,其中,全連接層我們通過復用卷積模塊的方式來使用,這樣可以節(jié)省片上資源,只需要將卷積核的大小從3×3改為16×16,但是也要注意一些參數(shù)維度的改變。設(shè)計方案如下:

通過HLS設(shè)計平臺,利用C語言或者C++設(shè)計子函數(shù)實現(xiàn)卷積層和池化層,之后進行高級綜合將其轉(zhuǎn)化為Verilog語言,封裝成IP核。IP核設(shè)計完成后需要設(shè)計block design以使IP核與ARM端通信。這里卷積模塊與池化模塊都通過AXI總線與PYNQ連接,在導入IP核后VIVADO會自動進行連接,連接后的結(jié)果如下:

圖3 block design 設(shè)計

之后將設(shè)計好的block design導出為bit文件和tcl文件,并將導出的bit文件和tcl文件下載到PYNQ開發(fā)板的SD卡中就可以復現(xiàn)人臉識別系統(tǒng)。

2.4 Jupyter notebook設(shè)計

將訓練好的模型文件和生成的bit和tcl文件導入Jupyter notebook后就可以編寫Python代碼復現(xiàn)人臉識別系統(tǒng)。首先需要在Python代碼中導入Overlay以便于調(diào)用制作的卷積層和池化層的函數(shù),之后利用OpenCV識別待檢測圖像的人臉部分,提取出來人臉特征與模型文件進行比對,之后將比對結(jié)果進行輸出即可。

3 硬件仿真和資源占用

本設(shè)計用的仿真策略是通過HLS工具編寫test bench文件對卷積模塊和池化模塊進行仿真驗證。

對于卷積層模塊仿真如下圖所示,使用same方式進行卷積,所謂same方式卷積,即在進行卷積運算會在輸入四周補零之后再進行運算,可以保證輸入和輸出的矩陣大小是等同的,仿真結(jié)果如下:

圖4 卷積模塊仿真

資源占用情況如下,其中DSP:主要用來進行數(shù)字信號處理。LUT是查找表,但是本質(zhì)上就是一個RAM,它把數(shù)據(jù)事先寫入RAM后,每當輸入一個信號就等于輸入一個地址進行查表,找出地址對應的內(nèi)容,然后輸出。FF:觸發(fā)器,一種時鐘信號觸發(fā)時才能動作的存儲單元電路。

圖5 資源占用

對于池化層模塊,使用3×3最大池化,即在3×3的區(qū)域內(nèi)選擇一個最大值進行輸出:

圖6 池化模塊仿真

其中資源占用情況如圖所示:

圖7 資源占用

4 結(jié)論

本文提出了一種基于PYNQ-Z2的FPGA人臉識別系統(tǒng),同時構(gòu)建其軟硬件平臺,使用OpenCV級聯(lián)器進行人臉檢測,使用卷積神經(jīng)網(wǎng)絡訓練模型,利用HLS生成卷積層和池化層的IP核,并利用其仿真工具編寫test bench文件對結(jié)果進行了仿真測試,經(jīng)過測試可知,本文提出的方法能夠滿足實際需求,并無需考慮硬件的邏輯結(jié)構(gòu),顯著降低了開發(fā)難度,同時資源占用較低。

猜你喜歡
池化層池化人臉
基于Sobel算子的池化算法設(shè)計
基于高斯函數(shù)的池化算法
卷積神經(jīng)網(wǎng)絡中的自適應加權(quán)池化
有特點的人臉
卷積神經(jīng)網(wǎng)絡模型研究分析*
一起學畫人臉
基于卷積神經(jīng)網(wǎng)絡的紙幣分類與點鈔
基于深度學習卷積神經(jīng)網(wǎng)絡的人體行為識別研究
基于卷積神經(jīng)網(wǎng)絡和池化算法的表情識別研究
三國漫——人臉解鎖