徐杰 李捍東
摘? 要: OpenCV作為一個(gè)廣為人知的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),應(yīng)用于各種領(lǐng)域,但是其在門禁系統(tǒng)上的應(yīng)用還比較罕見(jiàn)[1],本文主要研究了Adaboost與MTCNN算法,并以O(shè)penCV視覺(jué)庫(kù)與STC89c51單片機(jī)作為核心,采用MFC構(gòu)建了整個(gè)人臉識(shí)別門禁系統(tǒng),實(shí)現(xiàn)了實(shí)時(shí)的人臉檢測(cè)與識(shí)別功能,使用單片機(jī)開(kāi)發(fā)板模擬門鎖的運(yùn)轉(zhuǎn)。
關(guān)鍵詞: OpenCV; 單片機(jī); MFC; 人臉檢測(cè); 人臉識(shí)別; 門禁系統(tǒng)
中圖分類號(hào):TP317.4? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2022)05-63-03
Access control system based on MCU and OpenCV
Xu Jie, Li Handong
Abstract: As a well-known cross-platform computer vision library, OpenCV is used in various fields, but its application in access control systems is relatively rare. In this paper, Adaboost and MTCNN algorithms are studied. With the OpenCV vision library and STC89c51 microcontroller as the core, the face recognition access control system is built with MFC, and the real-time face detection and recognition function is realized. A simulation system was developed.
Key words: OpenCV; MCU; MFC; face detection; face recognition; access control system
引言
21世紀(jì),傳統(tǒng)的門鎖已不能滿足人們對(duì)于安防的需求,且隨著生物特征識(shí)別技術(shù)與計(jì)算機(jī)視覺(jué)技術(shù)的發(fā)展,可以通過(guò)特征提取算法提取人臉的信息,人臉檢測(cè)與識(shí)別成為門禁系統(tǒng)的一種實(shí)現(xiàn)方案[2,3]。
生物特征提取即通過(guò)相應(yīng)的光、聲音傳感器,采集生物的視覺(jué)與聲音信息,并用一組能特征向量來(lái)表示它的特征信息,方便計(jì)算機(jī)進(jìn)行識(shí)別。目前由特征提取發(fā)展而來(lái)的識(shí)別方式有:虹膜識(shí)別、掌形識(shí)別、指紋識(shí)別、視網(wǎng)膜識(shí)別、基因識(shí)別、人臉識(shí)別等。其中指紋識(shí)別、虹膜識(shí)別成本較高,不利于商業(yè)化,人臉識(shí)別作為一個(gè)高效且低成本的方式被廣泛接受。而單片機(jī)作為一個(gè)低成本的控制器,支持各種復(fù)雜外設(shè),是門禁控制的不二選擇[4]。
本文通過(guò)FERET人臉數(shù)據(jù)庫(kù)來(lái)分析研究Haar、MTCNN算法,比較它們的檢測(cè)率與實(shí)時(shí)性,選擇一個(gè)最優(yōu)的算法,并配合MFC框架與STC89C51核心板實(shí)現(xiàn)人臉識(shí)別門禁系統(tǒng)。
1 人臉檢測(cè)分析與研究
人臉檢測(cè)就是對(duì)任意給定的一副圖像,通過(guò)某種算法對(duì)它進(jìn)行檢索,查找其中是否含有人臉,如果含有人臉,就裁剪出人臉區(qū)域并返回該人臉區(qū)域圖像。如今最流行的人臉檢測(cè)算法有基于Haar特征的Adaboost算法與基于神經(jīng)網(wǎng)絡(luò)的MTCNN算法。
1.1 Haar-Adaboost算法
Adaboost算法是一種多項(xiàng)式級(jí)的算法,將弱分類器疊加成為一個(gè)強(qiáng)分類器。這種方法是將大量的弱分類器集成在一起,并給每個(gè)分類器增加權(quán)重值,使得分類器能夠自動(dòng)調(diào)整預(yù)設(shè)假設(shè)的錯(cuò)誤率,從而使得系統(tǒng)能夠自動(dòng)選擇最優(yōu)的檢測(cè)路徑。經(jīng)過(guò)多次迭代之后,把弱分類器集成為一種強(qiáng)分類器。該算法有較高的實(shí)時(shí)性和精確度,其性能已經(jīng)在某些商業(yè)系統(tǒng)中得到證實(shí)[5]。
1.2 Haar-Adaboost算法原理
1.2.1 初始化樣本與分類器
分配給每個(gè)樣本相同的權(quán)值。例如有N個(gè)樣本,那么分配給每個(gè)樣本的初始權(quán)值為1/N,并使樣本集通過(guò)學(xué)習(xí)訓(xùn)練得到初始的弱分類器,初始弱分類器為:
⑴
1.2.2 訓(xùn)練弱分類器
將樣本分類,被正確分類的樣本權(quán)值會(huì)下降,而沒(méi)有被正確分類的樣本權(quán)值會(huì)上升。權(quán)值越高的樣本在下一次訓(xùn)練中權(quán)重就越高,相反就越低。如前述,要訓(xùn)練許許多多的弱分類器。在第一個(gè)弱分類器訓(xùn)練完成后,第二個(gè)弱分類器就根據(jù)改變了的樣本權(quán)值繼續(xù)訓(xùn)練分類器,如此迭代下去。公式⑵、公式⑶分別表示被錯(cuò)誤分類的權(quán)值與被正確分類的權(quán)值:
⑵
⑶
1.2.3 構(gòu)造強(qiáng)分類器
將各個(gè)弱分類器組合在一起,構(gòu)建最終的決策分類器。訓(xùn)練弱分類器時(shí),生成的弱分類器被分配了相應(yīng)的話語(yǔ)權(quán)。如果一個(gè)分類器的錯(cuò)誤率高,那么它的話語(yǔ)權(quán)就低,如果一個(gè)分類器的錯(cuò)誤率低,那么它的話語(yǔ)權(quán)就高。話語(yǔ)權(quán)決定了該弱分類器在構(gòu)造強(qiáng)分類器時(shí)占的比例,其構(gòu)造方法為:
⑷
1.3 MTCNN算法
MTCNN算法,全稱Multi-task Convolutional neural Networks,多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)。將人臉的區(qū)域檢測(cè)和人臉檢測(cè)集成在一起,能夠同時(shí)實(shí)現(xiàn)人臉檢測(cè)和人臉對(duì)齊,是一種基于cascade框架的算法。采用了P-Net、R-Net、O-Net三個(gè)級(jí)聯(lián)網(wǎng)絡(luò)與許多卷積神經(jīng)網(wǎng)絡(luò)模型,用較小的卷積核代替了最初使用的大卷積核,擁有較好的運(yùn)算速度[6]。
1.4 MTCNN算法原理
1.4.1 P-Net
把圖像金字塔傳入該建議網(wǎng)絡(luò),使用FCN對(duì)圖像進(jìn)行粗略的邊框標(biāo)定與特征提取,并進(jìn)行Bounding-Box Regression與NMS,對(duì)窗口調(diào)整并過(guò)濾掉大部分不準(zhǔn)確的邊框,把特征信息與三個(gè)卷積核卷積初步判斷該區(qū)域是否存在人臉,生成人臉候選框,并把數(shù)據(jù)傳入改進(jìn)網(wǎng)絡(luò)R-Net。
1.4.2 R-Net
圖像經(jīng)過(guò)P-Net后,留下了許多預(yù)測(cè)窗口。把這些預(yù)測(cè)窗口輸送到R-Net,進(jìn)行候選框的過(guò)濾,R-Net擁有128個(gè)全連接層,能夠更加細(xì)致地過(guò)濾掉非人臉區(qū)域。過(guò)濾后再繼續(xù)Bounding-Box Regression與NMS,進(jìn)一步對(duì)候選框進(jìn)行優(yōu)化,并將結(jié)果傳給O-Net。
1.4.3 O-Net
Output Network,輸出網(wǎng)絡(luò),是MTCNN算法的最后一個(gè)步驟。它是一個(gè)比較復(fù)雜的卷積神經(jīng)網(wǎng)絡(luò),用于甄選出最終的人臉框與人臉特征。甄選結(jié)束后依然進(jìn)行Bounding-Box Regression與NMS進(jìn)行窗口過(guò)濾與調(diào)整第三層輸出網(wǎng)絡(luò)O-Net,作為最終輸出層網(wǎng)絡(luò),它的卷積核是最為復(fù)雜的,通過(guò)人臉判別、人臉區(qū)域邊框回歸、人臉特征定位,最終輸出左上角和左下角的兩個(gè)坐標(biāo)與五個(gè)人臉區(qū)域的特征點(diǎn),作為最終輸出。
1.5 人臉檢測(cè)算法的選取
根據(jù)人臉識(shí)別門禁系統(tǒng)的需要,我們必須甄選出一個(gè)合適的檢測(cè)算法。只有保證了人臉檢測(cè)的準(zhǔn)確性,才能為下一步的人臉識(shí)別打好基礎(chǔ)。Haar算法是傳統(tǒng)的人臉檢測(cè)算法,一直被當(dāng)做人臉檢測(cè)的一個(gè)核心算法。而MTCNN是近年來(lái)發(fā)展起來(lái)的一種新型的神經(jīng)網(wǎng)絡(luò)算法。以下將在這兩種算法中甄選出一個(gè)比較優(yōu)等的算法。
這里用FERET人臉數(shù)據(jù)庫(kù)的部分圖片進(jìn)行測(cè)試,比較兩種算法哪一種速度更快、準(zhǔn)確率更高。FERET是由FERET項(xiàng)目創(chuàng)建的,這個(gè)圖像集合包含了大量的人臉圖。在圖像中,每個(gè)人的姿態(tài)、年齡、光照情況都不同。FERET是目前人臉識(shí)別領(lǐng)域應(yīng)用比較廣泛的一種人臉數(shù)據(jù)庫(kù)。圖1、圖2為同一張圖片用兩種算法分別檢測(cè)的結(jié)果。
MTCNN算法的檢測(cè)精度優(yōu)于Haar算法的,幾乎整張圖片人臉數(shù)據(jù)都能被檢測(cè)到,所以本設(shè)計(jì)選擇MTCNN算法來(lái)進(jìn)行人臉檢測(cè)。
2 人臉識(shí)別門禁系統(tǒng)軟件設(shè)計(jì)
2.1 上位機(jī)軟件設(shè)計(jì)
本設(shè)計(jì)基于MFC構(gòu)建GUI頁(yè)面,并配合OpenCV實(shí)現(xiàn)人臉的檢測(cè)與識(shí)別,人臉檢測(cè)與識(shí)別流程圖如圖3所示,先做圖像的預(yù)處理,并根據(jù)人臉檢測(cè)算法檢測(cè)出人臉區(qū)域,并提取特征,與數(shù)據(jù)庫(kù)數(shù)據(jù)特征進(jìn)行對(duì)比,如果檢測(cè)到人臉數(shù)據(jù)庫(kù)里的人臉數(shù)據(jù),則發(fā)送數(shù)據(jù)給底層單片機(jī)控制器。
2.2 單片機(jī)軟件設(shè)計(jì)
單片機(jī)主要用來(lái)控制門禁的運(yùn)行。本設(shè)計(jì)通過(guò)步進(jìn)電機(jī)來(lái)模擬門禁的運(yùn)行。通過(guò)串口接收程序,接收PC上位機(jī)發(fā)來(lái)的識(shí)別數(shù)據(jù),識(shí)別成功則控制步進(jìn)電機(jī)運(yùn)轉(zhuǎn),多次識(shí)別失敗,則啟動(dòng)報(bào)警程序,軟件設(shè)計(jì)流程如圖4所示。
[開(kāi)始][串口,變量初始化][等待][結(jié)束][串口中斷開(kāi)始][保存串口數(shù)據(jù),
標(biāo)志位清零
] [如果接收數(shù)據(jù)
等于“1”] [如果接收數(shù)據(jù)
等于“0”][串口中斷結(jié)束][步進(jìn)電機(jī)運(yùn)行][FLAG++] [if(FLAG>2)][報(bào)警,F(xiàn)LAG清零] [是] [是] [是]
3 系統(tǒng)測(cè)試與結(jié)果分析
選擇寢室室友作為測(cè)試對(duì)象,檢測(cè)系統(tǒng)的實(shí)時(shí)性與穩(wěn)定性,上位機(jī)應(yīng)用與門禁的模擬測(cè)試結(jié)果如圖5、圖6所示。
經(jīng)實(shí)驗(yàn),該設(shè)計(jì)能夠?qū)崿F(xiàn)人臉檢測(cè)與識(shí)別,精確度達(dá)到基本要求,識(shí)別時(shí)間大約為2秒,報(bào)警與開(kāi)關(guān)門功能均正常運(yùn)行。
4 結(jié)束語(yǔ)
基于FERET人臉數(shù)據(jù)庫(kù)研究對(duì)比了Adaboost與MTCNN的檢測(cè)識(shí)別率,選擇MTCNN作為人臉檢測(cè)算法,采用MFC設(shè)計(jì)GUI界面,實(shí)現(xiàn)了人臉檢測(cè)與識(shí)別,并把檢測(cè)結(jié)果傳輸給STC89C51開(kāi)發(fā)板,模擬了門禁的旋轉(zhuǎn)與報(bào)警。經(jīng)過(guò)系統(tǒng)測(cè)試,驗(yàn)證了該套系統(tǒng)的可行性,可以滿足日常對(duì)門禁系統(tǒng)的基本需求。
參考文獻(xiàn)(References):
[1] 李丕峰,付光健,朱光亞,等.智能門禁群控系統(tǒng)[J].市場(chǎng)周刊
(理論研究),2013(10):132
[2] 孔令釗,唐文靜.基于PCA的人臉識(shí)別系統(tǒng)的研究與實(shí)現(xiàn)[J].
計(jì)算機(jī)仿真,2012,29(6):27
[3] 楊明中,楊平先.基于低秩特征臉與協(xié)同表示的人臉識(shí)別
算法[J].液晶與顯示,2017,32(8):650
[4] 王靜霞.單片機(jī)應(yīng)用技術(shù)(第4版)[M].電子工業(yè)出版社,2019
[5] 邢益銘,野瑩瑩,程立英,等.基于Haar-AdaBoost人臉檢測(cè)
算法的研究[J].裝備制造技術(shù),2020(3):67
[6] 賈小碩,曾上游,潘兵,等.基于改進(jìn)MTCNN網(wǎng)絡(luò)的目標(biāo)人臉
快速檢測(cè)[J].計(jì)算機(jī)工程與科學(xué),2020,42(7):1262
收稿日期:2021-10-27
作者簡(jiǎn)介:徐杰(1995-),男,貴州安順人,貴州大學(xué)電氣工程學(xué)院碩士研究生,主要研究方向:圖像處理。
通訊作者:李捍東(1966-),男,貴州貴陽(yáng)人,碩士,貴州大學(xué)電氣工程學(xué)院教授,主要研究方向:計(jì)算機(jī)控制技術(shù)、嵌入式系統(tǒng)。