基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)_第1頁
基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)_第2頁
基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)_第3頁
基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)_第4頁
基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于人臉識別的動態(tài)識別簽到系統(tǒng)設(shè)計與實現(xiàn)DesignandImplementationofDynamicRecognitionCheck-inSystemBasedonFaceRecognition內(nèi)容摘要目標(biāo)檢測(ObjectDetection)是近年來計算機科學(xué)的研究重點,他可以通過識別目標(biāo)的幾何特征,將復(fù)雜的場景分割并針對特定的目標(biāo)進行識別,關(guān)鍵點在于準(zhǔn)確度以及實時性。人臉識別(Facerecognition)則是目標(biāo)檢測中,讓人最為看重的一個子類。一旦我們的人臉識別技術(shù)足夠成熟,意味著我們不再需要其他物理的鑰匙或者是數(shù)碼的密鑰,而是用一張臉,就可以滿足日常生活中的一切。世界上可能有很多相似的人臉,但是絕對沒有完全相同的兩個人。當(dāng)人臉識別技術(shù)足夠成熟,我們完全可以將人臉識別作為身份分類的一個重要指標(biāo)。 在深度學(xué)習(xí)的刺激下,人臉識別有了巨大突破,機器也變得會“思考”。這意味著人臉識別的安全等級將會提高,可以適用于更多安全要求更高的場景,同時人臉識別的研究也可以推動更多神經(jīng)網(wǎng)絡(luò)、圖像處理等的領(lǐng)域發(fā)展。關(guān)鍵詞:□目標(biāo)檢測□人臉識別□深度學(xué)習(xí)Abstract□ObjectdetectionistheresearchfocusofComputerScienceinrecentyears.Itcanrecognizethegeometriccharacteristicsofthetarget,segmentthecomplexsceneandrecognizethespecifictarget.Thekeypointistheaccuracyandreal-time.Facerecognitionisoneofthemostimportantsubcategoriesintargetdetection.Onceourfacerecognitiontechnologyismatureenough,itmeansthatwenolongerneedotherphysicalkeysordigitalkeys,butwithaface,wecanmeeteverythinginourdailylife.Theremaybemanysimilarfacesintheworld,butthereareabsolutelynotwoidenticalpeople.Whenfacerecognitiontechnologyismatureenough,wecantakefacerecognitionasanimportantindexofidentityclassification.Underthestimulationofdeeplearning,facerecognitionhasmadeagreatbreakthrough,andmachineshavebecome"thinking".Thismeansthatthesecurityleveloffacerecognitionwillbeimproved,whichcanbeappliedtomoresceneswithhighersecurityrequirements.Atthesametime,theresearchoffacerecognitioncanalsopromotethedevelopmentofmoreneuralnetworks,imageprocessingandotherfields.Keywords:□objectdetection□facerecognition□recognitionspeed目錄第一章:緒論 第一章:緒論1.1研究背景及意義傳統(tǒng)的目標(biāo)檢測技術(shù)主要是通過幾何特征對圖像進行切割,進而對切割出的素材進行幾何分析,根據(jù)特征將其分類。但是實際使用中,各種物品雜亂無章重疊擺放,部分物品特征會被覆蓋導(dǎo)致目標(biāo)檢測準(zhǔn)確率較低,實用型并不高。而人工智能的到來,為我們展示了不一樣的世界。目前,各種人工智能設(shè)備早已被大眾所接受,各種IOT設(shè)備也已經(jīng)被量產(chǎn)。物聯(lián)網(wǎng)完全可以憑借AI這桿利刃,更上一層樓。人工智能所帶來的不僅僅是全新的人機交互體驗,同時他也帶來了更多技術(shù)工種的就業(yè)機會,人工智能可以跨越多行業(yè)相結(jié)合,也就意味著需要更多的人才去進行智能訓(xùn)練,人工智能就如同當(dāng)初的自動化革命一般為我們的社會注入新的血液。人臉識別技術(shù)早在幾十年前的科幻電影中就已經(jīng)出現(xiàn),跟著機器學(xué)習(xí)的腳步,它也走出電影來到了我們的生活中。傳統(tǒng)的物理密鑰、密碼都存在被盜取的風(fēng)險,而人臉不一樣,就算是雙胞胎之間也不存在一摸一樣的五官角度,因此人臉識別是我們進行身份管理最安全的一項技術(shù)。當(dāng)人臉識別技術(shù)越來越普及,我們的數(shù)據(jù)集會越來越豐富,通過更多的訓(xùn)練,可以讓機器更加的智能,更好的適應(yīng)我們的生活所需。在機器學(xué)習(xí)研究前期,機器算法都比較簡單。在處理較為單一的場景下,有很優(yōu)秀的表現(xiàn)。但當(dāng)涉及到較為復(fù)雜的數(shù)據(jù)衍變時,簡單的算法結(jié)構(gòu)的輸出結(jié)果準(zhǔn)確率極低。例如處理自然信號。在1980年,深度學(xué)習(xí)出現(xiàn)了。它的概念是在對\t"/item/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/_blank"人工神經(jīng)網(wǎng)絡(luò)的過程中所提出的,它的設(shè)計出發(fā)點在于建立一個機器人腦,通過模擬人體大腦的工作過程,來研發(fā)出一整套神經(jīng)網(wǎng)絡(luò)來處理和解析獲取的復(fù)雜數(shù)據(jù),例如影、視、音等。深度學(xué)習(xí)是通過對輸入信號分解并組合低層次的特征,然后用來表示目標(biāo)的特征或者是類別,并將特征輸出。由于各種外界因素的影響,人臉識別的準(zhǔn)度和精度還是不能滿足所有場景的需求。人臉識別在二維上的發(fā)展可能比較完善,但是我們還可以通過三維圖像綜合識別,也可以通過引入時間概念,通過對不同時間段的識別來確定識別對象的身份。因此,人臉識別的道路,還有很長。1.2如何實現(xiàn)人臉識別1.2.1基于幾何特征的人臉識別幾何特征主要為五官的模型差距以及五官之間的距離以及幾何關(guān)系。該算法在理論上容易理解,識別的速度快,原理簡單,所占用的內(nèi)存相對較少,遺憾的是識別率較低,不夠準(zhǔn)確。1.2.2基于特征臉(PCA)的人臉識別方法 特征臉方法是基于K-LT所提出的人臉識別方法,K-LT全稱是Karhunen-Loèvetranslation,他是一個最優(yōu)正交變換,此前用于壓縮圖像文件。通過對N維圖像進行K-LT變換,獲取到一組低次分量。在其中選取重要的分量,然后擴張為線性空間并進行投影,所投影出來空間的即為我們判定是否為相同人臉的一個特征量。特征臉方法的缺點在于它需要大量的訓(xùn)練樣本,才能保證識別精度的一個準(zhǔn)確性,并且完全是通過圖像灰度對特征進行統(tǒng)計的。特征臉方法也有許多不同的版本,適應(yīng)在不同要求的場景下,但大體上原理都是一致的。1.2.3神經(jīng)網(wǎng)絡(luò)的人臉識別方法神經(jīng)網(wǎng)絡(luò)的特點在于輸入變量類型更多,他會根據(jù)輸入值的不同,通過不同的智能算法進行分析,不同于傳統(tǒng)的識別方法一般都需要完整的人臉,但是神經(jīng)網(wǎng)絡(luò)可以通過部分人臉進行分析,并得出結(jié)論。當(dāng)然,結(jié)論可能無法直接利用,卻可以篩選掉一些不符合的人,從而減少我們投入的人工。同時,缺點也十分明顯,需要較多的訓(xùn)練樣本來對神經(jīng)網(wǎng)絡(luò)進行適應(yīng)性學(xué)習(xí),訓(xùn)練樣本的數(shù)量跟識別的精準(zhǔn)度是成正比的。1.2.4彈性圖匹配的人臉識別方法彈性圖匹配的思路是從生物學(xué)的角度出發(fā),定義基本臉型,通過二維拓撲表現(xiàn)出來。同時,該拓撲上圖像所有頂點都作為該臉圖的特征量,可以用來表示該點周圍的線性關(guān)系。其中彈性二字的意思是,允許圖像對比時具有一定的彈性變法,這樣可以克服微表情變化所帶來的識別障礙。通過幾何因素與灰度化特征相結(jié)合,彈性圖匹配被廣泛應(yīng)用在流式處理的在線識別產(chǎn)品上。更重要的是,它并不需要大量的訓(xùn)練樣品進行適應(yīng)性訓(xùn)練。1.2.5LHD的人臉識別方法LHD是一群心理學(xué)家所提出的識別方法,他們認為人類對于輪廓線條的識別精準(zhǔn)度以及速度上并不差,因此他們提出了LHD。它從灰度化的人臉圖中,提取其中的輪廓線,用LDH來表示不同線條之間的距離關(guān)系。更重要的是,LDH沒有建議兩個線段之間的唯一對應(yīng)關(guān)系,因此它可以從多個方面驗證單一線段是否發(fā)生了某種可容忍的變化,用來表示對不同人臉之間的相似程度。從結(jié)果來看,LHD繞過了光照條件以及姿態(tài)變化,因此在這方面他顯示了較良好的識別性能,但是由于輪廓無法體現(xiàn)人臉表情,因此它在表情處理方面識別效果并不如人所意。1.2.6SVM的人臉識別方法SVM中文名是支持向量機,在近幾年,他也進入了智能識別領(lǐng)域的研究者眼中。通過支持向量機,用學(xué)習(xí)機的泛化能力換取更高的計算性能。SVM在識別過程中可以幫助我們將識別人臉分解為多個特征變量,進而根據(jù)特征變量來對人臉特征進行比對得出人臉識別的結(jié)果。通過SVM可以提高人臉識別的識別率,但同大多數(shù)識別方法一樣,SVM需要大量的訓(xùn)練樣本,而在實際應(yīng)用中訓(xùn)練樣本數(shù)量往往不足。并且SVM的訓(xùn)練過程耗時長,算法種類也有各有千秋,因此該方法并沒有一個統(tǒng)一的定論。1.3本文的主要工作本文從目標(biāo)檢測出發(fā),針對人臉識別進行研究,講述了人臉識別的研究意義以及發(fā)展方向。著重介紹了深度學(xué)習(xí)對于人臉識別研究的巨大幫助,深度學(xué)習(xí)讓人臉識別能夠更加智能的識別,增加識別的速度以及精度。人臉識別目前已經(jīng)廣泛應(yīng)用在企業(yè)打卡簽到以及部分智能家居產(chǎn)品上了,但部分特殊的場景還是沒有采用人臉識別,而是利用更精密的識別手段諸如瞳孔或者物理密鑰這種形式。這主要是由于人臉識別的缺點比較顯而易見,它存在被欺騙的可能性。同時,針對臉部豐富的表情變化以及外界環(huán)境光照等不可預(yù)見的因素,人臉識別可能會受到影響、或許是識別速度過慢或者是無法正常識別等問題。 本文簡單地實現(xiàn)了一個動態(tài)人臉識別的簽到系統(tǒng),識別流程大抵是先對素材庫中的人臉預(yù)處理,以包含人臉特征的二維數(shù)組這種形式緩存下來,在打開攝像頭進行識別的時候提取關(guān)鍵幀的人臉并處理為測試數(shù)據(jù),將其與緩存中的素材集進行對比,根據(jù)相對應(yīng)的閾值找到素材庫中對應(yīng)的人名,保存在簽到名單中。當(dāng)攝像頭關(guān)閉時將簽到名單保存為TXT在項目根目錄中。對于預(yù)處理素材庫中的素材這一步,被處理過的素材會緩存在內(nèi)存中,因此當(dāng)素材過多時對內(nèi)存資源要求較高。本文一共分為四個章節(jié):第一章:緒論,針對人臉識別與深度學(xué)習(xí)的結(jié)合,人臉識別煥發(fā)了活力,介紹了人臉識別的多種方式及其效率以及人臉識別對科技生活的巨大幫助。第二章:擁有深度學(xué)習(xí)新特性的人臉識別與傳統(tǒng)的人臉識別相比的優(yōu)勢所在。第三章:通過face_recognition實現(xiàn)了一個動態(tài)的人臉識別簽到系統(tǒng),擁有在線添加素材、實時人臉識別、導(dǎo)出簽到人員表等功能。第四章:如何突破現(xiàn)在人臉識別效率與準(zhǔn)確率無法并取的現(xiàn)狀。第五章:結(jié)論與展望。第二章:人臉識別的新特性-深度學(xué)習(xí)2.1深度學(xué)習(xí)我們將深度學(xué)習(xí)分為“深度”“學(xué)習(xí)”兩個過程來理解:學(xué)習(xí)的詞義解釋是指通過閱讀、聽講、思考、研究、實踐等途徑獲得知識或技能的過程。在深度學(xué)習(xí)中,其實也差不多,只是我們的輸入值不再是通過聽講、思考等動作,而是換成了機器能夠讀取的一個個數(shù)據(jù)集。而深度的意思是,從輸入值到輸出值這個過程中,所要經(jīng)歷的各個計算過程,它們各自聯(lián)系,由淺入深,最終輸出我們想要的數(shù)據(jù)。而這個計算過程,有好有壞,有的效率高輸出值缺不準(zhǔn)確;有的效率低,輸出值卻準(zhǔn)確。因此,我們可以形象的稱這個過程為“學(xué)習(xí)策略”,好的學(xué)習(xí)策略雖然需要花費大量時間去規(guī)劃,但是他的結(jié)果是足夠準(zhǔn)確的;不好的學(xué)習(xí)策略會導(dǎo)致錯誤,會讓學(xué)習(xí)過程走更多的彎路。學(xué)術(shù)界嘗試模擬人腦,完成一套計算機能夠理解的學(xué)習(xí)策略,他被稱之為“神經(jīng)網(wǎng)絡(luò)”。在人的大腦皮層中,是由一個一個神經(jīng)元所組成的一個大的神經(jīng)網(wǎng),所以神經(jīng)網(wǎng)絡(luò)也是模仿這個概念去設(shè)計。如圖中的輸入值,x1、x2、x3,在經(jīng)過包括輸入層的四層結(jié)構(gòu)之后,輸出了我們所期望看到的結(jié)果,這就是一個簡單的神經(jīng)網(wǎng)絡(luò)。其中L1跟l4分別是輸入層和輸出層,l2、l3則是隱藏的處理層,越是復(fù)雜的運算,所需要的處理層就越多,同時每個處理層所包含的參數(shù)也就越多,因此也就導(dǎo)致整個神經(jīng)網(wǎng)絡(luò)的規(guī)模呈現(xiàn)一個非線性的擴大??偨Y(jié)一下,深度學(xué)習(xí)就是是通過多層次的計算以及分析,通過由淺入深,獲取所需要的輸出值的過程。而神經(jīng)網(wǎng)絡(luò),則是我們通過分析整個運算,所規(guī)劃的由各種參數(shù)與處理層所組成的一個大型的計算網(wǎng)絡(luò),我們可以通過這個計算網(wǎng)絡(luò)實現(xiàn)輸入值到輸出值的一個轉(zhuǎn)變。2.2深度學(xué)習(xí)與人臉識別的二次結(jié)合傳統(tǒng)的人臉識別模型一般為圖2-2,通過對比提取到的cnn特征作為判斷的依據(jù),而當(dāng)深度學(xué)習(xí)與人臉識別二次結(jié)合,人臉識別走出了另一條全新的道路。深度學(xué)習(xí)可以在通過多次訓(xùn)練后,訓(xùn)練出一種類人腦的一種思維方式,只要樣本數(shù)足夠多的,理論上可以像大腦一般準(zhǔn)確分析思考。他會根據(jù)多個數(shù)據(jù)集的結(jié)果,微調(diào)每個數(shù)據(jù)對于最后結(jié)果的判定占比。如圖2-2-2,圖像之間的數(shù)值就是歐式空間中的距離,該數(shù)據(jù)越低,證明兩張照片為同個人的可能性越高,訓(xùn)練的樣本數(shù)越高,照片之間的距離參數(shù)也會改變,趨近于真相。圖2-2-1圖2-2-22.2.1VGG模型最初VGG并不是用作為圖像分類識別訓(xùn)練的神經(jīng)網(wǎng)絡(luò),它是由牛津大學(xué)科學(xué)工程系發(fā)布,用來探究圖像分類過程中網(wǎng)絡(luò)深度是如何影響識別的準(zhǔn)確率以及精度的。最初的VGG-16(VGG-Very-Deep-16CNN),從全稱中我們也可以看出發(fā)布者對于VGG-16的研究深度標(biāo)準(zhǔn)之高,VGG不同于傳統(tǒng)的卷積網(wǎng)絡(luò)模型,他的卷積層與池化層并不是一一對應(yīng)的關(guān)系,規(guī)定整個模型中有5個池化層,他們分別與一部分卷積層相關(guān)聯(lián),可以從圖2-2-3中看到池化層的分配關(guān)系。VGG按卷積層的數(shù)量劃分命名,最少的由3個全連接層+8個卷積層組成,命名為VGG11;最多則由3個全連接層+16個卷積層組成,命名為VGG19。圖2-2-3當(dāng)然,作為一個曾在ImageNet上大放光彩的模型,它并沒有那么簡單。它的結(jié)構(gòu)設(shè)計也并不是一成不變,我們完全可以用全卷積網(wǎng)絡(luò)的概念對他進行改造,將首個全連接層改為7x7其余的全連接層改為1x1。在VGG之前,沒有其他的神經(jīng)網(wǎng)絡(luò)模型能夠做到在突破10層的情況下,保證效果良好,不受影響。VGG雖然突破了網(wǎng)絡(luò)深度,卻沒有徹底解決網(wǎng)絡(luò)深度所帶來的一系列問題。當(dāng)網(wǎng)絡(luò)層數(shù)過多以后,同樣會出現(xiàn)梯度性能下降等問題??偟膩碚fVGG在剛提出的時候也是受到推崇,但是隨著時間的流逝,越來越多的更加優(yōu)秀的訓(xùn)練模型被提出,VGG也就不那么耀眼了。2.2.2優(yōu)圖祖母模型祖母模型提出之初,就已經(jīng)決定了要成為一個百寶箱,它并不特別指代一種深層的神經(jīng)網(wǎng)絡(luò)模型,它是一個具有相同結(jié)構(gòu)特征的神經(jīng)網(wǎng)絡(luò)模型的集合。在不同的應(yīng)用場景下,優(yōu)圖祖母模型可以提供不同的神經(jīng)網(wǎng)絡(luò)模型,完成所需要實現(xiàn)的效果。因此,也有人叫它優(yōu)圖祖母模型族。目前,最流行的深層神經(jīng)網(wǎng)絡(luò)模型(圖2-2-4)從結(jié)構(gòu)上劃分一共有三種:1.單支型(如AlexNet,VGGNet);2.雙分支型(如ResNet);3.多分支型(如GoogleNet)。直線型結(jié)構(gòu)設(shè)計最為簡單,但當(dāng)網(wǎng)絡(luò)深度過深會出現(xiàn)性能爆炸或性能消退等問題,同時由于結(jié)構(gòu)單一,他也缺乏改造性。局部多分支型具有較強的計算能力和較高的計算效率,但其設(shè)計也最為復(fù)雜,設(shè)計所耗費的人力物力較多。結(jié)合以上兩點,祖優(yōu)圖最終采用雙分支型這種折中的架構(gòu)來構(gòu)建祖母模型族。雙分支型本身具有很強的學(xué)習(xí)能力,也有許多采用該結(jié)構(gòu)的訓(xùn)練集在比賽中獲獎;其次他的結(jié)構(gòu)設(shè)計較為簡單,前期人力消耗可控,最大的特點之一就是識別能力與神經(jīng)網(wǎng)絡(luò)的深度是一個正相關(guān)的一個關(guān)系,這意味著我們在針對不同的應(yīng)用場景的多個模型進行識別訓(xùn)練的時候,完全可以通過控制網(wǎng)絡(luò)深度來應(yīng)對不同的需求。為了滿足用戶的識別需求,一般會要求獲取用戶最大的數(shù)據(jù)集進行訓(xùn)練,以保證神經(jīng)網(wǎng)絡(luò)模型的可用性。圖2-2-4祖母模型在近期也在識別流程上進行了一次較大的變動:流程的變更主要是由于遷移學(xué)習(xí)的提出,遷移學(xué)習(xí)是人工智能領(lǐng)域所提出,用來解決不同的處理場景下訓(xùn)練時長過長的問題,而神經(jīng)網(wǎng)絡(luò)模型完全可以通過遷移學(xué)習(xí),減少訓(xùn)練所花費的時間。簡單點來講,就是將整個訓(xùn)練過程分為:1、預(yù)訓(xùn)練(pre-train);2、精細化調(diào)整(fine-tune)。針對人臉識別場景,咱們只要將已被訓(xùn)練完成的優(yōu)圖祖母模型針對新場景上的新數(shù)據(jù)進行精細化調(diào)整,就滿足新場景的一個識別需求。2.3本章總結(jié)本章介紹了VGG以及優(yōu)圖祖母模型兩種人臉識別模型,VGG和優(yōu)圖祖母模型。VGG是由牛津大學(xué)科學(xué)工程系發(fā)布,用來探究圖像分類過程中網(wǎng)絡(luò)深度是如何影響識別的準(zhǔn)確率以及精度的。在研究過程中,人們用其進行識別訓(xùn)練,憑借著VGG結(jié)構(gòu)清晰簡潔的優(yōu)點,取得了不錯的成效。同時,通過使用多個小型濾波器代替正常的濾波器,獲得了更好的性能,這也就印證了:通過不斷加深網(wǎng)絡(luò)結(jié)構(gòu)可以提升性能。但是VGG對計算資源的要求是非常高的,由于使用了大量的參數(shù),它比其他的深度學(xué)習(xí)模型需要占用更多內(nèi)存。其中,大部分參數(shù)來自全連接層。但是,根據(jù)部分實驗結(jié)果的效果看來,就算去除掉所有的全連接層,他的性能也沒有太大的影響,這樣就顯著的降低了參數(shù)的數(shù)量。優(yōu)圖提出的祖母模型在我看來,是未來深度學(xué)習(xí)的一個主流。優(yōu)圖祖母模型的核心,就是通過大量的,各式各樣的樣本,來訓(xùn)練出一個龐大的數(shù)據(jù)集集合。該集合可以用于多處使用(如人臉識別、目標(biāo)檢測、動態(tài)跟蹤、自動駕駛等),并且近年遷移學(xué)習(xí)提出讓祖母模型族成型的可能性大大提升,進行基礎(chǔ)模型的預(yù)訓(xùn)練,在特定任務(wù)上對模型進行精細化調(diào)整。這樣一來,大大優(yōu)化了祖母模型對于特定場景訓(xùn)練的流程,減少訓(xùn)練時長,可以完成更多的訓(xùn)練。目前,優(yōu)圖祖母模型也已經(jīng)投入應(yīng)用中,并且取得了不錯的成果,我們可以在騰訊云的AI人臉識別產(chǎn)品中對第三代優(yōu)圖祖母模型進行測試。:動態(tài)人臉識別簽到系統(tǒng)實現(xiàn)3.1實現(xiàn)思路首先,一個可以上線的簽到系統(tǒng)最少要有以下三個功能:1、人像素材上傳2、通過攝像頭設(shè)備對比素材庫進行識別3、保存簽到成功的人像名單其中1、3我通過Python的一些自帶庫實現(xiàn)了,核心的識別功能我選擇了github上的一個開源項目FaceRecognition,通過對其進行二次開發(fā)實現(xiàn)了動態(tài)人臉識別簽到系統(tǒng)實現(xiàn)。3.2算法實現(xiàn)3.2.1環(huán)境依賴 根據(jù)FaceRecognition的開發(fā)文檔,該項目的運行環(huán)境支持linux/樹莓派,但是我的設(shè)備系統(tǒng)環(huán)境為win10,通過查找資料后,我找到了一個可以在win10上運行的安裝方式:1、安裝Anaconda2、通過Anaconda安裝CMake3、安裝dilb4、成功安裝facerecognition3.2.2實現(xiàn)普通的人臉識別 想實現(xiàn)人臉識別,首先要解決的就是如何找到畫面上的所有人臉。在人臉識別的初期,這個問題是第一個被提出的,一時間有出現(xiàn)了許多識別的算法。 根據(jù)不同的知識體系出發(fā),大抵上可以分為人工智能、神經(jīng)網(wǎng)絡(luò)、圖像處理、模式識別等多種識別方法,雖然出發(fā)點并不一致,但最終都是采用了特征臉方法來實現(xiàn)人臉識別。 特征臉方法利用分析法,將人臉圖像分解并提取特征樣本。它實際上就相當(dāng)于將人臉化為一組組向量,然后將提取的特征樣本與參考庫中所提取的特征樣本進行比對,根據(jù)匹配的特征樣本數(shù)取最高來找到識別度最高的人臉。由于特征樣本在返回時,還具有人臉的一定特征,因此我們也叫特征樣本為“特征臉”。圖3-2-1 從圖3-2-1中我們可以看到,我們可以將一副人臉圖像分解成一組權(quán)值向量,然后利用向量為單位找到距離最小對應(yīng)的人臉圖像的身份作為測試人臉圖像的身份。這如同派出所使用的素描畫嫌疑人畫像的過程,以一個基礎(chǔ)臉型為出發(fā)點,然后畫出不同的眼睛、嘴巴等五官給目擊者確認,逐漸拼湊出一張疑似嫌疑人的一張圖像。電腦實現(xiàn)的過程大抵是一致的,只是他的五官是以特征樣本的抽象形式體現(xiàn)的。 而在faceRecognition中,通過load_image_file()函數(shù),可以把實現(xiàn)圖片導(dǎo)入,而后只需要把導(dǎo)入的圖片數(shù)據(jù)傳入face_locations()識別圖片中的人臉的位置,該函數(shù)的返回值為一個列表,其包含多個元組,代表著人臉的位置信息。接下來,我將展示演示所用到的圖片素材:素材3.2.1實現(xiàn)的代碼如下:importface_recognition

