模塊14 人臉檢測與人臉識別《計算機視覺處理項目實戰(zhàn)》教學課件_第1頁
模塊14 人臉檢測與人臉識別《計算機視覺處理項目實戰(zhàn)》教學課件_第2頁
模塊14 人臉檢測與人臉識別《計算機視覺處理項目實戰(zhàn)》教學課件_第3頁
模塊14 人臉檢測與人臉識別《計算機視覺處理項目實戰(zhàn)》教學課件_第4頁
模塊14 人臉檢測與人臉識別《計算機視覺處理項目實戰(zhàn)》教學課件_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《計算機視覺處理項目實戰(zhàn)》?精品課件合集?精品課件合集第X章XXXX模塊14人臉檢測與人臉識別基于Haar的人臉檢測CONTENTS目錄01基于Haar的人臉檢測基于Haar的人臉檢測使用OpenCV提供的Haar級聯(lián)分類器來進行人臉檢測。在OpenCV源代碼中的“data\haarcascades”文件夾中包含訓練好的Haar級聯(lián)分類器文件。haarcascade_eye.xml:人眼檢測haarcascade_eye_tree_eyeglasses.xml:眼鏡檢測haarcascade_frontalcatface.xml:貓臉檢測haarcascade_frontalface_default.xml:人臉檢測haarcascade_profileface.xml:側(cè)臉檢測基于Haar的人臉檢測cv2.CascadeClassifier()函數(shù)用于加載分類器,其基本格式如下。faceClassifier=cv2.CascadeClassifier(filename)參數(shù)說明如下。faceClassifier為返回的級聯(lián)分類器對象。filename為級聯(lián)分類器的文件名?;贖aar的人臉檢測級聯(lián)分類器對象的detectMultiScale()方法用于執(zhí)行檢測,其基本格式如下。objects=faceClassifier.detectMultiScale(image[,scaleFactor[,minNeighbors[,flags[,minSize[,maxSize]]]]])參數(shù)說明如下。objects為返回的目標矩形,矩形中為人臉。image為輸入圖像,通常為灰度圖像。scaleFactor為圖像縮放比例。minNeighbors為構(gòu)成目標矩形的最少相鄰矩形個數(shù)。flags在低版本的OpenCV1.x中使用,高版本中通常省略該參數(shù)。minSize為目標矩形的最小尺寸。maxSize為目標矩形的最大尺寸。基于Haar的人臉檢測示例importcv2ascvimg=cv.imread("./image/zns.jpg")gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#實例化檢測器cas=cv.CascadeClassifier("E:/python/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")faces=cas.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(5,5))forfaceinfaces:x,y,w,h=facecv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)cv.imshow("img",img)cv.waitKey(0)cv.destroyAllWindows()

總結(jié)01基于Haar的人臉檢測基于深度學習的人臉檢測

