-基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
-基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
-基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
-基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
-基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第第頁基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)承諾人簽名:日期:年月日基于機(jī)器學(xué)習(xí)的人臉識別算法的設(shè)計(jì)與實(shí)現(xiàn)摘要人臉識別技術(shù)是一種新型的生物特征認(rèn)證技術(shù)。人臉識別技術(shù)也是一個非?;钴S的研究領(lǐng)域,涵蓋了許多領(lǐng)域,例如數(shù)字圖像處理。隨著人們對應(yīng)用程序需求的增長,面部識別技術(shù)趨向于大量使用,使用微芯片和標(biāo)準(zhǔn)化。人臉檢測是快速準(zhǔn)確識別人臉的先決條件。其目的是檢測圖像背景下的人臉,并將其與數(shù)據(jù)中的人臉進(jìn)行比較,以實(shí)現(xiàn)人臉識別。本文以python為開發(fā)技術(shù),前端實(shí)時檢測攝像頭人臉,人臉識別主要是使用mtcnn做人臉提取,使用facenet做人臉特征提取,通過余弦相似度分類進(jìn)行人臉識別。系統(tǒng)界面簡潔、識別迅速、使用方便。本文首先介紹了人臉識別系統(tǒng)的現(xiàn)狀及其發(fā)展背景,然后討論了系統(tǒng)設(shè)計(jì)目標(biāo),系統(tǒng)要求和總體設(shè)計(jì)計(jì)劃,并詳細(xì)討論了人臉識別系統(tǒng)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)。系統(tǒng)最后進(jìn)行面部識別。并對系統(tǒng)進(jìn)行特定的測試。關(guān)鍵詞:人臉識別;python;機(jī)器學(xué)習(xí)