image=face_recognition.load_image_file("素材3.2.1.jpg")

face_locations=face_recognition.face_locations(image)

print(face_locations)讓我們來看下執(zhí)行的結(jié)果: 我們可以觀察到,執(zhí)行結(jié)果返回了六個元組,每個元組中的數(shù)據(jù)代表的正是每張臉的位置信息,四個像素級的位置點把人臉圈起來了。這樣一樣,我們也就成功的找到了所有的人臉。 接下來的問題,就在于如何進行人臉比對。而人臉識別的實現(xiàn)則是依賴“彈性圖匹配”這種方法。彈性圖匹配的思路是忽略人與人之間五官特征的角度和長度,更多的將關(guān)注點放在圖像變換后的不變性,所以它還有另一個名字“橡皮泥幾何學(xué)”。它以一個人臉拓撲概括所有的人臉,根據(jù)這個拓撲結(jié)構(gòu)劃分基準(zhǔn)點。圖3-2-2 每次進行識別,我們需要對識別圖像人臉進行拓撲建模,獲取特征向量。同時,讀取素材庫中已有的人臉?biāo)鶎?yīng)的特征向量進行比對,找到相似程度最高的一張圖。然后以此圖建立拓撲,進行更多特征向量的比對,進而找到測試人臉的身份。 在faceRecognition中,只需要將需要對比的兩張照片所對應(yīng)的編碼作為參數(shù)傳入face_pare_faces(),該函數(shù)會返回值的類型為boolean,該值為TRUE則證明大概率為同個人,為FALSE則大概率不是同一個人。該函數(shù)的判定闕值可以在傳入編碼時使用tolerance關(guān)鍵字加上闕值限制作為第三個參數(shù)進行修改,目前合理的闕值大概為0.73左右,可以盡可能的做出準(zhǔn)確的判斷。接下來,我展示下演示所用的素材:實現(xiàn)的代碼如下:importface_recognition

