版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
人臉識別人臉識別是一種基于人的臉部特征信息進行身份識別的生物識別技術。通常是指用攝像機或攝像頭采集含有人臉的圖像或視頻流,并自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部識別的技術。人臉識別的基本步驟是人臉檢測和匹配識別,即是對檢測的人臉進行分類。本章節(jié)將會從人臉檢測入手完成一個基本的人臉識別程序。Section人臉檢測人臉識別程序人臉匹配和識別人臉檢測人臉檢測是對圖像中的人臉進行定位。進行人臉檢測時通常使用Haar分類器對圖像進行人臉檢測。本質上是通過先驗知識得到專用于對人臉進行特征提取的模板,使用提取的特征進行分類器的訓練,最后訓練好的分類器可以高準確率地分辨出提取的特征是否為人臉。Haar分類器主要由Haar-like特征、積分圖、級聯AdaBoost算法組成。其中Haar-like特征對應人臉特征提取,積分圖用來優(yōu)化提取到的大量參數,級聯AdaBoost對目標圖像的特征點進行降維,選擇出利于圖像分類的最優(yōu)特征點,并進行組合成為級聯檢測器,從而利用其檢測器進行判斷目標圖像中的內容是否為人臉。Haar分類器中的級聯AdaBoost訓練需要大量的數據,但是OpenCV已經為我們準備好了訓練好的分類器參數xml文件,并存放在Python安裝目錄下的Lib\site-packages\cv2\data路徑下??梢詤⒖加覉D??梢钥吹铰窂较麓娣帕薶aar分類器對各種檢測目標訓練的分類器參數,這里我們選擇默認人臉檢測參數haarcascade_frontalface_default.xml和人眼檢測的參數haarcascade_eye.xml,將兩份文件到工程目錄下方便調用。接下來我們來實現實時人臉檢測的程序,效果如圖。程序中我們創(chuàng)建分類器對人臉進行檢測,并在檢測到的人臉ROI區(qū)域上檢測人眼區(qū)域,最后繪制檢測到的ROI區(qū)域。用于傳入xml參數文件的路徑生成級聯分類器實例。cv2.CascadeClassifier()用于獲取對應分類器圖像檢測結果:第一個參數,numpy.ndarray類型的img,表示待檢測圖像。第二個參數,float類型的scaleFactor,表示指定圖像壓縮比例。第三個參數,int類型的minNeighors,表示構成檢測目標的相鄰矩形的最小個數,默認值為3,可以通過增加數值來降低誤識別率。cv2.CascadeClassifier.detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)->objects第四個參數,bool類型的flags,無實際意義。第五個參數,tuple類型的minSize,表示最小的矩形候選框大小,小于此值的矩形候選框會忽略。第六個參數,tuple類型的maxSize,表示最大的矩形候選框大小,大于此值的矩形候選框會忽略。第一個返回的參數,numpy.ndarray類型的objects,表示檢測到的矩形候選框集合,元素為[x,y,w,h]分別表示矩形候選框的(x,y)坐標以及大小(w,h)。cv2.CascadeClassifier.detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)->objects人臉識別程序我們通過學習人臉檢測這節(jié)的內容,了解了如何使用OpenCV進行對人臉檢測。在接下來的程序中,我們將利用上節(jié)所學知識,實現一個具有完整功能的人臉識別程序,即具有人臉采集、人臉檢測和人臉識別功能。人臉識別程序主要包括人臉采集及檢測模塊和人臉的匹配識別模塊,即先從圖像或視頻資源中檢測人臉并保存,并使用OpenCV提供的模型進行訓練保存訓練參數,最后應用這些訓練參數完成對人臉的判別實現識別。人臉識別程序的項目結構如下:其中generate.py為人臉檢測及采集模塊,train.py和face_recognition.py屬于人臉的匹配識別模塊。faces、test和train文件夾分別用于存放人臉數據、用于測試人臉識別程序的視頻文件和用于人臉檢測和采集的視頻文件。人臉識別程序還提供了從攝像頭獲取視頻流來采集人臉數據的選項。人臉檢測模塊與人臉采集模塊讀取train文件夾中人臉數據并進行采集,程序運行效果如圖,并將采集到的人臉數據以.pgm格式存放。程序中對定位到的人臉進行裁剪并縮放為200×200的大小,最后保存為.pgm灰度圖格式,在檢測過程中設定了20幀的檢測間隔以便能截取到不同姿態(tài)的人臉,從而提高人臉識別程序的識別率。用于對圖像進行縮放:第一個參數,numpy.ndarray類型的src,進行縮放的圖像。第二個參數,tuple類型的dsize,表示縮放目標的具體大小,例如(width,height)分別表示縮放目標的寬、高。第三個參數,numpy.ndarray類型的src,表示縮放后的目標圖像,需要與原圖擁有相同大小和類型。cv2.resize(src,dsize,dst,fx,fy,interpolation)->dst第四個參數,float類型的fx,表示縮放目標x軸方向的縮放因子。當數值為0時,按照dsize參數進行縮放。第五個參數,float類型的fy,表示縮放目標y軸方向的縮放因子。當數值為0時,按照dsize參數進行縮放。第六個參數,int類型的interpolation,表示縮放過程中的縮放插值算法。默認為cv2.INTER_LINEAR。第一返回的參數,numpy.ndarray類型的dst,表示縮放后的目標圖像,同第三個參數。cv2.resize(src,dsize,dst,fx,fy,interpolation)->dst其中增加了coolgirl和coolgirl_1兩個文件夾以及復數的.pgm人臉圖像,對應coolgirl和coolgirl_1兩個人。人臉匹配和識別
通過人臉檢測一節(jié)人臉檢測及采集后,我們獲得了人臉數據,在對人臉進行匹配和識別的應用之前,我們還需要利用該人臉數據進行模型的訓練,才能應用在人臉識別模塊中。接下來我們來學習什么是訓練模型,如何進行訓練模型,并如何利用訓練好的模型進行人臉識別。這里說的模型是指機器學習中的概念,即是指能對數值化的圖像、文字、語言等生活中的數據的變化和關聯進行運算的一個復雜的復合函數。例如,我們對程序輸入一幅coolgirl圖像,程序可以“認出”coolgirl。訓練模型則是指通過輸入多個或者大量的數值化后的生活中的數據,對模型進行參數優(yōu)化,來提升這個模型的準確率。所以訓練模型就是指對模型參數優(yōu)化的過程。 訓練模型的程序通過傳入faces文件夾中采集的人臉數據來訓練OpenCV庫中的LBPH模型,最后將優(yōu)化的模型參數保存在face_recognizer.yml文件中。以便后續(xù)人臉識別程序的使用。訓練模型訓練模型程序中,字典names記錄每個人名字對應的唯一序列號,用于在訓練模型時標識人臉數據,序列號labels在機器學習中稱之為標簽label。使用pickle庫將標簽與人名的鍵值保存在names.pickle文件中,用于在后續(xù)人臉識別中通過標簽找到對應的人名。程序處理過程如圖所示。訓練模型訓練模型在程序中我們使用cv2.face.LBPHFaceRecognizer_create創(chuàng)建人臉識別模型對象recognizer,調用recognizer.train()函數和recognizer.save()函數完成對模型的訓練和訓練參數的存儲。訓練模型用于對傳入的圖像集合進行訓練recognizer.train()函數訓練模型用于對傳入的圖像集合進行訓練:第一個參數,list類型的src,表示進行模型訓練的圖像集合。第二個參數,numpy.ndarray類型的labels,src圖像集合對應的標簽的集合。需要注意因每個圖像和標簽一一對應,故len(src)==labels.shape[0],即src和labels集合長度必須相等。cv2.face.LBPHFaceRecognizer_create().train(src,labels)訓練模型用于保存訓練的參數:第一個參數,str類型的src,表示模型的參數信息保存地址,模型參數文件為.xml或.yaml格式。cv2.face.LBPHFaceRecognizer_create().save(src)訓練模型識別部分程序使用存儲在face_recognition.yml中的訓練后的參數來加載模型,使用模型對定位到的人臉區(qū)域進行預測并判別實現識別,如下圖所示。人臉識別人臉識別人臉識別人臉識別在程序中我們使用cv2.face.LBPHFaceRecognizer_create()函數創(chuàng)建人臉識別模型對象recognizer,調用recognizer.read()函數和recognizer.predict()函數分別完成對模型的讀取和預測。在程序中我們使用cv2.face.LBPHFaceRecognizer_create()函數創(chuàng)建人臉識別模型對象recognizer,調用recognizer.read()函數和recognizer.predict()函數分別完成對模型的讀取和預測。人臉識別完成對模型的讀取:第一個參數,str類型的src,表示加載的模型參數信息的地址,模型參數文件為.xml或.yaml格式。人臉識別recognizer.read(filename)完成對模型的預測
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三單元 第13課時 反比例函數綜合題
- 色彩考試答案及題目
- 2026 年中職經管類(經管類基礎)試題及答案
- 辦公樓中央空調風管清洗合同協議(2025年)
- 辦公場所租賃合同協議2025年補充條款
- 2024年中考道德與法治(新疆)第二次模擬考試(含答案)
- 外部表數據清洗與融合
- 2025年河北省公需課學習-《中華人民共和國海洋環(huán)境保護法》解讀
- 2025年八大特殊作業(yè)安全知識考試題及答案(共50題)
- 常州數學面試真題及答案
- 2025年重慶市大渡口區(qū)事業(yè)單位考試試題
- 管道施工圍擋施工方案
- 城市綠化生態(tài)修復項目實施方案
- 西藏酥油茶的課件
- 安裝預制檢查井施工方案
- 急性心肌梗死治療課件
- 樹木砍伐安全培訓課件
- 風電場冬季防火知識培訓課件
- 中國郵政2025南通市秋招綜合管理職能類崗位面試模擬題及答案
- 源網荷儲一體化項目并網調試實施方案
- 《〈京津冀建設工程計價依據-預算消耗量定額〉城市地下綜合管廊工程》第一冊土建工程
評論
0/150
提交評論