基于Python的人臉識別系統(tǒng)的設(shè)計_第1頁
基于Python的人臉識別系統(tǒng)的設(shè)計_第2頁
基于Python的人臉識別系統(tǒng)的設(shè)計_第3頁
基于Python的人臉識別系統(tǒng)的設(shè)計_第4頁
基于Python的人臉識別系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于Python的人臉識別系統(tǒng)的設(shè)計DesignoffacerecognitionsystembasedonPython內(nèi)容摘要人臉識別是本世紀(jì)的一個熱門技術(shù)話題之一。隨著科技飛速發(fā)展。人臉識別技術(shù)已滲透進社會中的各個領(lǐng)域,例如:軍事、醫(yī)療、教育、娛樂等。類似于人臉識別支付、人臉識別登陸、人臉識別認證等功能,我們幾乎每天都在使用。本設(shè)計主要運用Python語言、Opencv(計算機視覺庫)、Tkinter(Python的TkGUI工具包)制作的一個含有人臉識別的一個信息系統(tǒng)。其工作原理為:以含有人臉的圖片為素材,從圖片中提取人臉數(shù)據(jù)的特征值作為識別的標(biāo)準(zhǔn)后,與人臉系統(tǒng)庫中人臉比對,從而識別出圖片中的人物,并執(zhí)行與該人物相關(guān)的一系列功能。關(guān)鍵詞:人臉識別OpencvGUI檢測AbstractFacerecognitionisoneofthehottechnicaltopicsinthiscentury.Withtherapiddevelopmentoftechnology,Facerecognitiontechnologyhasbeeninvariousfieldsinsociety,suchasmilitary,medical,education,entertainment,etc.Similartofacerecognitionpayment,facerecognitionlogin,facerecognitionauthenticationandotherfunctions,weuseitalmosteveryday.ThisdesignmainlyusesthePythonlanguage,Opencv(Thevisionlibraryofcomputer),andTkinter(PythonTkGUItoolkit)todesignaninformationsystemcontainingfacerecognition. Workingprinciple:Itusesthepicturecontainingthefaceasthematerial,extractsthefeaturevalueofthefacedatainthepictureastherecognitionstandard,andthencomparesitwiththefaceinthefacesystemlibrary.Thus,thepersoninthepictureisrecognized,andperformaseriesoffunctionsrelatedtothecharacter.□□Keywords:FacerecognitionOpencvGUIDetection廣東東軟學(xué)院本科生畢業(yè)設(shè)計(論文)目錄TOC\o"1-3"\h\u第一章緒言 第一章緒言1.1選題目的與意義如今時代發(fā)展飛速,從汽車到火車,再從飛機到火箭,科技的進步令人瞠目結(jié)舌。從農(nóng)耕社會到現(xiàn)在的信息社會,我們的生活也逐步邁向小康。但凡事都有其兩面性。在科技進步下,帶來了信息化的社會,但就是在這個信息化的社會下,防止信息的泄露也演變成了國際性的難題之一。據(jù)不完全統(tǒng)計,全世界80%以上的人,他們的個人信息都保存在服務(wù)器中;92%以上的企業(yè)信息都保存在服務(wù)器主機內(nèi)。出于安全性的考慮,國家機密資料更是有很大一部分都需要用加密硬盤進行保存。這些數(shù)據(jù)可充分體現(xiàn)出人們對信息安全性的重視。如今,人們都喜歡使用電子設(shè)備存儲信息。第一、現(xiàn)在的電子設(shè)備越來越小巧,可隨身攜帶;第二、電子設(shè)備體積雖小卻能裝載下大容量的東西;第三、電子設(shè)備不僅存儲空間大,其存儲的內(nèi)容更是多種多樣,不但可以存儲文本、圖片、視頻,還可以存儲三維模型、軟件等。真因為電子設(shè)備的存在,同時也大大提高了信息在人與人之間傳遞的速率。從另一個方位思考,可發(fā)現(xiàn)這些信息同時也蘊含了極高的價值,例如個人的隱私信息、公司的機密信息、國家的機密信息等,所以,人們都很希望這些信息得到嚴(yán)密的保護,希望信息能夠?qū)訉蛹用?,就像是保險箱一樣。也正因人們的需求太大,大大促進了如今的信息技術(shù)行業(yè)。如今的加密方式的種類也很多,我們使用得最多的就是密碼加密,這是利用了混淆技術(shù)原理[8],把一些可識別的信息經(jīng)過某些手段處理后,變成無法識別的信息。這種密碼加密方式僅適用于一些使用率較少的秘密信息,對于一些使用率較高的秘密就顯得不太合適,因為這些秘密每天都要被使用,所以這樣每天反復(fù)的輸入密碼,會顯得十分繁瑣,同時還加劇密碼泄露風(fēng)險。總而言之,類似于密碼保護等身份識別工具已經(jīng)無法滿足社會的要求[15],研究新的身份識別工具是一個必然的趨勢。本次畢業(yè)設(shè)計選擇了人臉識別,以保證用戶的真實性,從而進一步提高管理效率以及管理水平。人臉識別技術(shù)早在20世紀(jì)60年代已有很多科學(xué)家在研究了。但是礙于當(dāng)時的計算機處理速度,人臉識別這一技術(shù)才沒辦法發(fā)揮它的真正的“實力”。在80年代后,計算機的硬件方面大大提高,其處理速度方面也大大提升,人臉識別技術(shù)又被廣大科學(xué)家重新研究,因此,人臉識別有了重大突破,進入真正的自動識別階段。這一技術(shù)經(jīng)過一段時間的成長后,在90年代后期,便涉及到各個領(lǐng)域,例如軍事、教育、醫(yī)學(xué)等。從人臉識別的發(fā)展歷程上可以看出,人臉識別技術(shù)的發(fā)展飽經(jīng)風(fēng)雨,但是也影響不了它飛速發(fā)展的速度。從20世紀(jì)60年代至今不過就是幾十年的時間,人臉識別技術(shù)已從簡單的二維平面模型識別到現(xiàn)在的三維立體模型識別、多姿態(tài)識別等。人臉識別技術(shù)在學(xué)術(shù)上的解釋是:人臉識別是基于人的臉部特征信息進行身份識別的一種生物識別技術(shù)。為什么能通過人臉識別某個人的身份呢?是因為每個人臉都有一個共性——都是由眼、鼻、口組成,并且它們的大致位置是不變的。但是在這些共性中又存在許多的不同點。例如:有些人是雙眼皮有些人,是單眼皮;每個人的瞳距不一樣;每個人嘴巴大小不一樣;每個人鼻子的大小不一樣等。就算是雙胞胎都是會存在些許差別。人臉識別技術(shù)就是根據(jù)這些共性與差異辨別出身份的。1.2研究現(xiàn)狀人臉識別是基于人的臉部特征信息進行身份識別的一種生物識別技術(shù)[16]。并且已涉及生活的各個領(lǐng)域,例如:軍事、教育、購物等。其發(fā)展具有很大的潛力,就算在這個技術(shù)還未成熟的時候,在一些科技電影中就對這一項技術(shù)描述得淋漓盡致,也對其進行“華麗的預(yù)言”。正因這一技術(shù)的潛力極大,所以,我國也出臺了許多相關(guān)政策支持這一技術(shù)的研發(fā)。2015年以來,我國相繼出臺了《安全防范視頻監(jiān)控人臉識別系統(tǒng)技術(shù)要求》、《信息安全技術(shù)網(wǎng)絡(luò)人臉識別認證系統(tǒng)安全技術(shù)要求》等法律法規(guī),為人臉識別技術(shù)在社會的發(fā)展,以及在各個領(lǐng)域的普及奠定了非常重要的基礎(chǔ)[1]。在2017年的人工智能被寫入全國政府報告的同年7月,國務(wù)院發(fā)布了《新一代人工智能發(fā)展規(guī)劃》,同年的12月,工信部出臺了《促進新一代人工智能產(chǎn)業(yè)發(fā)展三年行動計劃(2018-2020年)》[1]。由于人臉識別也屬于人工智能的一部分,所以在這幾個出臺的規(guī)劃中,也對人臉識別的有效檢出率以及正確識別率作出了一些標(biāo)準(zhǔn)規(guī)定。顯而易見,人臉識別的發(fā)展是必然的,是這個時代的選擇。人臉識別最早在20世紀(jì)60年代就已有科學(xué)家在研究了,只不過是受制于當(dāng)時的科技技術(shù)不夠先進,計算機處理速度緩慢,才導(dǎo)致人臉識別這一技術(shù)遲遲無法面向社會。后來計算機的發(fā)展?jié)u漸有了起色,人類也因此進入了計算機的信息時代,計算機的各個方面都突飛猛進地增長,有了良好的硬件基礎(chǔ)后,人臉識別這一技術(shù)也伴隨著計算機的增長而逐漸走向成熟。人臉識別的整個發(fā)展過程可以分為五個階段,它們分別是機械識別階段、半自動化識別階段、非接觸式識別階段及互聯(lián)網(wǎng)應(yīng)用階段。與其他生物識別方式相比,人臉識別優(yōu)勢在于更具有自然性、具有不被察覺性等特點[16]。但與此同時人臉識別的研究難度也會比其它生物識別方式高。第一、人的臉部異變性比較大,換句話說就是外形的容易變化,容易影響識別的準(zhǔn)確率。第二、環(huán)境的光度也會影響識別的準(zhǔn)確率,由于如今的人臉識別大多數(shù)還是使用圖像處理的方式識別,光的角度對于圖像人臉的識別精確度的會有一定的影響。第三、人臉包含了許多姿態(tài),例如開心、難過、憔悴、笑等,也給人臉識別造成了更大的研究難度。人臉識別其優(yōu)勢雖明顯,未來必將會成為生物識別的主導(dǎo)技術(shù)之一,但其對于技術(shù)的要求也非常高。如果人臉識別在精度問題上能夠得到有力的解決的話,人臉識別估計會替代指紋識別,成為市場應(yīng)用規(guī)模最大的生物識別技術(shù)之一。從申請專利數(shù)量來看,2007-2017年,我國人臉識別專利申請數(shù)量總體上呈上升的趨勢,尤其是2014年后,計算機人臉識別專利申請數(shù)量大幅增多,到2017年,人臉識別專利申請數(shù)量達到2847項。從公開專利數(shù)量來看,2007-2017年,我國人臉識別專利公開數(shù)量總體上呈穩(wěn)定趨勢。2017年,我國人臉識別專利公開數(shù)量為2698項,達到近年來最大值;截至2018年7月,專利公開數(shù)量為2163項。從專利數(shù)據(jù)上可知,人臉識別技術(shù)的發(fā)展趨勢一直在快速增長。同時也說明了,人臉識別技術(shù)還可能繼續(xù)成為下一個世紀(jì)的熱門技術(shù)之一。在市面上的與人臉識別技術(shù)相關(guān)的書籍、文獻、資料也不少,所以當(dāng)前人臉識別技術(shù)的研究現(xiàn)狀是非常不錯的。1.3主要內(nèi)容本文將以設(shè)計人臉識別系統(tǒng)為主,對人臉識別技術(shù)進行深度的研究、學(xué)習(xí)。在設(shè)計開展之前,首先介紹一下人臉識別的相關(guān)知識、具體原理、以及算法知識。人臉識別算法有許多種,本文將不一一具體說明。在人臉識別算法知識中,會以闡述幾何特征人臉識別算法為主。幾何特征人臉識別算法也是本次設(shè)計的核心。除此之外,本文還會著重對以下幾點進行了較為深入的探討:(1)采集人臉圖像過程(2)人臉檢測過程(3)人臉信息對比過程第二章人臉識別的相關(guān)理論和技術(shù)2.1臉部識別原理計算機識別人臉與人識別人臉的方式存在很大的差異。人是通過肉眼的視覺影像獲取到這個人物的臉部信息,進而識別出這個人的身份信息。如果是個雙胞胎的話,還可以通過這個人的肢體動作感知來區(qū)分。但對于計算機而言,就會顯得相對困難,因為計算機不像人一樣有感知,計算機需要將這些信息轉(zhuǎn)化成數(shù)據(jù),再對這些數(shù)據(jù)進行一系列的處理后,才能達到識別的效果。所以,人臉識別會涉及許多領(lǐng)域的知識點,其中最主要的就是圖像處理。計算機需要通過大量數(shù)據(jù)才能識別出一個人臉。在這個地球上一共有70多億人,因此一個精確的人臉識別背后需要大數(shù)據(jù)的支撐。在人臉識別算法中,有一個基于卷積神經(jīng)網(wǎng)絡(luò)人臉上識別算法,它擁有極其龐大的人臉庫,涉及到大數(shù)據(jù)、深度學(xué)習(xí)、以及人工智能等相關(guān)知識。經(jīng)過多重考察后,最后選用了Opencv作為設(shè)計的工具。因為利用Opencv對圖像操作非常方便。Opencv可對圖像進行剪輯、加載、拷貝等操作,還可以對圖像進行基本的處理、例如去噪點、色彩處理等。不僅如此Opencv里還有攝像頭的功能,方便本次設(shè)計制作以視頻流為基準(zhǔn)的人臉識別。而且OpenCV還可以進行一些線性代數(shù)上的計算,以內(nèi)置函數(shù)模塊實現(xiàn)計算特征值、特征向量、特征矩陣等。OpenCV還提供了圖像連通域、霍夫變換、圖像輪廓處理、連通分支的分析、多項式的逼近、圖像的模板匹配、曲線擬合、狄勞尼三角化等目標(biāo)識別,以及多種特征提取方法、HMM模型[4]。人臉識別的過程主要分為采集人臉圖像、人臉檢測、人臉信息比對三個過程。2.1.1采集人臉圖像采集人臉圖像的渠道有很多種(下面列舉三種常用的):①利用電子機器攝像頭拍攝②互相網(wǎng)上的人臉識別庫③掃描儀采集對象是一些含有人臉的2D圖像、3D圖像、視頻等。不同的類型的圖像,識別的方式也會有所不同。例如:3D人臉圖像識別就有兩種,一種是在三維的基礎(chǔ)上,另一種則是在2D圖像的基礎(chǔ)上。3D圖像識別之所以可以在2D圖像識別的基礎(chǔ)上識別,是因為3D圖像只是比2D多出一個維度的數(shù)據(jù),所以可以通過處理2D圖像再加上一個深度數(shù)據(jù)的方式來識別3D的人臉圖像。以目前的調(diào)查數(shù)據(jù)顯示,3D的人臉識別準(zhǔn)確度會比2D的人臉識別準(zhǔn)確度會更精準(zhǔn)。