known_image=face_recognition.load_image_file("素材3.2.2.jpg")known_image=face_recognition.load_image_file("unknown.jpg")

unknown2_image=face_recognition.load_image_file("unknown2.jpg")

lhf_encoding=face_recognition.face_encodings(known_image)[0]

unknown_encoding=face_recognition.face_encodings(unknown_image)[0]

unknown2_encoding=face_recognition.face_encodings(unknown2_image)[0]

results=face_pare_faces([lhf_encoding],unknown_encoding)

results2=face_pare_faces([lhf_encoding],unknown2_encoding)

print(results)

print(results2)執(zhí)行的結(jié)果如下:我們可以看到,第一次對比的結(jié)果集為TRUE素材的選取一張為我高二時的相片、一張為我大三時的照片,經(jīng)過五年時間的成長,依舊可以識別成功;而第二次對比的結(jié)果集為FALSE,素材的選取為明星吳彥祖,對比的結(jié)果也是正確的。 至此,已經(jīng)成功實現(xiàn)了靜態(tài)的人臉檢測、識別的功能。3.3完善動態(tài)人臉識別簽到系統(tǒng)3.3.1從視頻流中取幀進行識別 在這個方面,我選用了opencv處理視頻流流,之后通過獲取視頻流的每一幀通過3.2中的人臉識別相關(guān)代碼進行識別,在原幀中圈出檢測到的人臉并且在框中標(biāo)出識別的結(jié)果,具體實現(xiàn)的代碼如下:defaction():

