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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

人脸识别示例代码解析(二)——人脸识别解析

發布時間:2023/12/9 pytorch 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人脸识别示例代码解析(二)——人脸识别解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇我們初步分析了下示例代碼facedetector的程序參數解析部分。其中參數解析的過程如下:

其中第4步黃色標注的部分cascadeName,是我們人臉識別分類器的主要參數。
在openCV中,實現了著名的haar特征檢測算法,而依托該算法分類器,我們可以實現人臉識別、定位。

該算法基于特征模板的滑動計算圖像特征,從而區分物體的顯著輪廓。

這些特征模板形似以下圖像:

試想用這些黑白二值圖像”蒙”在你的圖像或部分圖像上,然后你原來的圖像被分成“黑”“白”兩類區域,最后用黑色區域和白色區域的像素進行簡單的加減運算,便能得到圖像的基本特征。

例如,我們將模板窗口(3)“蒙”在鼻子部位,便能得到相契合的特征,將模板窗口(4)放在雙眼部位,同樣能得到與雙眼部位契合的特征。

但是如何根據不同圖像來確定特征模板窗口的大小,和它們應該放置的位置呢。比如上圖,我們怎么知道將特定大小的“上黑下白”特征模板固定在圖像的高度3/4上?

答案就是,我們讓不知勞累的計算機,測試各種位置和大小。

這是一個巨大的工作量,首先我們如果確定具體特征模板窗口大小為24,24。那么我們就得將待檢測圖像分為若干個24,24大小區域,試圖分別用不同特征模板檢測*區域圖像是否“匹配”某特征,那么單單一個窗口匹配次數是大于160000,這依然將是一個巨大的工作量。

但如果引入級聯分類器——Cascade Classifiers,那么工作量就會極大的縮減。

拿人臉檢測來講,先用一些特征,確定該區域圖像“有臉”以及“無臉“,丟掉”無臉“部分,然后再用其他特征檢測,來進一步確定特征的是否存在,以及確定其特征位置。

這個過程使得我們匹配特征的過程產生一個“級聯“的工作模式,每往下走一層,就會”丟掉“一些無關的區域,這樣特征就越來越精確。

從上述過程當中我們可以看到,單獨一個特征不能確定最終結果,而是多個特征的級聯聯合使得最終我們能夠做出一個精確的判斷。

我們把單個特征的檢測叫做弱分類器(因為它不能單獨確定最終結果),而把這些弱分類器級聯成的最終分類器成為強分類器。可見最終的強分類器是在集成算法的基礎上構建的。

好吧,言歸正傳,openCV實現了這個強分類器,用CascadeClassifier類封裝該分類器。你可以實例化該類對象,并設計一個訓練計劃,來訓練想要的特征檢測器。

對與人臉檢測來說,openCV已經幫我們訓練好了分類器,該分類器的參數數據保存在一個xml文件中。

在實際使用過程中,這個文件的路徑將作為重要的參數和被檢測圖像一起傳給CascadeClassifier對象,接著對被檢測圖像中人臉進行定位。

而上一篇中,解析出的參數cascadeName,正是這個文件路徑

我們接著上一篇,繼續往下做,得到cascadeName后,構造CascadeClassifier對象”cascade”。
然后利用classifier對被檢測圖像進行人臉預測。

同樣,我們簡化源代碼,此次只對單張圖像進行檢測。

//根據分類器模板路徑cascadeName構造級聯分類器(CascadeClassifier)對象"cascade"cv::CascadeClassifier cascade(cascadeName);//讀入被檢測圖像Mat image = imread("D:/試驗/test/baby.png");//定義灰度圖像,用于暫存原圖像對應的灰度圖。Mat gray;//將原被檢測圖像從真彩色圖像轉換為灰度圖cvtColor(image, gray, cv::COLOR_BGR2GRAY);//定義一個向量(數組),用于存放所檢測出的人臉位置(注意:可能并不只有一個人臉)vector<Rect> faces;//啟動檢測cascade.detectMultiScale(gray,faces);//用紅色矩形繪制人臉位置結果for (int i = 0; i < faces.size(); i++){cv::rectangle(image, faces[i], Scalar(255, 0, 0));}//顯示最終被“標記”的圖像imshow("檢測人臉", image);//等待用戶輸入任意鍵結束程序waitKey();

運行結果:

最后發下關于類CasadeClassifier的官方文檔解釋,本篇博文多是對該文檔的總結https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html

上一篇-----程序參數解析

下一篇-----微笑識別

總結

以上是生活随笔為你收集整理的人脸识别示例代码解析(二)——人脸识别解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。