2.1.2人臉檢測人臉檢測是人臉識別的前提和基礎(chǔ)[12]。這個過程主要檢測的是圖像中是否含有人臉。由于人的臉部器官之間大致位置關(guān)系是固定的,并且這些臉部器官也會有所差異,例如瞳距、大小、角度等??梢酝ㄟ^這些共性與非共性的集合,在人臉圖像尋找出一個特征點,通過這些能夠標(biāo)識人臉的的特征點數(shù)據(jù)追蹤到人臉圖像中的人臉位置,人臉圖像是由多個像素點組合而成,計算機一般會用數(shù)據(jù)去記錄每個像素點,對這些像素點進行分析之后就可以得到人臉數(shù)據(jù)特征矩陣,從而得到特征值與特征向量等數(shù)據(jù)。如今的人臉識別技術(shù)已成熟,所以市面上已有不少人臉檢測工具,Opencv就是其中之一,在人臉檢測這一模塊可以使用OpenCV中的人臉模型去定位人臉位置之后再對人臉進行進一步的解析。但需要注意,在圖像檢測中,一般會先使用灰度處理過圖像后,再進行人臉檢測,因為這樣能夠提高人臉識別的性能。當(dāng)然,彩色也是可以的。本次設(shè)計將使用的是灰度處理過的圖像進行識別。人臉檢測這一部分主要有圖像的預(yù)處理、特征提取與選擇兩部分。①預(yù)處理影響圖像的因素會有很多,例如:光線亮度、拍攝角度等。當(dāng)圖像被影響了之后就容易產(chǎn)生許多噪點,這些噪點會影響我們?nèi)四樧R別的各種檢測。所以圖像處理是很有必要的。一般是把圖像中的噪點去除掉,還有把圖像灰度化。②特征提取特征提取是整個人臉識別里面很關(guān)鍵的一部分。很多識別方法都是以特征點為參照的基準(zhǔn)才能達到檢測/識別的效果。在OpenCV里,含有許多器官的特征值,利用這些特征值可以定位出圖像中是否含有人臉,如果含有人臉的話,就會返回給系統(tǒng)其上下左右四個點的位置。再利用這四個點就找出人臉的具體位置了。2.1.3人臉信息對比(人臉識別)僅僅識別出人臉還不夠,還需要識別出具體的人物。所以就需要人臉信息對比。人臉識別肯定離不開臉部識別算法。在開發(fā)設(shè)計過程中,可以自己去設(shè)計屬于自己的人臉識別算法,但這樣設(shè)計難度也會隨之增加,也可以利用開源的人臉識別庫,調(diào)用其中的臉部算法函數(shù),這樣會方便自己的初次學(xué)習(xí),而且自己寫的臉部識別算法還可能不如別人的算法好,導(dǎo)致系統(tǒng)設(shè)計缺陷多。而且人臉識別的算法質(zhì)量對人臉識別的準(zhǔn)確率會有一定的影響。人臉識別的算法有很多,主要的就是幾何特征識別、以統(tǒng)計學(xué)為原理的PCA識別算法、神經(jīng)網(wǎng)絡(luò)識別算法、局部特征算法、彈性匹配算法等。本次人臉識別設(shè)計采用的算法是幾何特征識別算法,利用OpenCV與face_recognition的結(jié)合制作的人臉識別系統(tǒng)。這部分主要檢測圖像中的人臉到底是誰。如果要應(yīng)用在市場應(yīng)用上,在這個過程中需要建立一個人臉數(shù)據(jù)庫。在圖像檢測完畢后,將圖像中的人臉與人臉數(shù)據(jù)庫的人臉進行比對,從而識別出這個人臉。一般人臉信息相似度不會設(shè)置為百分之100,臉部表情也會影響人的臉部的相似度,一般設(shè)置相似度為60%左右。2.2人臉識別算法在眾多人臉識別算法中,特征分析也是人臉識別的核心之一。經(jīng)過多個的人臉模型的訓(xùn)練后,所有的特征點組合起來后就能建立出人的臉部模型。通過這個臉部模型就可以定位到人臉圖像中的人臉位置。但是還不能識別出這個人臉到底屬于誰,還需要對識別出來的人臉作進一步再分析,以某一相似值為標(biāo)準(zhǔn),與人臉庫中的人臉信息作對比。其中,主要的識別算法有:幾何特征識別法、局部特征識別法、特征臉識別法(PCA)、神經(jīng)網(wǎng)絡(luò)識別法(CNN)、彈性匹配識別方法、線段Hausdorff距離(LHD)識別法、支持向量機(SVM)的識別法[2]。2.2.1幾何特征識別法基于幾何特征的提取方法主要是人臉的主要器官進行定位[3]。由于臉部器官的結(jié)構(gòu)、大小等的不同,所以可以對臉部以幾何進行描述,構(gòu)成臉部的幾何特征。這些幾何特征主要包括特征點的位置、特征點之間的距離、特征點之間的角度等[3]。通過對這些特征點進行解析,利用特征點與特征點之間的距離構(gòu)造出特征向量[16],再利用該特征向量進行人臉識別[11][15]。本次設(shè)計的特征值提取是基于灰度圖像的一個特征值提取。假設(shè)輸入的圖像g(x,y),其大小為e*f。圖像g在點(x,y)的灰度值I(x,y)。那么,該圖像的V(x)垂直積分投影函數(shù),H(y)平積分投影函數(shù)如下[5]:(公式2-1)(公式2-2)垂直積分投影函數(shù)是指輸入圖像的一個垂直區(qū)域的灰度值之和,它表示圖像的灰度值在垂直方向上的變化。水平積分投影函數(shù)則是指輸入圖像水平區(qū)域的灰度值之和,表示圖像的灰度值在水平方向上的變化。這是一個經(jīng)過灰度處理后的人臉圖像(如圖2.1):圖2.1灰度處理后的人臉圖像其垂直積分投影函數(shù)如下圖所示:圖2.2垂直積分投影函數(shù)其水平積分投影函數(shù)如下圖所示:圖2.3水平積分投影函數(shù)像素點越暗,其灰度值就越低。相反,像素點越亮,其灰度值越高。根據(jù)垂直積分投影函數(shù)與水平積分投影函數(shù),可以定位出人臉部的眼睛位置。因為人的眼睛一共有兩個,并且具有對稱性,所以在水平積分投影函數(shù)的兩個波谷就是眼睛的位置的。緊接著就是定位出鼻子的位置,鼻子在兩個眼睛的中間,并且灰度值比較高,也就是灰度值最大的那個點,就是臉部的鼻子的特征點。緊接著就能定位出嘴巴的位置,就是在積分函數(shù)投影的灰度值比較小,并且在眼睛附近的地方。每個臉部器官都取3個特征點,共12個,并且構(gòu)造出其標(biāo)準(zhǔn)特征向量。2.2.2特征臉識別法(PCA)PCA(PrincipalComponentAnalysis)方法也就是主成分分析法。該方法是一種以K-L變換為基礎(chǔ)的統(tǒng)計分析方法[5]。每一個人臉都是由許多成分組成的,例如:痘痘,皮膚,黑色素等,在這些成分中有些成分是主要的,例如:眼睛形狀,嘴巴的形狀等,并且這些主成分組合起來可以唯一標(biāo)識出特定的人,在這種情況下,就可以不加以考慮除了主成分之外的元素,這樣可以大大減少程序的運算量。在識別人臉的過程中,首先要把主要人臉部分截取出來,再進行識別。截取出來的人臉圖像可以看作一個高維度數(shù)據(jù)的產(chǎn)物,通過對這個高維數(shù)據(jù)進行分析得到一個低維數(shù)據(jù),方便程序計算。雖然在這個過程中圖像存在細微的虧損,但是其主成分是不發(fā)生改變的。利用這些主成分特征值與現(xiàn)在的人臉對比,進而達到識別的效果。在這一算法中,圖像訓(xùn)練是這一算法中很重要的一部分。多個低維數(shù)據(jù),可以反推出一個標(biāo)準(zhǔn)的新的人臉圖像(如圖2.4),根據(jù)這個圖像就能準(zhǔn)確得識別出當(dāng)前人臉對應(yīng)人臉庫中的哪個人臉,進而達到識別的效果。圖2.4反推的新的人臉圖像PCA的主要步驟如下:先把人臉數(shù)據(jù)樣本截取出來。將人臉圖像的高維圖像矩陣進行排序、計算,得出低維的數(shù)據(jù)矩陣。計算公式如下[5]:(公式2-3)緊接著計算出其協(xié)方差矩陣,公式如下[5]:(公式2-4)將計算出來的K個最大特征值與其對應(yīng)的特征向量進行組合,變成新的變換矩陣,接著采用K-L變換式對計算出來的變換矩陣進行計算,就可以得到該圖像的低維特征向量。最后利用這些低維數(shù)據(jù)反推出新的圖像投影到子空間中,就可以得到該人臉的人臉模型,利用這個模型的數(shù)據(jù)就可以達到人臉識別的目的。2.2.3線段Hausdorff距離識別法(LHD)心理學(xué)研究表明,人在識別類似素描的邊緣圖上的速度和準(zhǔn)確度絲毫不比識別灰度圖的能力差[13]。LHD識別就是基于人臉圖像的灰度圖輪廓,識別的是兩個線段集合之間的距離,通過計算Hausdorff距離進行識別兩張人臉之間的相似度[14],再根據(jù)相似度的大小來判斷是否為同一個人。由于線段集之間的線段不存在對應(yīng)關(guān)系,所以,LHD識別對微小變化的處理遠比其他識別算法要好,但是其缺點是在大表情下的處理會存在較大的缺陷。在本次設(shè)計中沒有用到此算法。2.2.4支持向量機(SVM)的識別法支持向量機(SupportVectorMachine,SVM)目前是CorinnaCortes和Vapnik等人在研究統(tǒng)計學(xué)習(xí)理論的基礎(chǔ)上提出的新的方法[6][10]。SVM算法主要分為線性與非線性兩種方法,在進行識別時基本上不受樣本的質(zhì)量與數(shù)量的影響[9]。通過在訓(xùn)練集合里提取出特征向量值,結(jié)合一定的算法得到結(jié)果。在本次設(shè)計中沒有用到此算法。2.3本章小結(jié)本章主要概述了人臉識別的具體過程和不同人臉識別算法的原理。人臉檢測是所有算法的前提、基礎(chǔ)。一般情況下,都是檢測出人臉位置,以該圖像區(qū)域為基礎(chǔ)進行人臉識別。不同的人臉?biāo)惴ǖ囊罁?jù)也是不一樣的,例如:PCA識別是依據(jù)統(tǒng)計學(xué)的,線段Hausdorff距離識別是依據(jù)心理學(xué)的某些原理。不僅如此,由于原理的改變,其運算的時長也不一樣,所需的空間也會不一樣。綜上所述,要想設(shè)計出一個性能較好的人臉識別系統(tǒng),必須完善其人臉識別算法,可通過研究不一樣的算法,綜合其優(yōu)點改善。第三章人臉識別系統(tǒng)的軟件設(shè)計3.1人臉識別的算法設(shè)計本次設(shè)計嘗試了2種人臉識別方法。一種是PAC算法,另一種幾何特征算法,這兩種算法都有其優(yōu)點和缺點,最后經(jīng)過多次考量之后,決定選擇用簡單的幾何特征算法。因為PAC需要訓(xùn)練大量的人臉圖像訓(xùn)練樣本,經(jīng)過統(tǒng)計、分析之后,得到一個人臉模型,再由這個人臉模型與當(dāng)前人臉對比,才識別出人臉。這個過程相對復(fù)雜,導(dǎo)致最后在嵌入進窗口界面的時候,容易出現(xiàn)卡頓嚴(yán)重,所以最后選用的是幾何特征識別的方式。本次人臉識別系統(tǒng)設(shè)計是主要基于Opencv、face_recognition兩個庫。幾何特征識別流程(如圖3.1):圖3.1幾何特征識別流程PCA算法識別流程:在用PCA識別算法中,可使用sklearn模塊進行計算,這樣會大大提高識別的效率。①降維過程(如圖3.2):圖3.2降維過程②訓(xùn)練與識別流程(如圖3.3):在用PCA識別算法的時候,可使用sklearn模塊進行計算,這樣可以大大提高識別的效率。圖3.3訓(xùn)練與識別流程(1)PCA識別樣本訓(xùn)練的部分代碼:#獲取訓(xùn)練集train_face,train_face_number,test_face,test_face_number=loadDataSet(3)#PCA訓(xùn)練訓(xùn)練集,用pca將數(shù)據(jù)降到30維pca=PCA(n_components=30).fit(train_face)#返回測試集和訓(xùn)練集降維后的數(shù)據(jù)集x_train_pca=pca.transform(train_face)x_test_pca=pca.transform(test_face)#邏輯回歸訓(xùn)練classirfier=LogisticRegression()lr=classirfier.fit(x_train_pca,train_face_number)#保存模型joblib.dump(lr,'lr.model')#計算精確度和召回率accuray=classirfier.score(x_test_pca,test_face_number)recall=accuray*0.7(2)PCA識別的部分代碼:#預(yù)測的人臉predict=img2vector(string)#加載模型LR=joblib.load('lr.model')predict_people=LR.predict(pca.transform(predict))string1=str("編號:%s精確度:%f召回率:%f"%(predict_people,accuray,recall))3.2軟件功能的設(shè)計本次人臉識別系統(tǒng)的功能主要以登陸為主,分為密碼登陸與人臉登陸兩個部分。密碼登陸部分流程(如圖3.4):圖3.4密碼登陸部分流程人臉登陸部分流程(如圖3.5):圖3.5人臉登陸部分流程3.3軟件功能的實現(xiàn)詳細代碼見附錄。第一步:環(huán)境配置下載PyCharm,配置好python3.6的環(huán)境。安裝opencv庫、tkinter庫、face_recognition這些庫的環(huán)境安裝相對復(fù)雜,需要的時間會比較長。第二步:各個子模塊準(zhǔn)備(人臉定位、人臉識別、界面設(shè)計、攝像頭)人臉定位子模塊:利用opencv庫加載一張含有人臉的圖像,將圖像里的成分進行解析,利用人臉器官的特征值,定位出人臉的大致位置后,對圖像進行標(biāo)記,最后顯示標(biāo)記過的人臉圖像,達到人臉定位的效果,具體的人臉定位過程(如圖3.6)。圖3.6人臉定位過程人臉定位的部分代碼與注釋:#1.加載人臉模型face=cv2.CascadeClassifier('alt.xml')#2.調(diào)整圖片灰度(灰度可以提高性能)gary=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)#3.檢查人臉faces=face.detectMultiScale(gary)#標(biāo)記人臉for(x,y,w,h)infaces:#里面有四個參數(shù)1.寫圖片2.坐標(biāo)原點3.識別大小4.顏色/線寬img=cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),10)運行效果(如圖3.7):圖3.7運行效果人臉識別子模塊:將定位出的人臉圖像進行解析,得出一個人臉編碼數(shù)據(jù),這些數(shù)據(jù)對應(yīng)的是人臉的器官的特性,以數(shù)據(jù)的方式記錄臉部器官的特性。定位出來的人臉與另外一張人臉圖像的人臉信息進行匹配,由于各種外界因素,兩張圖片中的相似度不可能是100%,一般60%左右即可,為了確保識別的精確度,本次設(shè)計是70%。本次設(shè)計可以采用數(shù)據(jù)庫的方式對人臉數(shù)據(jù)進行裝載。人臉識別部分代碼與注釋:#對圖片中人臉進行編碼me_face_encoding=face_recognition.face_encodings(me)[0]he_face_encoding=face_recognition.face_encodings(he)[0]#準(zhǔn)備人臉庫的人臉編碼know_face_encoding=[me_face_encoding,he_face_encoding]#準(zhǔn)備人臉庫中人臉對應(yīng)姓名#know_face_names=['me','he']#發(fā)現(xiàn)圖片中當(dāng)前圖像中的人臉位置locations=face_recognition.face_locations(img)face_encodings=face_recognition.face_encodings(img,locations)for(top,right,bottom,left),face_encodinginzip(locations,face_encodings):#比較人臉matchs=face_pare_faces(know_face_encoding,face_encoding)name='unknow'formatch,know_nameinzip(matchs,know_face_names):ifmatch:name=know_name運行效果(如圖3.8):圖3.8運行效果界面設(shè)計子模塊:利用tkinter庫設(shè)計登陸界面、人臉識別界面、以及軟件主界面。攝像頭子模塊:利用攝像頭捕獲圖像,把每一幀圖像都進行人臉識別處理。③子模塊組合攝像頭子模塊+人臉識別界面:在這個過程中,識別的算法越復(fù)雜,視頻的流暢度就會越低。根窗口與子窗口之間的關(guān)系處理不當(dāng),容易造成視頻模塊無法嵌入。攝像頭子模塊+人臉識別界面+人臉識別:本次設(shè)計采用的是幾何特征人臉識別,這一算法的識別運算量雖少,但是也會降低了視頻的流暢性。運行效果(如圖3.9):圖3.9運行效果3.4本章小結(jié)本章主要通過具體流程,生動形象地闡述人臉系統(tǒng)設(shè)計開發(fā)的全過程,在設(shè)計開發(fā)期間,針對不同的模塊進行了合理的改善。特別在子模塊的組合過程中,由于嵌入在一起會出現(xiàn)卡頓嚴(yán)重、某些模塊無法嵌入到界面等問題,尋找了各種各樣的解決辦法才得以解決。所以在設(shè)計過程中需要特別注意。第四章功能測試和系統(tǒng)調(diào)試4.1人臉識別系統(tǒng)的功能測試與結(jié)果密碼登陸功能測試:①賬號不存在運行效果(如圖4.1):圖4.1賬號不存在運行效果②賬號存在、密碼錯誤運行效果(如圖4.2):圖4.2賬號存在、密碼錯誤運行效果③賬號存在、密碼正確運行效果(如圖4.3):圖4.3賬號存在、密碼正確運行效果人臉登陸功能測試:①人臉登陸界面(如圖4.4)圖4.4人臉登陸界面②人臉登陸測試(如圖4.5):圖4.5人臉登陸測試4.2實驗結(jié)果測試與對比經(jīng)過多次的測試對比,該人臉識別功能已達到實現(xiàn)的效果,但是識別的精度還有待提高。經(jīng)過研究多種人臉識別發(fā)現(xiàn)是人臉識別算法的問題。若想達到更精確的效果,可嘗試換一種新的人臉識別方式。在測試過程中,資源釋放不到位、電腦配置不夠高,導(dǎo)致程序的人臉識別部分的運轉(zhuǎn)時長不高。該程序還有提高的空間??偨Y(jié)與展望課題工作總結(jié)本次論文主要詳細描述了人臉識別的過程,以及人臉識別的兩種算法,幾何特征識別與PCA識別。本想在設(shè)計中加入數(shù)據(jù)庫,由于時間流逝的速度之快,已經(jīng)到了畢業(yè)設(shè)計的期限的尾聲,就沒有加入進去了。在這兩個多月的學(xué)習(xí)制作中,本人從中學(xué)習(xí)到了許多知識,特別是對于人臉識別這一模塊學(xué)習(xí)。在這段時間里,閱讀、研究過許許多多的文獻、書籍,備受感觸。人臉識別實現(xiàn)起來的難度并沒有想象中那么大,但這僅僅是因為本次設(shè)計采用的是簡單的識別方式,這樣的識別效果特別差,達不到提高安全性的效果,離研究目標(biāo)還有一定距離。本次設(shè)計的成品并不成熟,還需要加以完善。要想利用人臉數(shù)據(jù)保護資料,對人臉識別算法的學(xué)習(xí)還需要更深一步。雖然完成了本次畢業(yè)設(shè)計的制作,但是對于本次作品本人并不滿意,無論是美觀上、還是功能上,還存在很大的漏洞。對人臉識別的算法學(xué)習(xí)還未達到預(yù)期的效果,對數(shù)據(jù)處理、分析的能力還不足。所以人臉識別算法還需要繼續(xù)花費時間研究,本次作品還需要進行改善。在這段時光里,遇到了非常多的難題。例如環(huán)境搭建不成功、界面模塊嵌入不成功、識別失誤等。本次設(shè)計所用到的環(huán)境要求比較高,每個工具依賴的環(huán)境也比較復(fù)雜,在搭建環(huán)境這個過程中,花費了大量的時間。在制作界面的過程中也困難重重,本次作品是本人用python做的第一個項目,許多東西都是邊學(xué)邊做的,但很幸運的是,本人的導(dǎo)師、師兄都很熱心地協(xié)助,并解決了問題,也正是因為有他們的在背后默默的支持,本人才更加有熱情、動力去學(xué)習(xí)。未來展望在未來的一段時間里,本人將繼續(xù)對人臉識別進行更深一步的學(xué)習(xí)。在這段時間里,已對人臉識別這一技術(shù)花費了大量的時間才有一定的了解。并不想就此放棄之前的努力,繼續(xù)堅持學(xué)習(xí)下去,或許能被本人發(fā)現(xiàn)彩虹呢!無論以后的學(xué)習(xí)有多困難,都要堅持學(xué)習(xí)下去,讓自己每天進步一小步。古人云:滴水成河、粒米成籮。就算如今的知識量薄弱,但經(jīng)過時間的洗滌,一定能得到很大的進步。參考文獻[1]李夏風(fēng).人臉識別市場的發(fā)展現(xiàn)狀與變化[J].中國安防,2020(Z1):39-42.[2]艾英山,張德賢.人臉識別方法的綜述與展望[J].計算機與數(shù)字工程,2005(10):24-27.[3]曹海燕.基于幾何特征的人臉識別算法研究[D].曲阜師范大學(xué),2015.[4]卜秋月.基于OpenCV的人臉識別系統(tǒng)的設(shè)計與實現(xiàn)[D].吉林大學(xué).[5]黃泉龍.基于PCA的人臉識別研究[D].西安電子科技大學(xué),2012.[6]李艷;張琛;倪麗萍;何畏;潘莉.基于分形維數(shù)權(quán)重的大學(xué)生心理資本分類研究.合肥工業(yè)大學(xué).2015[7]汪勉;趙景秀;韓君君;程潔;趙娟;曹曼曼.基于快速Hough變換檢測圓的人眼精確定位方法的研究.電子技術(shù)雜志,2008[8]盧開澄.計算機密碼學(xué)[M].清華大學(xué)出版社,1990.[9]徐金梧.冶金生產(chǎn)過程質(zhì)量監(jiān)控理論與方法.北京冶金工業(yè)出版社,2015.05[10]李振龍;韓建龍;趙曉華;朱明浩;董文會。基于K近鄰和支持向量機的醉酒駕駛識別方法的對比分析。交通運輸系統(tǒng)工程與信息。2015[11]鄒國鋒,傅桂霞,李海濤,高明亮,王科俊.多姿態(tài)人臉識別綜述[J].模式識別與人工智能,2015,28(07):613-625.[12]廖廣軍.復(fù)雜條件下的人臉檢測與識別應(yīng)用研究[D].華南理工大學(xué),2014.[13]杜成,蘇光大,林行剛,顧華.改進的線段Hausdorff距離人臉識別方法[J].光電子·激光,2005(01):89-93.[14]李嵩,劉黨輝,沈蘭蓀.基于ASM和線段Hausdorff距離的人臉識別[J].計算機應(yīng)用,2008(05):1217-1220.[15]郭雅楠.基于SVM和ELM的人臉識別方法[D].太原理工大學(xué),2015.[16]劉婷.基于局部特征分析的人臉識別方法[J].信息與電腦(,2019,31(21):114-115+118.致謝本次畢業(yè)設(shè)計工作能夠完成,特別需要感謝本人的導(dǎo)師佟向坤老師。在她的悉心教導(dǎo)下,本次的畢業(yè)設(shè)計才得以完成。在大學(xué)的四年的學(xué)習(xí)過程中,佟老師對本人的關(guān)心和指導(dǎo),讓本人受益匪淺。特別值得一提的是,每次在找不到問題的解決方式的時候,與佟老師溝通一下,這一問題就很神奇地莫名其妙地解開了。除此之外,還要感謝在這段時間陪伴在身邊的家人們、朋友們、師兄師姐們。他們就像熒幕前背后的柱子,每當(dāng)熒幕快要倒下的時候,都提醒熒幕要堅持下去。在危難之際,幸虧有他們伸出援助之手,。在這個滿是荊棘的人生道路上,正因為有這些良師益友,本人才能奮力前進、堅持不懈。他們的支持是本人的精神支柱、以及前進的動力。附錄importtkinterfromtkinterimport*importtkinter.messageboximportcv2importosimporttimefromPILimportImage,ImageTkclassface_app:def__init__(self):self.camera=None#攝像頭初始化self.root=Tk()self.root.title('用戶登陸')self.root.geometry('%dx%d'%(400,250))self.createFirstPage()#創(chuàng)建第一頁mainloop()defcreateFirstPage(self):self.page1=Frame(self.root)self.page1.pack()self.page1.canvas=Canvas(self.page1,width=400,height=250,bd=0,highlightthickness=0)self.page1.imgpath='backgroud.jpg'self.page1.img=Image.open(self.page1.imgpath)self.page1.photo=ImageTk.PhotoImage(self.page1.img)self.page1.canvas.create_image(200,140,image=self.page1.photo)self.page1.canvas.pack()Label(self.page1,bg='AntiqueWhite',text='ManagementInformationSystem',font=('Arial',14)).place(x=45,y=65)Label(self.page1,bg='white',text='user:',font=('Arial',14)).place(x=50,y=100)Label(self.page1,bg='white',text='password:',font=('Arial',14)).place(x=50,y=150)#lineeditself.leinEdit_u=Entry(self.page1,show=None,font=('Arial',12))self.leinEdit_u.place(x=150,y=100)self.leinEdit_p=Entry(self.page1,show='*',font=('Arial',12))self.leinEdit_p.place(x=150,y=150)self.b_register=Button(self.page1,text='(FACE)Singin',bg='AntiqueWhite',font=('Arial',10),command=self.def_b_register).place(x=240,y=220)self.b_sign_in=Button(self.page1,text='Singin',bg='AntiqueWhite',font=('Arial',10),command=self.b_sign_in).place(x=280,y=180)defdef_b_register(self):self.window_face=Toplevel()#!!!!!!!!!!self.window_face.title('FaceWindow')self.window_face.geometry('800x800')self.page2=Frame(self.window_face)self.page2.pack()self.open_c=Button(self.page2,width=18,height=2,text='OPENCAMERA',bg='red',font=("宋",12),relief='raise',command=self.def_open_c).pack(side=TOP,padx=25,pady=10)self.find_c=Button(self.page2,width=18,height=2,text='Queryinformation',bg='white',font=("宋",12),relief='raise').pack(side=TOP,padx=110,pady=10)#command=self.checkDataView)self.close_c=Button(self.page2,width=18,height=2,text='CloseCAMERA',bg='gray',font=("宋",12),relief='raise',command=self.quitMain).pack(side=TOP,padx=25,pady=10)mainloop()#開啟攝像頭defdef_open_c(self):self.page2.pack_forget()#隱藏page2self.camera=cv2.VideoCapture(0)#定義攝像頭self.page3=Frame(self.window_face)#開始新的Frameself.page3.pack()#畫布局Label(self.page3,text='Welcometofacerecognition!',font=('粗體',20)).pack()#畫一個文字介紹self.data=Label(self.page3)#初始化一個視頻數(shù)據(jù)流self.data.pack(padx=5,pady=5)#畫上去#返回按鈕self.buttonclose=Button(self.page3,width=18,height=2,text=

溫馨提示

  • 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

提交評論