video_capture=cv2.VideoCapture(0)

#引用素材庫生成流

addpeople.Reading()

addpeople.change()#測試根據(jù)list生成流

known_face_encodings=addpeople.known_face_encodings#賦值

known_face_names=addpeople.known_face_names#賦值

#Initializesomevariables

face_locations=[]

face_encodings=[]

face_names=[]

process_this_frame=True

s=set()

arrivename=[]

whileTrue:

#Grabasingleframeofvideo

ret,frame=video_capture.read()

#Resizeframeofvideoto1/4sizeforfasterfacerecognitionprocessing

small_frame=cv2.resize(frame,(0,0),fx=0.25,fy=0.25)

#ConverttheimagefromBGRcolor(whichOpenCVuses)toRGBcolor(whichface_recognitionuses)

rgb_small_frame=small_frame[:,:,::-1]

#Onlyprocesseveryotherframeofvideotosavetime

ifprocess_this_frame:

#Findallthefacesandfaceencodingsinthecurrentframeofvideo

face_locations=face_recognition.face_locations(rgb_small_frame)

face_encodings=face_recognition.face_encodings(rgb_small_frame,face_locations)

face_names=[]

forface_encodinginface_encodings:

#闕值設(shè)置在這里

matches=face_pare_faces(known_face_encodings,face_encoding,tolerance=0.75)

