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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

OpenCV用于人脸检测

發(fā)布時間:2025/7/25 pytorch 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV用于人脸检测 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

from: http://www.rs-online.com/designspark/electronics/knowledge-item/content-862

一個人的臉部特征可以傳達(dá)很多信息,如性別,大致年齡,性別以及情感等,因此,在過去三十多年的時間里有大量學(xué)者熱衷于對人臉檢測與人臉識別的研究。

人臉檢測(Face Detection)是指在輸入圖像中確定所有人臉(如果存在) 的位置、大小和位姿的過程。人臉檢測作為人臉信息處理中的一項(xiàng)關(guān)鍵技術(shù),近年來已成為模式識別與計(jì)算機(jī)視覺領(lǐng)域內(nèi)一項(xiàng)受到普遍重視,研究十分活躍的課題。人臉識別或辨認(rèn)、人臉定位以及人臉追蹤等都與人臉檢測密切相關(guān)。

人臉定位的目的是確定圖像中人臉的位置。假設(shè)一幅圖像中只存在一張臉,則面部特征檢測的目的是檢測特征的存在和位置,如眼睛、鼻子(鼻孔) (眉毛) (嘴) (嘴唇)耳朵等。人臉識別或辨認(rèn)是將輸入圖像與數(shù)據(jù)庫中的圖像比對,如果存在,報告匹配結(jié)果。人臉識別的目的是檢驗(yàn)輸入圖像中的個體的身份,而人臉追蹤方法是實(shí)時地、連續(xù)地估計(jì)在圖像序列中的人臉的位置和可能的方向。面部表情識別涉及識別人類的情感狀態(tài)(高興、悲傷、厭惡等) 。很明顯,在任何解決上述問題的自動識別系統(tǒng)中,人臉檢測是第一步。

人臉檢測應(yīng)用

人臉檢測可用于生物特征識別,通常做為人臉識別系統(tǒng)的一部分。人臉檢測也可以用于視頻監(jiān)聽、人機(jī)交互和圖像數(shù)據(jù)庫管理。一些最新的數(shù)碼相機(jī)使用人臉檢測來自動對焦。人臉檢測也獲得了市場的興趣。電視機(jī)上可以集成攝像頭來檢測任何走過的人臉,然后計(jì)算該用戶的種族、性別和年齡范圍。一旦獲得這些信息,可以針對性的播放廣告。

人臉檢測也可以用于節(jié)約能源。人們看電視或電腦的時候往往會做其他工作,這時候普通的顯示器不能自動降低亮度來節(jié)省能源。智能系統(tǒng)可以識別用戶的面部朝向,當(dāng)用戶不看屏幕時,可以自動降低亮度;在用戶重新看屏幕時,再增加亮度。

隨著近些年來國際形勢的變化,特別是 9.11 事件之后,各國對自身重要設(shè)施的安保性能越發(fā)重視,也積極研發(fā)了一些自動人臉識別系統(tǒng)并投入實(shí)用。比如,美國 Identix 公司的 FaceIt系統(tǒng),該系統(tǒng)基于局部特征分析(LFA),能在不同的光照,膚色,姿態(tài),表情情況下得到良好的檢測性能。我國的生物特征認(rèn)證與安全技術(shù)研究中心(CBSR)則在 2004 年成功研制出了基于人臉、指紋、虹膜三種識別方法的快速通關(guān)系統(tǒng)(MRTD),取得了國際先進(jìn)的整體性能。

人臉檢測主要難點(diǎn)

人臉的自動檢測是一類具有很大挑戰(zhàn)性的問題,其主要難點(diǎn)在于:

(1)人臉是一類高度非剛性的目標(biāo),存在相貌,表情,膚色等差異;

(2)人臉上可能會存在一些附屬物,諸如,眼鏡,胡須等;

(3)人臉的姿態(tài)變化萬千,并且可能存在遮擋物;

(4)待檢測圖像性質(zhì)的差異。比如:待檢圖像的分辨率;攝錄器材的質(zhì)量等;

(5)光源的種類和角度。不同種類和角度的光源會對待檢測的人臉產(chǎn)生不同性質(zhì)的反射和不同區(qū)域的陰影。

人臉檢測算法實(shí)現(xiàn)

到2000年為止,已經(jīng)出現(xiàn)非常多的技術(shù)應(yīng)用于檢測人臉,但是都存在處理速度太慢或可靠性低的問題。直到2001年Viola和Jones提出了基于Haar特征的級聯(lián)分類器用于對象檢測,并于2002年由Lienhart和Maydt經(jīng)過改進(jìn),狀況才得到改變。這種對象檢測器即快速又可靠,并且可以直接在OpenCV中使用這種分類器。還有一種是基于LBP特征的級聯(lián)分類器,速度比Haar分類器快好幾倍。Haar分類器的訓(xùn)練是獨(dú)立于人臉檢測過程的。分類器的訓(xùn)練分為兩個階段:?

A.?創(chuàng)建樣本,用OpenCV自帶的creatsamples.exe完成。?

B.?訓(xùn)練分類器,生成xml文件,由OpenCV自帶的haartraining.exe完成。

OpenCV中的這兩種分類器都已經(jīng)是訓(xùn)練好的,可以直接使用。檢測流程如下:

?

Viola-Jones人臉檢測算法的主要貢獻(xiàn):

1. 提出積分圖像(integral image),從而可以快速計(jì)算Haar-like特征。