CONTENTS目錄01基于深度學習的人臉檢測基于深度學習的人臉檢測OpenCV的深度神經(jīng)網(wǎng)絡(DeepNeuralNetwork,DNN)模塊提供了基于深度學習的人臉檢測器。DNN模塊中使用了廣受歡迎的深度學習框架,包括Caffe、TensorFlow、Torch和Darknet等。OpenCV提供了兩個預訓練的人臉檢測模型:Caffe和TensorFlow模型。Caffe模型需加載以下兩個文件。totxt:定義模型結(jié)構(gòu)的配置文件。res10_300x300_ssd_iter_140000_fp16.caffemodel:包含實際層權(quán)重的訓練模型文件。TensorFlow模型需加載以下兩個文件。opencv_face_detector.pbtxt:定義模型結(jié)構(gòu)的配置文件。opencv_face_detector_uint8.pb:包含實際層權(quán)重的訓練模型文件。在OpenCV源代碼的“sources\samples\dnn\face_detector”文件夾中提供了模型配置文件,但未提供訓練模型文件??蛇\行該文件夾中的download_weights.py下載上述的兩個訓練模型文件?;谏疃葘W習的人臉檢測01調(diào)用cv2.dnn.readNetFromCaffe()或cv2.dnn.readNetFromTensorflow()函數(shù)加載模型,創(chuàng)建檢測器。02調(diào)用cv2.dnn.blobFromImage()函數(shù)將待檢測圖像轉(zhuǎn)換為圖像塊數(shù)據(jù)。03調(diào)用檢測器的setInput()方法將圖像塊數(shù)據(jù)設置為模型的輸入數(shù)據(jù)。04調(diào)用檢測器的forward()方法執(zhí)行計算,獲得預測結(jié)果05將可信度高于指定值的預測結(jié)果作為檢測結(jié)果,在原圖像中標注人臉,同時輸出可信度作為參考基于深度學習的人臉檢測示例基于深度學習的人臉檢測示例importcv2importnumpyasnpfrommatplotlibimportpyplotaspltdnnnet=cv2.dnn.readNetFromCaffe("totxt","res10_300x300_ssd_iter_140000_fp16.caffemodel")img=cv2.imread("heard.jpg")h,w=img.shape[:2]blobs=cv2.dnn.blobFromImage(img,1.0,(300,300),[104.,117.,123.],False,False)dnnnet.setInput(blobs)detections=dnnnet.forward()faces=0foriinrange(0,detections.shape[2]):confidence=detections[0,0,i,2]ifconfidence>0.8:faces+=1box=detections[0,0,i,3:7]*np.array([w,h,w,h])x1,y1,x2,y2=box.astype("int")y=y1-10ify1-10>10elsey1+10text="%.3f"%(confidence*100)+'%'cv2.rectangle(img,(x1,y1),(x2,y2),(255,0,0),2)cv2.putText(img,text,(x1+20,y),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,0,255),2)cv2.imshow('faces',img)cv2.waitKey(0)總結(jié)01基于深度學習的人臉檢測EigenFaces人臉識別CONTENTS目錄01EigenFaces人臉識別EigenFaces人臉識別