name="Unknown"

ifTrueinmatches:

first_match_index=matches.index(True)

name=known_face_names[first_match_index]

face_names.append(name)

process_this_frame=notprocess_this_frame

#Displaytheresults

for(top,right,bottom,left),nameinzip(face_locations,face_names):

#Scalebackupfacelocationssincetheframewedetectedinwasscaledto1/4size

top*=4

right*=4

bottom*=4

left*=4

#Listidentifiedq

ifname!="Unknown":

s.add(name)

arrivename.append(name)

else:

pass

#Drawaboxaroundtheface

cv2.rectangle(frame,(left,top),(right,bottom),(0,0,255),2)

#Drawalabelwithanamebelowtheface

cv2.rectangle(frame,(left,bottom-35),(right,bottom),(0,0,255),cv2.FILLED)

font=cv2.FONT_HERSHEY_DUPLEX

cv2.putText(frame,name,(left+6,bottom-6),font,1.0,(255,255,255),1)

#Displaytheresultingimage

cv2.imshow('Video',frame)

#按Q推出ifcv2.waitKey(1)&0xFF==ord('q'):

print(s)

savelist.save(arrivename)

break

#Releasehandletothewebcam

video_capture.release()

cv2.destroyAllWindows()實現(xiàn)的效果如下:其中l(wèi)hf為我上傳的圖片名,通過掃描素材庫文件名獲取。3.3.2實現(xiàn)上傳素材、導(dǎo)出簽到表通過selectPath讀取素材的路徑之后通過提交按鈕對原素材進行素材提交,相關(guān)代碼如下:defsubmit():

