日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib

發(fā)布時間:2023/12/10 pytorch 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在最新版的2.4.2中,文檔的更新也是一大亮點,refrence manual擴充了200多頁的內(nèi)容,添加了contrib部分的文檔。contrib就是指OpenCV中新添加的模塊,但又不是很穩(wěn)定,可以認為是一個雛形的部分。這次結(jié)合refman的閱讀,介紹一下FaceRecognizer這個人臉識別類,這個類也是2.4.2更新日志里著重強調(diào)過的更新,配套的文檔也是相當充實。這個類的基類也是Algorithm類,對于Algorithm類的簡單介紹,請參看我之前的blogOpenCV學習筆記(五十)——Algorithm類介紹(core),這個類內(nèi)的接口函數(shù)也是異常簡單,人臉識別的任務也就是兩大部分,訓練和預測,分別對應著train函數(shù)和predict函數(shù),還有對應的數(shù)據(jù)加載保存函數(shù)save和load。不過它當然還可以調(diào)用其基類Algorithm的函數(shù)。特別說明的是,人臉識別中預測的參數(shù)也是可以調(diào)節(jié)的,但這里只給出了train和predict函數(shù),為啥沒有setparameter的函數(shù)呢,那是因為各中人臉識別方法的參數(shù)并不相同,要通過Algorithm的get和set函數(shù)實時的調(diào)整~~v5啊!

先來說說訓練的過程,train函數(shù)的兩個參數(shù)也很簡單,訓練的圖像組vector<Mat>和對應的標簽組vector<int>,這個label標簽只需保證同一個人的標簽相同即可,不需要保證圖像的按標簽順序輸入,方便極了。對于預測,有兩種調(diào)用,其中的參數(shù)有測試圖像、返回的標簽值和測試樣本和標簽樣本的相似性返回的標簽值為-1,說明測試樣本在訓練集中無對應或距離較遠。這里用個FisherFace作為示例說明一下如何訓練和預測:

[cpp] view plaincopy
  • vector<Mat>?images;??
  • vector<int>?labels;??
  • //?images?for?first?person??
  • images.push_back(imread("person0/0.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
  • labels.push_back(0);??
  • images.push_back(imread("person0/1.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
  • labels.push_back(0);??
  • //?images?for?second?person??
  • images.push_back(imread("person1/0.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
  • labels.push_back(1);??
  • images.push_back(imread("person1/1.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
  • labels.push_back(1);??
  • ??
  • Ptr<FaceRecognizer>?model?=?createFisherFaceRecognizer();??
  • model->train(images,?labels);??
  • ??
  • Mat?img?=?imread("person1/2.jpg",?CV_LOAD_IMAGE_GRAYSCALE);??
  • int?predicted?=?model->predict(img);??

  • 當然我們也不需要每次使用都進行一次訓練,可以把訓練好的模型通過save函數(shù)保存成一個文件,下次使用的時候只需load即可

    目前支持的3種人臉識別的方案:特征臉EigenFace、Fisher臉FisherFace、LBP直方圖LBPHFace。分別調(diào)用函數(shù)createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer建立模型

    對于EigenFace兩個輸入?yún)?shù),分別為PCA主成分的維數(shù)num_components和預測時的閾值threshold,主成分這里沒有一個選取的準則,要根據(jù)輸入數(shù)據(jù)的大小而決定,通常認為80維主成分是足夠的。除了這兩個輸入?yún)?shù)外,還有eigenvalues和eigenvectors分別代表特征值和特征向量,mean參數(shù)為訓練樣本的平均值,projections為訓練數(shù)據(jù)的預測值,labels為預測時的閾值。

    對于FisherFace,和EigenFace非常相似,也有num_componentsthreshold兩個參數(shù)和其他5個參數(shù),FisherFace的降維是LDA得到的。默認值為c-1,如果設置的初始值不在(0,c-1]的范圍內(nèi),會自動設定為c-1。

    特別需要強調(diào)的是,EigenFace和FisherFace的訓練圖像和測試圖像都必須是灰度圖,而且是經(jīng)過歸一化裁剪過的

    對于LBPHFace,我想不用過多介紹,LBP簡單和效果是大家都很喜歡的,參數(shù)包括半徑radius,鄰域大小即采樣點個數(shù)neighbors,x和y方向的單元格數(shù)目grid_x,grid_y,還有兩個參數(shù)histograms為訓練數(shù)據(jù)得到的直方圖,labels為直方圖對應的標簽。這個方法也要求訓練和測試的圖像是灰度圖

    接下來應該結(jié)合文檔進一步研究一下這個人臉識別類。我之前大量的人臉實驗都是在matlab下進行的,有了這個利器,我感覺會有越來越多的學生做老師和老板布置的project會選擇用OpenCV,而不是Matlab。希望我們都愛的OpenCV越來越好,越來越強大。歡迎交流

    總結(jié)

    以上是生活随笔為你收集整理的OpenCV学习笔记(五十四)——概述FaceRecognizer人脸识别类contrib的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。