特征臉技術(shù)是用于人臉識別以及其它涉及到人臉處理的一種方法。首先把一批人臉圖像轉(zhuǎn)換成一個特征向量集,稱為“Eigenfaces”,即“特征臉”,它們是最初訓練圖像集的基本組件。識別的過程是把一副新的圖像投影到特征臉子空間,并通過它的投影點在子空間的位置以及投影線的長度來進行判定和識別。cv2.face.EigenFaceRecognizer_create()函數(shù)的基本格式如下。recognizer=cv2.face.EigenFaceRecognizer_create([num_components[,threshold]])參數(shù)說明num_compnents在PCA中要保留的分量個數(shù)threshold進行人臉識別所采用的閾值。EigenFaces人臉識別EigenFaces使用主要成分分析(PrincipalComponentAnalysis,PCA)方法將人臉數(shù)據(jù)從高維處理成低維后,獲得人臉數(shù)據(jù)的主要成分信息,進而完成人臉識別。調(diào)用cv2.face.EigenFaceRecognizer_create()方法創(chuàng)建EigenFaces識別器調(diào)用識別器的train()方法用已知圖像訓練模型調(diào)用識別器的predict()方法用未知圖像進行識別,確認其身份。010203EigenFaces人臉識別EigenFaces識別器train()方法的基本格式如下。recognizer.train(src,labels)參數(shù)說明如下。src為用于訓練的已知圖像數(shù)組。所有圖像必須為灰度圖像,且大小要相同。labels為標簽數(shù)組,與已知圖像數(shù)組中的人臉一一對應,同一個人的人臉標簽應設置為相同值。EigenFaces識別器predict()方法的基本格式如下。label,confidence=recognizer.predict(testimg)參數(shù)說明如下。testimg為未知人臉圖像,必須為灰度圖像,且與訓練圖像大小相同。label為返回的標簽值。confidence為返回的可信度,表示未知人臉和模型中已知人臉之間的距離。0表示完全匹配,低于5000可認為是可靠的匹配結(jié)果。EigenFaces人臉識別示例importcv2ascvimportnumpyasnpimages=[]images.append(cv.imread("./images/1/c1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d1.png",cv.IMREAD_GRAYSCALE))labels=[0,1]recognizer=cv.face.EigenFaceRecognizer_create()recognizer.train(images,np.array(labels))predict_image=cv.imread("./images/1/c3.png",cv.IMREAD_GRAYSCALE)label,confidence=recognizer.predict(predict_image)print("label=",label)print("confidence=",confidence)總結(jié)01EigenFaces人臉識別FisherFaces人臉識別CONTENTS目錄01FisherFaces人臉識別FisherFaces人臉識別FisherFaces使用線性判別分析(LinearDiscriminantAnalysis,LDA)方法實現(xiàn)人臉識別。調(diào)用cv2.face.FisherFaceRecognizer_create()函數(shù)創(chuàng)建FisherFaces識別器調(diào)用識別器的predict()方法用未知圖像進行識別,確認其身份。調(diào)用識別器的train()方法用已知圖像訓練模型123FisherFaces人臉識別importcv2importnumpyasnpimages=[]images.append(cv.imread("./images/1/c1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/c2.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d1.png",cv.IMREAD_GRAYSCALE))images.append(cv.imread("./images/1/d2.png",cv.IMREAD_GRAYSCALE))labels=[0,0,1,1]recognizer=cv2.face.FisherFaceRecognizer_create()recognizer.train(images,np.array(labels))predict_image=cv2.imread("./images/1/c3.png",cv2.IMREAD_GRAYSCALE)label,confidence=recognizer.predict(predict_image)print("label=",label)print("confidence=",confidence)示例總結(jié)01FisherFaces人臉識別LBPH人臉識別CONTENTS目錄01LBPH人臉識別LBPH人臉識別LBPH(LocalBinaryPatternsHistogram,局部二進制編碼直方圖)所使用的模型基于LBP(局部二值模式)算法。LBPH算法的基本原理是,將像素點A的值與其最鄰近的8個像素點的值逐一比較:如果A的像素值大于其臨近點的像素值,則得到0。LBPH是唯一允許模型樣本人臉和檢測的人臉在形狀、大小上可以不同的人臉識別算法。LBPHLBPH人臉識別在OpenCV中,它提供cv2.face.LBPHFaceRecognizer_create()函數(shù)生成LBPH識別器實例模型,語法格式如下所示。cv2.face.LBPHFaceRecognizer_create(radius,neighbors,grid_x,grid_y,threshold)參數(shù)說明radius半徑值,默認值為1。neighbors鄰域點的個數(shù),默認采用8鄰域,根據(jù)需要可以計算更多的鄰域點。grid_x將LBP特征圖像劃分為一個個單元格時,每個單元格在水平方向上的像素個數(shù)該參數(shù)值默認為8。即將LBP特征圖像在行方向上8個像素為單位分組。grid_y將LBP特征圖像劃分為一個個單元格時,每個單元格在垂直方向上的像素個數(shù)該參數(shù)值默認為8。即將LBP特征圖像在列方向上8個像素為單位分組。threshold在預測時所使用旳閾值。如果大于該閾值,就認為沒有識別到任何目標對象。LBPH人臉識別

LBPH識別器train()方法的基本格式如下。recognizer.train(src,labels)參數(shù)說明如下。src為用于訓練的已知圖像數(shù)組。所有圖像必須為灰度圖像,且大小要相同。labels為標簽數(shù)組,與已知圖像數(shù)組中的人臉一一對應,同一個人的人臉標簽應設置為相同值。

LBPH識別器predict()方法的基本格式如下。label,confidence=recognizer.predict(testimg)參數(shù)說明如下。testimg為未知人臉圖像,必須為灰度圖像,且與訓練圖像大小相同。label為返回的識別標簽值。confidence為返回的可信程度,表示未知人臉和模型中已知人臉之間的距離。0表示完全匹配,低于50可認為是非常可靠的匹配結(jié)果。LBPH人臉識別importcv2importnumpyasnpimages=[]images.append(cv2.imread("

溫馨提示

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

評論

0/150

提交評論