str=path.get()

addr2=str.replace('/',r'\\')

print(addr2)

f=open(addr2,'rb')

f_str=base64.b64encode(f.read())

f.close()

str=f_str

file_str=open('Materialbank\\%s.jpg'%TEXT.get(),'wb')

file_str.write(base64.b64decode(str))

file_str.close()將識別的列表進行去重之后保存在TXT文件中,實現(xiàn)了簽到表的導(dǎo)出,相關(guān)代碼如下:defsave(arrivename):

arrivename2=list(set(arrivename))

data=open("text.txt",'w+')

print(arrivename2,file=data)

data.close()3.3.3使用演示 運行項目,我們可以看到使用的UI界面(圖3-3-1),填寫完上傳的資料后,可以通過路徑選擇按鈕對想要上傳的原圖像進行上傳(圖3-3-2),上傳的新文件的名字為資料的名字,后綴為JPG格式,完成素材上傳后,點擊打開攝像頭后即可開始簽到過程,需在攝像頭前等待1~2s后在人像臉上標(biāo)注出名字后(圖3-3-3),完成簽到。等到所有成員完成簽到后,按“Q”退出攝像頭界面后,系統(tǒng)會將成功簽到的人員列表存放在根目錄中,名字為text.txt(圖3-3-4),至此整個程序的演示結(jié)束。圖3-3-1圖3-3-2圖3-3-3圖3-3-43.4本章小結(jié)本章主要展示了我在開發(fā)過程中的思路以及所利用的一些demo測試,并最終實現(xiàn)了一個簡單的人臉識別項目。程序是利用python進行開發(fā),使用了facerecognition項目。從最初的環(huán)境搭建到整個開發(fā)過程中,所遇到的一些問題以及解決方案都在本章中有體現(xiàn)。在視屏處理方面,我使用的是opencv,利用截取關(guān)鍵幀來實現(xiàn)從視屏流到人臉截圖這種形式的轉(zhuǎn)變,最終利用人臉圖進行識別并返回結(jié)果,標(biāo)出人臉身份。整個流程思路好還是比較清晰的,最終實現(xiàn)的效果比較簡陋,但基礎(chǔ)的功能也還可以。由于素材庫緩存的原因,該程序?qū)?nèi)存資源有一定的要求,因此如果有復(fù)現(xiàn)的需求,需要保證內(nèi)存在8G,并且素材庫素材不可過多;如果有大型應(yīng)用場景,建議采用分布式的架構(gòu),將素材分布于不同的節(jié)點上,這樣既能保證性能又能滿足使用的需求。目前,市面上的大型IT企業(yè)都有自己的人臉識別產(chǎn)品,并且已經(jīng)投入使用了。我的程序無法與他們相提并論,但是對于初學(xué)者來說,可以經(jīng)由這個項目入手,對于理解人臉識別或者是深入學(xué)習(xí)更多的物品識別等會有一定的好處。開發(fā)所利用的Demo以及項目使用的代碼在本章中都有展示,UI界面較簡陋,可以自行改進。第四章:總結(jié)與展望4.1論文總結(jié)人臉識別技術(shù)是一種生物識別技術(shù),自二十多年前的科幻劇中就有了它的出現(xiàn),相對于其他生物識別技術(shù),他的效果更直觀、使用更簡便,并且相對于物理密鑰或者是電子密鑰來說,他不具備有被盜竊的可能性。但人臉識別技術(shù)在提出之初也被種種問題所環(huán)繞:1、相似的人臉是否會解鎖;2、拿著圖片解鎖;3、會不會因為化妝或者年齡變大而無法解鎖等。這些問題截至目前,也基本上已經(jīng)解決了。因此,現(xiàn)階段的研究方向更多的是從兩方面出發(fā):1、提高識別的精準(zhǔn)度;2、在復(fù)雜環(huán)境下保證識別可行性。目前的檢測方法有許多,但是整體的安全等級還是不足以滿足特定場景的需求,因此我們需要將更多的識別因素加入到人臉識別中,如:時間,空間等。更多的因素的加入會導(dǎo)致資源占用更高,但是隨著云計算的發(fā)展,計算資源并不是一個難以解決的問題,通過深度學(xué)習(xí)模型來訓(xùn)練一套安全系數(shù)更高的人臉識別體系。我們的人臉識別系統(tǒng)會越來越智能,我們可以通過人臉識別完成更多的身份管理,在未來的世界中,我們不再需要一個身份證,臉就是我們的通行證。本文介紹了VGG模型,現(xiàn)在我們下載VGGface模型中,已經(jīng)具備有一個較為成熟的識別體系了,在經(jīng)過特定圖片集的訓(xùn)練后,其的識別準(zhǔn)確率也不低。但是我們在使用時,還是應(yīng)該根據(jù)自己的使用環(huán)境,對其進行適應(yīng)性訓(xùn)練,這樣可以滿足我們更高的精準(zhǔn)度需求。本文還介紹了優(yōu)圖祖母模型族的宏圖,當(dāng)前優(yōu)圖祖母模型已經(jīng)第三代了,滿足大多數(shù)場景下的應(yīng)用了,我們可以在騰訊云的AI欄目里測試祖母模型,感受百寶袋的各種智能算法。本文使用了一個簡單的開源項目face_recognition,實現(xiàn)了一個動態(tài)識別人臉的簽到系統(tǒng),通過攝像頭輸入視頻流,以幀為單位與素材庫中的圖片進行對比,當(dāng)匹配幾率高于0.75時,則系統(tǒng)認證為同一個人。在素材庫不多時,該系統(tǒng)在一定程度上是可信的。但是一旦素材庫過多,就會導(dǎo)致識別結(jié)果可信度降低。因此,在人臉識別的道路上,該項目還做不真正的普及使用,但是在機器學(xué)習(xí)的幫助下,我相信有朝一日可以真正的實現(xiàn)智能化識別人臉。4.2展望本文通過探討傳統(tǒng)目標(biāo)檢測和基于深度學(xué)習(xí)的人臉識別算法展開,在開發(fā)過程中學(xué)習(xí)到了不少的東西,但程序還是存在不少的缺點,為了解決這些問題,今后將從以下幾個方面對程序進行改進:1、尋找和替換更合理的算法,改善識別的精準(zhǔn)度以及速度。 2、嘗試替換視頻流的輸入格式,以2S為間隔,同時將在該區(qū)間內(nèi)的所有幀與素材庫進行對比,當(dāng)所有對比的結(jié)果加起來達到某個閾值時,才認為兩者匹配。這樣一來,可以大大加強識別的可信度。3、設(shè)計合理的UI界面,提升用戶的視覺效果體驗。隨著云計算等計算平臺的發(fā)展,計算資源已經(jīng)不再成為難題,未來會有更多優(yōu)秀的識別算法被提出,一“臉”行天下,就在不遠的未來。參考文獻基于深度學(xué)習(xí)的人臉識別技術(shù)研究錢程基于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的統(tǒng)計機器翻譯研究楊南基于局部特征和進化算法的人臉識別李根優(yōu)圖祖母模型的「進化」/jjjndk1314/article/details/80579552VGG卷積神經(jīng)網(wǎng)絡(luò)模型解析/gloomyfish/2105427計算機到底是怎么識別人臉的騰訊科技致謝四年前,我對大學(xué)迷茫而恐懼;四年后,我如紅日初升,意氣風(fēng)發(fā);四年前,覺得求學(xué)異鄉(xiāng)是離親別友;四年后,我和志同道合的伙伴談笑風(fēng)生;四年前,我認為小安是福、隨遇而安;四年后,我身似山河,敢問天地試鋒芒;斗轉(zhuǎn)星移,大學(xué)四年似乎改變了一切。唯一不變的,是我對“改變”的追求。一謝師長,言傳身教。大學(xué)四年,學(xué)的東西雜且多,雖無法做到樣樣精通,時至今日也敢于出口說自己大都有所涉獵。對我影響最大的是趙元成老師,是他引領(lǐng)我接觸到云計算這個行業(yè),并在我蹣跚學(xué)步的過程中引領(lǐng)我前行。時至今日,我也決定在這個行業(yè)繼續(xù)往下走。恩師于我,授我漁魚,高山景行,師之范者。二謝親友,予我歡情。在我最不懂事的時候,家人的鼓勵讓我我成為一名大學(xué)生。我曾以為大學(xué)也不過是求學(xué)的四年,與六年小學(xué)三年初中三年高中并無大區(qū)別。但是,經(jīng)歷過才知道,大學(xué)四年求學(xué)并不是最重要的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論