DesignandimplementationoffacerecognitionalgorithmbasedonmachinelearningABSTRACTFacerecognitiontechnologyisanewtypeofbiometricauthenticationtechnology.Facerecognitiontechnologyisalsoaveryactiveresearcharea,coveringmanyfields,suchasdigitalimageprocessing.Asthedemandforapplicationprogramsgrows,facialrecognitiontechnologytendstobeusedinlargequantities,usingmicrochipsandstandardization.Facedetectionisaprerequisiteforrapidandaccuratefacerecognition.Itspurposeistodetectthefaceinthebackgroundoftheimageandcompareitwiththefaceinthedatatoachievefacerecognition.Thisarticleusespythonasthedevelopmenttechnology.Thefrontenddetectsthecamera'sfaceinrealtime.Facerecognitionmainlyusesmtcnnforfaceextraction,andfacenetforfacefeatureextraction,andusescosinesimilarityclassificationforfacerecognition.Thesysteminterfaceissimple,quicktoidentify,andeasytouse.Thisarticlefirstintroducesthecurrentstatusanddevelopmentbackgroundofthefacerecognitionsystem,thendiscussesthesystemdesigngoals,systemrequirementsandoveralldesignplan,anddiscussesthedetaileddesignandimplementationofthefacerecognitionsystemindetail.Thesystemfinallyperformsfacialrecognition.Andconductspecifictestsonthesystem.Keywords:Facerecognition;Python;Machinelearning目錄TOC\o"1-3"\h\u122第一章概述 6316051.1課題背景及意義 678011.2國內(nèi)外研究現(xiàn)狀 6168341.3本課題主要工作 76750第二章系統(tǒng)開發(fā)環(huán)境 8212062.1python技術(shù) 814002.2圖像檢測簡介 9124461基于直線檢測的方法 983142基于閾值化的方法 935033基于灰度邊緣檢測方法 975862.3人臉識別簡介 10320732.3.1人臉識別階段 10115872.3.2人臉識別方法 10307782.4深度學(xué)習(xí)算法及CNN 1028564第三章系統(tǒng)分析 1215263.1可行性分析 12322353.1.1技術(shù)可行性 1249693.1.2操作可行性 1237873.1.3經(jīng)濟(jì)可行性 1233953.1.4法律可行性 1249763.2需求分析 13168563.2.1功能需求分析 13252843.2.2性能需求分析 13283593.3開發(fā)環(huán)境分析 1325817(1)開發(fā)硬件平臺: 1316641(2)開發(fā)軟件平臺: 132913第四章系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 144904.1系統(tǒng)設(shè)計(jì)原則 141725(1)數(shù)據(jù)安全性 1417071(2)易用性 1425743(3)柔軟性 147930(4)擴(kuò)展性 14276524.2系統(tǒng)流程設(shè)計(jì) 14150294.2.1系統(tǒng)開發(fā)流程 14279424.2.2人臉識別流程 15313554.3系統(tǒng)功能設(shè)計(jì) 1692014.4接口設(shè)計(jì) 16135354.4.1外部接口 1653934.4.2內(nèi)部接口 16191344.5系統(tǒng)實(shí)現(xiàn) 16146894.5.1人臉檢測 16182174.5.2人臉識別 18139984.5.3人臉識別效果 1927573第五章系統(tǒng)測試 2159655.1測試環(huán)境與條件 21297435.2功能測試 21299575.3測試結(jié)果分析 245782總結(jié)與展望 254581謝辭 2630301參考文獻(xiàn) 276402附錄 28第一章概述1.1課題背景及意義現(xiàn)在,隨著科技的不斷發(fā)展,我們的生活變得越來越便利也越來越智能,無論是支付寶微信支付,在邊境出入關(guān)口,在政府機(jī)構(gòu)辦理業(yè)務(wù)等等,我們都能夠使用指紋和人臉這些生物特征技術(shù)。并且伴隨著講究的不斷深入,大大降低了識別技術(shù)的成本,人們開始逐漸接受這些技術(shù)[15]。其中最為突出,最為廣泛,熱議度最高的當(dāng)屬于人臉識別技術(shù)了[3]。人臉識別,顧名思義就是在圖片和視頻中檢測有沒有人臉。當(dāng)發(fā)現(xiàn)一個人的臉時,會獲取其他面部特征(眼睛,嘴巴,鼻子等),并根據(jù)此信息將該人與已知人臉的數(shù)據(jù)庫進(jìn)行比較。標(biāo)識一個人的身份。人臉檢測是使用計(jì)算機(jī)確定輸入圖像中所有人臉的位置和大小的過程。面部識別系統(tǒng)是由面部識別系統(tǒng)引入的,該系統(tǒng)可以包括面部圖像,輸出是面部和面部圖像的存在之和,描述了位置,大小,參數(shù)化位置Do和方向信息[1]。假定檢測面部的問題始于識別面部的研究。全自動面部識別系統(tǒng)包括與兩項(xiàng)主要技術(shù)的鏈接:面部檢測和提取以及面部識別。完成自動面部識別的第一個要求是確定一個人的面部。人臉識別是自動人臉識別過程的第一步,它基于自動人臉識別技術(shù)。自動人臉識別系統(tǒng)的速度和準(zhǔn)確性起著重要作用。人臉識別系統(tǒng)可以應(yīng)用于考勤、安全、金融等領(lǐng)域,應(yīng)用廣泛,大大提高了工作效率,提高了服務(wù)水平,身份認(rèn)證變得更加科學(xué)、規(guī)范、系統(tǒng)、簡單。1.2國內(nèi)外研究現(xiàn)狀面部識別的研究始于1960年代末和1970年代初。第一個研究人員是布萊索,他建立了一個人臉識別系統(tǒng),但這個系統(tǒng)是半自動的,識別的主要依據(jù)是座位識別的主要特征,如人臉特征點(diǎn)的距離和比例。20世紀(jì)90年代,計(jì)算機(jī)軟硬件發(fā)展迅速,人們對人臉識別的要求越來越高,對人臉識別的魯棒性也提出了更高的要求[2]。許多學(xué)者開始研究基于整體的識別方法,并成為當(dāng)時人臉識別研究的趨勢。最具代表性的特征臉方法和彈性圖匹配方法。在1990年代中期,整體識別和成分分析相結(jié)合的面部識別方式開始涌現(xiàn)。研究人員也開始認(rèn)識到,他們不僅必須充分利用來自各種面孔的面部識別信息,而且還必須融合諸如形狀拓?fù)涮卣?,局部灰度功能和全局比例分布之類的特征。?dāng)時,許多新的算法開始出現(xiàn),但都是將一些原有的算法拼接在一起,對算法本身并沒有提升和優(yōu)化。在1990年代后期,面部識別技術(shù)得到發(fā)展并開始商業(yè)化,許多產(chǎn)品開始投放市場。但是,由于算法的單一和落后,其識別的誤差還是很大,并且運(yùn)行速度還有待提高。直到來到2000年,才有所進(jìn)步,但是與人們的需求相比存在一些差異,這主要是由于外部環(huán)境的影響,例如光照,姿勢和距離的影響。識別效果差。當(dāng)前,面部識別技術(shù)只能在不需要高識別精度的某些情況下使用??偟膩碚f,這項(xiàng)工作的面部識別涵蓋了各個領(lǐng)域,例如計(jì)算機(jī)視覺,數(shù)字圖像處理和人工智能,但是根據(jù)這項(xiàng)研究,無論實(shí)際計(jì)算機(jī)的類型如何,在現(xiàn)代網(wǎng)絡(luò)和計(jì)算機(jī)通信中它都可以滿足也需要快速的系統(tǒng)開發(fā)。從一種觀點(diǎn)看,研究的價值很高。隨著計(jì)算機(jī)網(wǎng)絡(luò)的擴(kuò)散,諸如計(jì)算機(jī)信息的圖片和視頻之類的多媒體信息的比例不斷增加,這項(xiàng)研究將不可避免地導(dǎo)致快速,長期的發(fā)展。1.3本課題主要工作本文主要分為五個章節(jié),具體結(jié)構(gòu)如下:第一章節(jié)為概述部分。主要分析了該課題的研究背景以及研究意義。了解了現(xiàn)階段國內(nèi)外的人臉識別的發(fā)展情況。提出本文主要的工作內(nèi)容。第二章是對開發(fā)的環(huán)境進(jìn)行分析,以及對于采用的人臉識別方式進(jìn)行分析第三章人臉識別開發(fā)的可行性分析和對需求分析第四章是對人臉識別系統(tǒng)開發(fā)流程的說明。第五章對人臉識別功能實(shí)現(xiàn)的測試總結(jié)以及對后續(xù)改進(jìn)的展望。第二章系統(tǒng)開發(fā)環(huán)境2.1python技術(shù)Python是一種開發(fā)語言,一種用于計(jì)算機(jī)程序設(shè)計(jì)的開發(fā)語言,并且允許面向?qū)ο蟮木幊?。Python由GuidovanRossum開發(fā)。Python具有許多功能,例如簡潔的語法,免費(fèi)的源代碼和種類很多的數(shù)據(jù)庫和第三方庫[5]。由于這些優(yōu)點(diǎn),您可以非??焖俚嘏c其他語言結(jié)合以實(shí)現(xiàn)各種功能模塊。許多人都被昵稱為“膠水”。使用Python快速編程的原型是許多程序員當(dāng)前使用的一種方法。在任何有特殊要求的地方固定都很方便。PyQt是一個工具包,主要可以創(chuàng)建帶有圖形界面的程序。Qt庫是一個功能強(qiáng)大的庫。PyQt實(shí)現(xiàn)了一組Python模塊。PyQt受人青睞的原因是因?yàn)槠鋼碛袛?shù)據(jù)龐大的類和功能。不僅如此,其跨平臺開發(fā)的特點(diǎn)也是其受青睞的原因,例如UNIX,Microsoft,Apple。此外,PyQt具有雙重證書,可提供跨平臺性能。在使用Python安裝平臺之前,用戶必須設(shè)置環(huán)境變量以加載和運(yùn)行取決于另一個平臺的不同版本運(yùn)行。Python特點(diǎn)1.閱讀起來簡單:由于Python代碼簡潔,而且定義也非常清晰,所以閱讀起來更加簡單。2.維護(hù)起來方便:Python的維護(hù)簡單方便。3.標(biāo)準(zhǔn)庫多:Python自身帶有許多免費(fèi)的,開源的,功能強(qiáng)大的數(shù)據(jù)庫。4.具有方便的互動模式:有了互動模式的支持,開發(fā)者可以從代碼就可以看到結(jié)果,這樣開發(fā)者對程序的測試與調(diào)試,變的更方便。5.可移植性好:Python可以跨平臺運(yùn)行。6.擴(kuò)展性非常好的:如果有關(guān)鍵的代碼,你可以用特殊的語言進(jìn)行編寫,也能夠在系統(tǒng)中調(diào)試運(yùn)行。7.數(shù)據(jù)庫接口多:Python可以與市面上大多數(shù)的數(shù)據(jù)庫連接。8.可嵌入性強(qiáng):為了提高實(shí)用性,Python可以嵌入到多種語言中。增強(qiáng)程序的適用能力。當(dāng)然python相對于其他語言也有自己的缺點(diǎn),在運(yùn)行速度這一方面,他雖然能夠滿足用戶的需求,但是相對一些經(jīng)典語言(C,C++,JAVA等)還有點(diǎn)慢。由于是新型的語言,在使用的推廣度上,用戶還是沒有那么多。但是由于python的優(yōu)勢比較明顯,現(xiàn)在越來越多的用戶開始對它進(jìn)行關(guān)注。最后就是目前市面上關(guān)于python的中文資料比較少。在查找和深入研究上有些限制[9]。2.2圖像檢測簡介圖像檢測,顧名思義,就是通過某種算法,把圖像中的需要處理那部分圖像進(jìn)行定位與獲取。這也是圖像識別的最重要的一步。一般都是采用圖形分割技術(shù),圖形分割技術(shù)又與圖形的特征提取和圖像處理密不可分[4]。圖像檢測的方法有很多種,這里簡單介紹以下幾種較常用的方式:1基于直線檢測的方法顧名思義,通過檢測圖像中的直線(通常是圖像周圍的所有邊緣)來識別直線。通常使用的檢測方法是霍夫變化和其他方法。原理是按形狀查找圖像。但是,在實(shí)際應(yīng)用中,許多因素都會影響定位效果,例如光線不均勻,灰塵和塵埃,圖像模糊或曝光過度。當(dāng)然,霍夫算法也有其缺點(diǎn)。它僅檢測直線,不考慮圖像形狀的將來變化。同樣,霍夫的空間不能一次匹配一個原始圖像空間。不能指定霍夫空間中的特征點(diǎn)。圖像輪廓的初始位置不能避免在直線上產(chǎn)生干擾的問題,并且在直線上存在干擾的情況下,無法提取幀[7]。2基于閾值化的方法這種方法的主要特點(diǎn)是可以對圖像應(yīng)用閾值,以獲得具有單個字符和背景的二進(jìn)制圖像。盡管目前提出了各種關(guān)鍵策略,但是簡單算法對二值化的影響很小,但是復(fù)雜算法由于計(jì)算時間長和計(jì)算復(fù)雜性而限制了計(jì)算時間。在現(xiàn)實(shí)生活中由于上述原因,這類方法沒有取得太大的普及。3基于灰度邊緣檢測方法此類方法一般使用兩種方式,一種方式是利用圖像區(qū)域局部對比度明顯,另一種方式為灰度有規(guī)律變化的紋理特征,通過這兩種方式相結(jié)合來定位。(1)基于灰度直方圖的門限化邊緣檢測通過灰色直方圖檢測閾值極限是最常見和最簡單的方法。這種邊緣檢測方法的原理是搜索對象。背景圖像在被攝體上有很好的邊緣。該圖像的灰度直方圖為2個峰值。(2)基于微分的邊緣檢測①一階差分邊緣檢測人像的邊緣點(diǎn)將顯示像素灰度值急劇變化的特征,具有相對較大的差值。當(dāng)差值方向和邊界方向相互垂直時,此時差值最大。因此,只要對f(i,j)的所有方向上的差值進(jìn)行第二次閾值化,就可以通過處理來檢測邊緣像素點(diǎn),從而獲得邊緣圖像。②二階差分邊緣檢測與一階差分邊緣檢測一樣,人像的邊緣點(diǎn)會表現(xiàn)出像素點(diǎn)灰度值急劇變化的特征。圖像的灰度值將用于沿著x,y或者進(jìn)行二次差分,然后通過差分后的一些屬性來檢測邊緣。③根據(jù)邊緣的位置,圖像的灰度值變化很大。相對應(yīng)的連續(xù)函數(shù)的坡度最大。常用的算法有Roberts運(yùn)算符,Prewitt運(yùn)算符和Sobel。另一種更直觀的方法是使用當(dāng)前像素附近的一些像素值合成表面,并計(jì)算像素連續(xù)表面的斜率。最大的梯度就是肖像的邊緣。2.3人臉識別簡介2.3.1人臉識別階段人臉識別作為圖像處理的一次嘗試,目前有了很大發(fā)展和突破。主要流程包含:首先利用機(jī)器分析,對特征信息進(jìn)行提取,然后進(jìn)行查找和匹配,從而達(dá)到識別人臉的目的。目前人臉識別技術(shù)已經(jīng)滲透到我們的生活,比如人臉支付、人臉門禁、人臉購物等等。伴隨著科技的不斷發(fā)展和人們需求不斷地增加,人臉識別技術(shù)也在不斷地成熟和穩(wěn)定,其發(fā)展大概分為三個階段。(1)第一階段人臉識別的創(chuàng)始人Bledose,他把人臉進(jìn)行特征提取,比如組成人臉的眼睛、鼻子等作為參數(shù),人臉識別系統(tǒng)的雛形得到了建立。(2)第二階段因?yàn)樵谑占治鲂畔⒎矫嫒藗冏兊米兊酶雍唵?,?99幾年初,圖像處理的關(guān)鍵發(fā)展方向已經(jīng)從一些基礎(chǔ)的處理轉(zhuǎn)向了整體人臉識別。并且由于計(jì)算機(jī)技術(shù)得到不斷的突破。人臉識別的方法更加呈現(xiàn)百花齊放的狀態(tài)例如:灰度處理,人臉模型等等。(3)第三階段人臉識別技術(shù)是在1990年代后期開發(fā)的,隨著市場需求的持續(xù)增長,它已成為關(guān)注的焦點(diǎn)。在世界上每個國家,我們都在爭奪人臉識別技術(shù)的發(fā)展,但是基于成熟的技術(shù),人臉識別技術(shù)也存在嚴(yán)重的缺陷。直到現(xiàn)在,人臉識別技術(shù)仍然對世界感興趣,并且還在不斷發(fā)展。2.3.2人臉識別方法人臉識別的方法有很多有根據(jù)眼耳口鼻的形狀和它們之間的距離來識別,此外有將圖片進(jìn)行壓縮并且正交變換來進(jìn)行識別,其次有通過機(jī)器學(xué)習(xí)用函數(shù)來進(jìn)行訓(xùn)練識別。此外還有一些常用的模型識別方法,如NM,HNM等。2.4深度學(xué)習(xí)算法及CNN 人工神經(jīng)網(wǎng)絡(luò)是一個動態(tài)系統(tǒng),是一個自適應(yīng)的非線性動態(tài)系統(tǒng)。每個神經(jīng)元在單獨(dú)分開來看的時候其自身的功能和結(jié)構(gòu)對于其他來說是簡單的,但如果我們將由大量神經(jīng)元進(jìn)行組合連接,其呈現(xiàn)的東西是十分強(qiáng)大的。人工神經(jīng)網(wǎng)絡(luò)之所以稱之為人工神經(jīng)網(wǎng)絡(luò),主要是因?yàn)樗芊从橙四X功能的一些基本特征。雖然這只是對人腦功能的抽象化呈現(xiàn)和模擬。但是對于普通的計(jì)算機(jī)來說,他不是單單地執(zhí)行代碼所能呈現(xiàn)的功能,一步一步往下操作,它能在執(zhí)行代碼程序的過程中不斷去適應(yīng)環(huán)境,自我地去學(xué)習(xí),優(yōu)化自身,總結(jié)學(xué)習(xí)上的規(guī)律。因此人工神經(jīng)網(wǎng)絡(luò)在這幾個方面上更接近人腦。在人工神經(jīng)網(wǎng)絡(luò)在一開始像一個初生的嬰兒一樣是一張白紙,他要通過不斷地學(xué)習(xí)才能進(jìn)行工作。比如說在設(shè)定“一”代表“1”,“二”代表“2”以此類推,人工神經(jīng)網(wǎng)絡(luò)便要去學(xué)習(xí)。在現(xiàn)實(shí)生活中神經(jīng)網(wǎng)絡(luò)的優(yōu)勢更多地體現(xiàn)在分類的問題上,比如圖書推薦,酒店推薦等等。像LR或者linearSVM這些分類算法在面對一些非線性分類的時候,LR通常需要靠特征工程做特征映射,而SVM需要選擇核。這些操作往往會增加計(jì)算量,延緩運(yùn)行速度。而神經(jīng)網(wǎng)絡(luò)在具有三層或三層以上結(jié)構(gòu)的時后,它能夠很好地實(shí)現(xiàn)非線性可分。并且計(jì)算量會相比LR或者linearSVM少得多。之前的人工神經(jīng)網(wǎng)絡(luò)存在一個問題:就是數(shù)據(jù)的傳遞都是一整個傳遞,這導(dǎo)致越往后所需要處理的像素參數(shù)會越來越多。直到卷積神經(jīng)網(wǎng)絡(luò)(簡稱ConvNet或CNN)的出現(xiàn)來=才解決此類圖像處理問題[11]。CNN:CNN也稱被為卷積神經(jīng)網(wǎng)絡(luò)。他擁有兩個不同功能的神經(jīng)元。一個是C,另一個是S。C代表的是卷積。主要用于特征提取。S代表子采樣,實(shí)際上是池化操作。LevelC是特征提取的Level[12]。每個神經(jīng)元都只和上層的一部分相連接,在這一部分確定后,其他未連接的部分也會被映射下來。網(wǎng)絡(luò)中的每個處理級別都包含多個功能圖。每個對象都映射在一個平面上,并且平面上的所有神經(jīng)元具有相同的權(quán)重。同時,它主要包含可用于特征分類的函數(shù),可以是S型激活函數(shù)或RELU函數(shù)。Sigmoid的優(yōu)點(diǎn)是輸出范圍有限,并且在傳輸過程中不容易分散數(shù)據(jù)[2]。CNN算法成功的關(guān)鍵是通過減少參數(shù)數(shù)量并證明使用局部連接方法和權(quán)重分配方法的圖像處理優(yōu)勢,從而接近當(dāng)前的生物神經(jīng)網(wǎng)絡(luò)。除了減少參數(shù)數(shù)量外,CNN還使用特征提取。這使您可以直接插入啟用了復(fù)雜圖像預(yù)處理的原始圖像。因此,目前,基于CNN的特征提取正在取代在人工視覺領(lǐng)域已經(jīng)積累了10多年的各種特殊模型或技術(shù),并且該領(lǐng)域幾乎存在標(biāo)準(zhǔn)的預(yù)處理方法。以前,功能是手動開發(fā)的,因?yàn)閷τ诟鞣N可識別的對象有許多有用的功能,并且它們高度依賴于經(jīng)驗(yàn)?,F(xiàn)在,CNN可以輕松做到這一點(diǎn),從而避免了在特征提取和分類過程中數(shù)據(jù)恢復(fù)的復(fù)雜性。第三章系統(tǒng)分析3.1可行性分析人臉識別系統(tǒng)主要目標(biāo)是實(shí)現(xiàn)對人臉的檢測和識別。在確定了任務(wù)之后,我們從以下四方面進(jìn)行可行性分析。3.1.1技術(shù)可行性(1)硬件可行性分析硬件一般主要是指我們計(jì)算機(jī)的配置,目前無論是我們的家用電腦還是實(shí)驗(yàn)室的電腦,在配置方面都基本能夠滿足我們的開發(fā)使用,而且系統(tǒng)的開發(fā)軟件對計(jì)算機(jī)要求并不算太高,因此普通的硬件便能完成系統(tǒng)的開發(fā)。(2)軟件可行性分析人臉識別系統(tǒng)主要采用python為開發(fā)技術(shù),前端實(shí)時檢測攝像頭人臉