Haar-like型特征是Viola等人提出的一種簡單矩形特征,因?yàn)轭愃艸aar小波而得名。Haar型特征的定義是黑色矩形和白色矩形在圖像子窗口中對應(yīng)的區(qū)域的權(quán)重灰度級總和之差。算子數(shù)量龐大時上述計(jì)算量顯得太大,Viola等人發(fā)明了積分圖方法,使得計(jì)算速度大大加快。

2. 利用Adaboost學(xué)習(xí)算法進(jìn)行特征選擇和分類器訓(xùn)練,把弱分類器組合成強(qiáng)分類器。

在離散Adaboost算法中,Haar-like特征算子計(jì)算結(jié)果減去某閾值,便可視為一個人臉檢測器。因?yàn)槠錅?zhǔn)確率不高,稱為弱分類器。Adaboost算法的循環(huán)中,首先利用各種弱分類器對訓(xùn)練圖片庫進(jìn)行分類,準(zhǔn)確度最高的弱分類器保留下來,同時提高判斷錯誤的圖片的權(quán)重,進(jìn)入下一循環(huán)。最終將每次循環(huán)所保留的弱分類器組合起來,成為一個準(zhǔn)確的人臉檢測器,稱為強(qiáng)分類器。

3. 采用分類器級聯(lián)提高效率。

瀑布型級聯(lián)檢測器是針對人臉檢測速度問題提出的一種檢測結(jié)構(gòu)。瀑布的每一層是一個由adaboost算法訓(xùn)練得到的強(qiáng)分類器。設(shè)置每層的閾值,是的大多數(shù)人臉能夠通過,在此基礎(chǔ)上盡量拋棄反例。位置越靠后的層越復(fù)雜,具有越強(qiáng)的分類能力。?這樣的檢測器結(jié)構(gòu)就想一系列篩孔大小遞減的篩子,每一步都能篩除一些前面篩子樓下的反例,最終通過所有篩子的樣本被接受為人臉。


OpenCV人臉檢測原理

人臉檢測屬于目標(biāo)檢測(object detection) 的一部分,主要涉及兩個方面:

  • 先對要檢測的目標(biāo)對象進(jìn)行概率統(tǒng)計(jì),從而知道待檢測對象的一些特征,建立起目標(biāo)檢測模型。
  • 用得到的模型來匹配輸入的圖像,如果有匹配則輸出匹配的區(qū)域,否則什么也不做。
  • OpenCV中Haar分類器的路徑:

    haarcascades目錄下還有人的全身,眼睛,嘴唇,側(cè)臉,鼻子,上半身等的Haar分類器。

    那么我們該如何利用呢?可以參見這篇博文——【OpenCV入門指南】第十三篇 人臉檢測:http://blog.csdn.net/morewindows/article/details/8426318。

    這篇博文寫的非常詳細(xì)。以下摘錄一些主要內(nèi)容。

    使用人臉的Haar特征分類器非常之簡單,直接使用cvHaarDetectObjects。下面來看看這個函數(shù)的介紹。

    函數(shù)功能:檢測圖像中的目錄

    函數(shù)原型

    CVAPI(CvSeq*) cvHaarDetectObjects(

    ? const CvArr* image,

    ? CvHaarClassifierCascade* cascade,

    ? CvMemStorage* storage,

    ? double scale_factor CV_DEFAULT(1.1),

    ? int min_neighbors CV_DEFAULT(3),

    ? int flags CV_DEFAULT(0),

    ? CvSize min_size CV_DEFAULT(cvSize(0,0)),

    ? CvSize max_size CV_DEFAULT(cvSize(0,0))

    );

    函數(shù)說明

    第一個參數(shù)表示輸入圖像,盡量使用灰度圖以加快檢測速度。

    第二個參數(shù)表示Haar特征分類器,可以用cvLoad()函數(shù)來從磁盤中加載xml文件作為Haar特征分類器。

    第三個參數(shù)為CvMemStorage類型,大家應(yīng)該很熟悉這個CvMemStorage類型了,《OpenCV入門指南》中很多文章都介紹過了。

    第四個參數(shù)表示在前后兩次相繼的掃描中,搜索窗口的比例系數(shù)。默認(rèn)為1.1即每次搜索窗口依次擴(kuò)大10%

    第五個參數(shù)表示構(gòu)成檢測目標(biāo)的相鄰矩形的最小個數(shù)(默認(rèn)為3個)。如果組成檢測目標(biāo)的小矩形的個數(shù)和小于 min_neighbors - 1 都會被排除。如果min_neighbors 為 0, 則函數(shù)不做任何操作就返回所有的被檢候選矩形框,這種設(shè)定值一般用在用戶自定義對檢測結(jié)果的組合程序上。

    第六個參數(shù)要么使用默認(rèn)值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果設(shè)置為CV_HAAR_DO_CANNY_PRUNING,那么函數(shù)將會使用Canny邊緣檢測來排除邊緣過多或過少的區(qū)域,因此這些區(qū)域通常不會是人臉?biāo)趨^(qū)域。

    第七個,第八個參數(shù)表示檢測窗口的最小值和最大值,一般設(shè)置為默認(rèn)即可。

    函數(shù)返回值

    函數(shù)將返回CvSeq對象,該對象包含一系列CvRect表示檢測到的人臉矩形。

    這是該博文的其中一個運(yùn)行結(jié)果:

    如果你對OpenCV有所了解,可以到上面提出的博文頁面參考具體的原代碼。


    總結(jié)

    以上是生活随笔為你收集整理的OpenCV用于人脸检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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