,人臉識別主要是使用mtcnn做人臉提取,使用facenet做人臉特征提取,通過通過余弦相似度分類進(jìn)行人臉識別。Python是一個相對成熟的語言,由于其簡單容易使用、標(biāo)準(zhǔn)庫第三方庫多、開源,功能強(qiáng)大,可擴(kuò)展性高等等一系列的優(yōu)點(diǎn),能夠幫助開發(fā)者更加高效簡單的進(jìn)行開發(fā)工作??梢钥闯?,該系統(tǒng)的開發(fā)是沒有問題的。3.1.2操作可行性面部識別系統(tǒng)的界面通過簡單易用的通用界面窗口實(shí)現(xiàn)。用戶只要能夠正常使用就可以登錄并使用計(jì)算機(jī)。并且利用Python語言能簡化開發(fā)。該系統(tǒng)的特點(diǎn)是易于使用,易于管理和出色的交互性,并且使用非常簡單。所以開發(fā)這個系統(tǒng)是完全可行的。3.1.3經(jīng)濟(jì)可行性該系統(tǒng)是提供用戶面部識別的系統(tǒng),并且由于是通過調(diào)用相關(guān)庫來實(shí)現(xiàn)的,因此整個系統(tǒng)的系統(tǒng)開發(fā)和花費(fèi)時間不會太大和太長。整個過程的開發(fā)是獨(dú)立且獨(dú)立進(jìn)行的,要解決所有開發(fā)問題,可以僅使用一臺計(jì)算機(jī)和上述各種軟件。面部認(rèn)證系統(tǒng)所需的硬件和軟件環(huán)境在市場上很容易獲得,程序的開發(fā)主要是控制系統(tǒng)的開發(fā)和維護(hù)。因此,該程序不需要太多的工作和資金,并且系統(tǒng)不是很復(fù)雜,并且開發(fā)周期短且便宜。3.1.4法律可行性該面部識別系統(tǒng)是獨(dú)自開發(fā)的系統(tǒng),在實(shí)際使用中非常重要的貢獻(xiàn)。使用的開發(fā)環(huán)境軟件和數(shù)據(jù)庫是開源的。沒有復(fù)制其他人的代碼或程序。這在法律上是可行的。3.2需求分析所謂需求分析就是,需求人員通過與客戶的溝通,所獲取的信息,然后把這些信息通過需求說明書的方式展示給用戶和開發(fā)人員。在一開始,任夢對于需求的分析時不太重視甚至是不太認(rèn)同的,例如當(dāng)時美國IBM公司為英國電信公司開發(fā)一套信息管理系統(tǒng),在需求不明確的情況下開始開發(fā),最初的工期為一年,由于需求獲取不清晰導(dǎo)致工期推遲了半年多,造成巨大損失。而導(dǎo)致這一切后果的原因就是需求獲取不及時、不清楚、不全面。3.2.1功能需求分析1.人臉檢測:在MTCNN人臉檢測模型中,從照片中提取出對應(yīng)的人臉2.特征提?。喊讶四槇D像輸入到FaceNet,計(jì)算Embedding的特征向量3.人臉識別:判斷兩者之間的余弦距離,若復(fù)合要求,則判定為同一人否則便不是3.2.2性能需求分析一個系統(tǒng)的性能的好壞,直接決定了用戶的體驗(yàn)度。而性能的好壞又取決于系統(tǒng)的架構(gòu)的好與壞。一個優(yōu)秀的系統(tǒng)架構(gòu)一般包含以下幾個方面:(1)模塊化設(shè)計(jì)明確。一個大的系統(tǒng),分為很多小的模塊,每個模塊的劃分清晰明確,每個模塊的功能明確,且模塊之間可以靈活的調(diào)用,實(shí)現(xiàn)低耦合高內(nèi)聚。(2)模塊的劃分,分為很多種類,要保證通用模塊實(shí)現(xiàn)靈活的調(diào)用,特殊模塊,可以隨時根據(jù)系統(tǒng)功能等的變更及時進(jìn)行更改。讓系統(tǒng)的靈活性更高。(3)穩(wěn)定、安全、高效的數(shù)據(jù)建模。數(shù)據(jù)是整個系統(tǒng)的倉庫,只有一個穩(wěn)定、安全、高效的倉庫,才能為系統(tǒng)提供好的數(shù)據(jù)存取和變更。(4)整體結(jié)構(gòu)穩(wěn)定而又靈活。系統(tǒng)的整體架構(gòu)在初期部署的時候,一定要有高度,不但結(jié)構(gòu)清晰,運(yùn)行穩(wěn)定,當(dāng)運(yùn)行出現(xiàn)問題的時候,能夠提供快速的解決方案。3.3開發(fā)環(huán)境分析(1)開發(fā)硬件平臺:CPU:Intel5內(nèi)存:4G以上硬盤:80G以上(2)開發(fā)軟件平臺:操作系統(tǒng):Windows10開發(fā)軟件:pycharm開發(fā)語言:python第四章系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)進(jìn)過系統(tǒng)的分析后,就開始記性系統(tǒng)的設(shè)計(jì),系統(tǒng)設(shè)計(jì)包含總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì)只是一個大體的設(shè)計(jì),經(jīng)過了總體設(shè)計(jì),我們能夠劃分出系統(tǒng)的一些東西,例如文件、文檔、數(shù)據(jù)等。而且我們通過總體設(shè)計(jì),大致可以劃分出了程序的模塊,以及功能。但是只是一個初步的分類,并沒有真正的實(shí)現(xiàn)。整體設(shè)計(jì),只是一個初步設(shè)計(jì),而且,對于一個項(xiàng)目,我們可以進(jìn)行多個整體設(shè)計(jì),通過對比,包括性能的對比、成本的對比、效益的對比,來最終確定一個最優(yōu)的設(shè)計(jì)方案,選擇優(yōu)秀的整體設(shè)計(jì)可以降低開發(fā)成本,增加公司效益,從這一點(diǎn)來講,整體設(shè)計(jì)還是非常重要的。4.1系統(tǒng)設(shè)計(jì)原則(1)數(shù)據(jù)安全性系統(tǒng)的開發(fā)涉及到很多數(shù)據(jù),包括用戶數(shù)據(jù)或者是系統(tǒng)數(shù)據(jù)等,無論是哪種數(shù)據(jù)都需要確保數(shù)據(jù)的安全性,在系統(tǒng)設(shè)計(jì)時必須要采取安全防范措施,以解決潛在的安全問題。(2)易用性系統(tǒng)最終會交付給客戶,用戶通過其權(quán)限進(jìn)行系統(tǒng)的使用,能不能用,以及是否好用,都決定了客戶對系統(tǒng)甚至是開發(fā)公司的印象。好用的系統(tǒng)能夠大大提高操作員的工作效率,從而提升用戶的好感度和忠誠度。(3)柔軟性柔軟性包含范圍較廣,主要是能夠處理各種突發(fā)的情況,也就是我們所說的應(yīng)急能力。由于任何人都無法保證系統(tǒng)的絕對安全,當(dāng)系統(tǒng)出現(xiàn)錯誤時,能夠及時的進(jìn)行補(bǔ)救。(4)擴(kuò)展性系統(tǒng)的可擴(kuò)展性對于我們來說是必要的,這樣便于滿足不同的要求,以及減少支出。4.2系統(tǒng)流程設(shè)計(jì)4.2.1系統(tǒng)開發(fā)流程 在進(jìn)行人臉識別系統(tǒng)開發(fā)時,最先開始的肯定是對于需求的分析,在需求分析之后便是對于系統(tǒng)總體的設(shè)計(jì)(比如結(jié)構(gòu)上,功能上,數(shù)據(jù)上)其次便是功能模塊上(數(shù)據(jù)庫等)的設(shè)計(jì),最后便是系統(tǒng)的測試。本系統(tǒng)的開發(fā)流程如圖4.1所示圖4.1系統(tǒng)開發(fā)流程圖4.2.2人臉識別流程用戶在使用人臉識別時,首先進(jìn)行人臉的檢測,如果發(fā)現(xiàn)人臉然后進(jìn)行識別。流程如圖4.2所示。圖4.2人臉識別流程圖1在MTCNN人臉檢測模型中,從照片中提取出對應(yīng)的人臉。2.把人臉圖像輸入到FaceNet,計(jì)算Embedding的特征向量。3.人臉識別:判斷兩者之間的余弦距離,若復(fù)合要求,則判定為同一人否則便不是,例如當(dāng)特征距離小于1的時候認(rèn)為是同一個人,特征距離大于1的時候認(rèn)為是不同人。4.3系統(tǒng)功能設(shè)計(jì)根據(jù)第三章功能分析,得出人臉識別系統(tǒng)的功能結(jié)構(gòu),如圖4.3所示:圖4.3系統(tǒng)功能結(jié)構(gòu)圖4.4接口設(shè)計(jì)4.4.1外部接口(1)用戶界面用戶界面即為Windows窗口。用戶通過對話框上的菜單,按鈕,文本框等元素與系統(tǒng)進(jìn)行溝通。(2)軟件接口無。(3)硬件接口包括傳統(tǒng)的與鍵盤,鼠標(biāo),顯示器,攝像頭的接口,用來輸入和輸出。4.4.2內(nèi)部接口內(nèi)部接口,使用mtcnn來進(jìn)行人臉的檢測,F(xiàn)aceNet特征提取。4.5系統(tǒng)實(shí)現(xiàn)4.5.1人臉檢測MTCNN是一個多任務(wù)卷積神經(jīng)網(wǎng)絡(luò),他將人臉的區(qū)域檢測和人臉的關(guān)鍵點(diǎn)檢測放在一起來提高性能。特別是在三個CNN階段中,從粗略到準(zhǔn)確地處理預(yù)測人臉和臉部標(biāo)記點(diǎn)的任務(wù)[12]。1:使用P-Net是一個全卷積網(wǎng)絡(luò),用來生成候選窗和邊框回歸向量(boundingboxregressionvectors)。使用Boundingboxregression的方法來校正這些候選窗,使用非極大值抑制(NMS)合并重疊的候選框。全卷積網(wǎng)絡(luò)和FasterR-CNN中的RPN一脈相承。2:使用R-Net改善候選窗。將通過P-Net的候選窗輸入R-Net中,拒絕掉大部分false的窗口,繼續(xù)使用Boundingboxregression和NMS合并。3:最后使用O-Net輸出最終的人臉框和特征點(diǎn)位置。和第二步類似,但是不同的是生成5個特征點(diǎn)位置。網(wǎng)絡(luò)結(jié)構(gòu)如圖4.4.圖4.4mtcnn結(jié)構(gòu)首先將收集到的人臉信息存儲在一個共同的文件夾之中,方便為后續(xù)的人臉檢測提供便利。圖4.5已經(jīng)儲存的人臉在人臉導(dǎo)入完成之后,對已經(jīng)存在的人臉進(jìn)行人臉的檢測和注冊,并且會進(jìn)行兩次檢測,提高檢測率,當(dāng)圖片不符合要求時,會提示注冊失敗,請更換圖片的字樣。圖4.6人臉的檢測和注冊成功4.5.2人臉識別FaceNet用來對比人臉之間的匹配度。其主要思想在多維空間中顯示人臉圖像,并通過空間距離表達(dá)人臉的相似性。如果檢測的人臉和識別的人臉的空間距離較小則為同一人臉,反之則為不同的人臉。如此,在平面圖像中的臉部信息可以通過空間映射來進(jìn)行表現(xiàn),并且可以進(jìn)行對比,達(dá)成人臉識別的功能。FaceNet是一種在機(jī)器學(xué)習(xí)的環(huán)境下的對人臉信息點(diǎn)進(jìn)行映射的方法,并使用三重子損失特征來形成神經(jīng)網(wǎng)絡(luò)。FaceNet的網(wǎng)絡(luò)結(jié)構(gòu)如下圖4.5所示,其中Batch表示的是已經(jīng)輸入的人臉樣本,DEEParchiteture是指一種深度學(xué)習(xí)的框架,然后用L2將圖像的操作映射到一個超球面上,經(jīng)過之前的一系列操作生成深度學(xué)習(xí)之后的特征向量,最后三張圖片輸入的loss。圖4.5facenet網(wǎng)絡(luò)結(jié)構(gòu)運(yùn)行人臉識別代碼,在原人臉已經(jīng)檢測和注冊的情況下,運(yùn)行代碼后,系統(tǒng)自動打開攝像頭,并且識別框內(nèi)人臉,當(dāng)實(shí)時的人臉和已注冊人臉相匹配時,會產(chǎn)生人臉金字塔。具體效果如下圖:圖4.8實(shí)時人臉識別匹配效果4.5.3人臉識別效果運(yùn)行系統(tǒng)。然后進(jìn)行人臉的檢測識別,界面如圖4.6。此外,為驗(yàn)證此人臉識別效果,我在網(wǎng)上找了兩個開元庫,對算法的人臉識別率進(jìn)行了檢測。分別提取了庫中30%的數(shù)據(jù)進(jìn)行檢驗(yàn)識別率為100%。并且生成混淆矩陣。檢驗(yàn)效果如下:圖4.9ORL_embedding識別效果圖4.10YALE_embedding識別效果第五章系統(tǒng)測試在程序開發(fā)完成之后,測試便是很重要的一步,測試的質(zhì)量與產(chǎn)品開發(fā)有關(guān)。必須通過測試滿足客戶對軟件質(zhì)量,性能和可靠性的需求。測試過程必須遵循嚴(yán)格的卓越標(biāo)準(zhǔn)和標(biāo)準(zhǔn)化的原則。該測試的主要目的是檢查系統(tǒng)運(yùn)行期間是否發(fā)生錯誤,并調(diào)試錯誤,直到程序完全執(zhí)行為止。但是,軟件測試可以最大程度地減少錯誤,并且從理論上講不能消除這些錯誤。但是,錯誤越少,系統(tǒng)錯誤的可能性就越小,用戶可以更方便,更安全地使用它。5.1測試環(huán)境與條件處理器:Intel5內(nèi)存:4GB硬盤:80G以上操作系統(tǒng):Win105.2功能測試當(dāng)系統(tǒng)中擁有已注冊圖像的人臉數(shù)據(jù)時,可以和動態(tài)的視頻相匹配,不僅如此,也能通過電腦攝像頭實(shí)時的進(jìn)行人臉的匹配。圖4.8已注冊的人臉圖像適用性測試:利用python語言能在pycharm正常運(yùn)行且正常匹配人臉。測試結(jié)果如下圖:圖4,9匹配人人臉圖4.10攝像頭實(shí)時人臉識別準(zhǔn)確性測試:在兩個公開數(shù)據(jù)集YALE_embedding和ORL_embedding上進(jìn)行算法的實(shí)驗(yàn),并用混淆矩陣表示其精度,驗(yàn)證集有30%,識別率為100%。結(jié)果如下圖:圖4.11ORL_embedding識別率圖4.12YALE_embedding識別率可操作性測試:在pycharm點(diǎn)擊運(yùn)行按鈕能正常運(yùn)行檢測,識別,識別率等功能。本人臉識別系統(tǒng)功能測試如表6.1所示:表6.1功能測試5.3測試結(jié)果分析經(jīng)過對總體測試分析,能夠正確實(shí)現(xiàn)人臉的檢測,檢測之后能正確識別,且支持實(shí)時識別,且識別率有保障??偨Y(jié)與展望本系統(tǒng)通過對python和人臉識別技術(shù)簡介,并且在技術(shù),工作環(huán)境等方面說明了人臉識別系統(tǒng)的可行性,本文結(jié)論及研究成果如下:實(shí)現(xiàn)了基于機(jī)器學(xué)習(xí)的人臉識別系統(tǒng)。通過本次人臉識別系統(tǒng)的研究與實(shí)現(xiàn),我接觸到了一門新的編程語言:python,從一開始的理論知識,到后面的實(shí)踐,我都體會到了其重要性,因?yàn)檫@是第一次我如此完整的從需求分析,設(shè)計(jì),到測試來進(jìn)行開發(fā),所以仍然會有許多不足的地方,也會有許多考慮不到的地方。對于我本人來說我本人是沒有很多太深的了解的,所以在開始設(shè)計(jì)的時候總會出現(xiàn)一些簡單卻又十分繁瑣的問題,例如測不到人臉、識別率不高以及數(shù)據(jù)庫連接有問題已經(jīng)無法實(shí)現(xiàn)參數(shù)的傳遞等等,不過隨著自己對于人臉識別的不斷深入地學(xué)習(xí)以及通過在網(wǎng)上尋找有關(guān)資料下最后都得到了解決,在此過程中,不僅加深了我對于人臉識別專業(yè)知識上的理解,也提高了自己獨(dú)自解決Bug的能力,令我感受更深的是,雖然書上的理論知識雖然是設(shè)計(jì)的必要條件,但是書上的知識也是死的,如何將死的東西變成活的就需要看自己對于姿勢的理解,每個人對于題目的理解,編程的思路和對數(shù)據(jù)的處理都是不同的,這時候便體現(xiàn)出實(shí)踐的重要性,因?yàn)閷?shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。這次畢業(yè)設(shè)計(jì),我不單單是完成了學(xué)校的任務(wù),更重要的的是我提升了我自己,這更是一次寶貴的經(jīng)驗(yàn),為我之后的發(fā)展有很大的幫助。通過這次人臉識別系統(tǒng)的開發(fā),我參考了人臉識別和機(jī)器學(xué)習(xí)的文章和例子,人臉識別這個熱門話題下,有許多參差不齊的文章

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論