網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、人臉檢測(cè)算法分類
目前人臉檢測(cè)方法主要分為兩大類,基于知識(shí)和基于統(tǒng)計(jì)。
基于知識(shí)的人臉檢測(cè)方法主要包括:模板匹配,人臉特征,形狀與邊緣,紋理特征,顏色特征。
基于統(tǒng)計(jì)的人臉檢測(cè)方法主要包括:主成分分析與特征臉?lè)ǎ窠?jīng)網(wǎng)絡(luò)模型,隱馬爾可夫模型,支持向量機(jī),Adaboost算法。
基于知識(shí)的方法將人臉看成不同特征的特定組合,即通過(guò)人臉的眼睛、嘴巴、鼻子、耳朵等特征及其組合關(guān)系來(lái)檢測(cè)人臉。
基于統(tǒng)計(jì)的方法將人臉看成統(tǒng)一的二維像素矩陣,通過(guò)大量的樣本構(gòu)建人臉子空間,通過(guò)相似度的大小來(lái)判斷人臉是否存在。
二、Haar分類器算法
本文介紹的Haar分類器方法,包含了Adaboost算法。
Haar算法實(shí)際上是運(yùn)用了boosting算法中的Adaboost算法。Haar分類器利用Adaboost算法構(gòu)建一個(gè)強(qiáng)分類器進(jìn)行級(jí)聯(lián),而在底層特征抽取上采用的是高校的矩形特征以及積分圖方法。
Haar分類器=類Haar特征+積分圖法+Adaboost算法+級(jí)聯(lián)。
Haar分類器主要步驟如下:
1. 提取類Haar特征;
2. 利用積分圖法對(duì)類Haar特征提取進(jìn)行加速;
3. 使用Adaboost算法訓(xùn)練強(qiáng)分類器,區(qū)分出人臉和非人臉;
4. 使用篩選式級(jí)聯(lián)把強(qiáng)的分類器級(jí)聯(lián)在一起,從而提高檢測(cè)準(zhǔn)確度。
2.1 人臉檢測(cè)的大概流程
我們用一個(gè)小的窗口在一幅圖片中不斷的滑動(dòng),每滑動(dòng)到一個(gè)位置,就對(duì)該小窗口內(nèi)的圖像進(jìn)行特征提取,若提取到的特征通過(guò)了所有訓(xùn)練好的強(qiáng)分類器的判定,則我們判定該小窗口的圖片內(nèi)含有人臉。
2.2 Haar-like特征
Viola牛們提出的Haar-like特征如下:
將Haar-like特征在圖片上進(jìn)行滑動(dòng),在每個(gè)位置計(jì)算白色區(qū)域?qū)?yīng)的像素值的和減去黑色區(qū)域?qū)?yīng)的像素值的和,從而提取出該位置的特征,人臉區(qū)域與非人臉區(qū)域提取出的特征值不同,從而區(qū)分出人臉區(qū)域和非人臉區(qū)域。
我們可以用多個(gè)矩形特征計(jì)算得到一個(gè)區(qū)分度更大的特征值,從而增加人臉區(qū)域和非人臉區(qū)域的區(qū)分度。那么該怎么組合這些矩形特征才能得到更好的區(qū)分度呢?Adaboost算法就是用來(lái)解決這個(gè)問(wèn)題的。
2.3 Adaboost算法
Adaboost算法是一種一般性的分類器性能提升算法,不僅僅是限定于一種算法。Adaboost算法可以用來(lái)更好地選擇矩形特征的組合,而這些矩形特征的組合就構(gòu)成了分類器,分類器以決策樹的方式存儲(chǔ)這些矩形特征組合。
Adaboost是基于boosting算法的,而boosting算法涉及到弱分類器和強(qiáng)分類器的概念。弱分類器是基于弱學(xué)習(xí)的,其分類正確率較低,但是較容易獲得,強(qiáng)分類器是基于強(qiáng)學(xué)習(xí),其分類正確率較高,但是較難獲得。
Kearns和Valiant兩個(gè)大神提出弱學(xué)習(xí)和強(qiáng)學(xué)習(xí)是等價(jià)的,并且證明只要樣本充足,弱學(xué)習(xí)可以通過(guò)一定的組合獲得任意精度的強(qiáng)學(xué)習(xí)。這個(gè)證明為boostting算法提供了理論基礎(chǔ),使其成為一個(gè)能夠提高分類器性能的一般性方法。
而boosting算法主要存在兩個(gè)問(wèn)題,一個(gè)是它需要預(yù)先知道弱分類器的誤差,另一個(gè)是它在訓(xùn)練后期會(huì)專注于幾個(gè)難以分類的樣本,因此會(huì)變得不穩(wěn)定。針對(duì)這些問(wèn)題,后來(lái)Freund和Schapire提出了實(shí)際可行的Adaboost算法。
2.4 弱分類器的構(gòu)建
我們可以用決策樹來(lái)構(gòu)建一個(gè)簡(jiǎn)單的弱分類器, 將提取到的特征與分類器的特征進(jìn)行逐個(gè)比較,從而判斷該特征是否屬于人臉,如下圖所示:
該分類器的重點(diǎn)在于閾值的設(shè)定。閾值的設(shè)定方法如下:
(1)對(duì)于每個(gè)分類器計(jì)算訓(xùn)練樣本的特征值;
(2)對(duì)這些特征值進(jìn)行排序;
(3)計(jì)算所有屬于人臉的樣本的特征值的和t1和所有屬于非人臉的樣本的特征值的和t0;
(4)計(jì)算第i個(gè)樣本前所有屬于人臉的樣本的特征值的和s1is1i和屬于非人臉的樣本的特征值的和s0is0i;
(5)計(jì)算r=min((s1+(t0i?s0i)),s0+(t1i?s1i))r=min((s1+(t0i?s0i)),s0+(t1i?s1i))。
計(jì)算得到的最小的rr值即為所求閾值。有了閾值,我們便用決策樹構(gòu)成了一個(gè)簡(jiǎn)單的弱分類器,如下所示:
其中x子圖像窗口,f是特征,p的作用是控制不等號(hào)方向,使得不等號(hào)都為"<",θθ是閾值。
2.5 強(qiáng)分類器的構(gòu)造
這個(gè)部分我還是似懂非懂。按照我的理解,強(qiáng)分類為的構(gòu)造是這樣的:
(1)首先選出部分樣本,給它們賦予權(quán)重1/N,其中N為總的樣本的個(gè)數(shù);
(2)用選出的樣本訓(xùn)練弱分類器;
(3)提高錯(cuò)誤分類的樣本的權(quán)重,并舍棄正確分類的樣本,加入新的樣本,新的樣本的權(quán)重還是之前的1/N,進(jìn)行新一輪的弱分類器的訓(xùn)練;
(4)經(jīng)過(guò)T輪后,訓(xùn)練出T個(gè)弱分類器;
(5)將這T個(gè)弱分類器根據(jù)他們的分類錯(cuò)誤率加權(quán)求和構(gòu)成一個(gè)強(qiáng)的分類器,如下所示:
其中αtαt是第t個(gè)弱分類器的權(quán)重,βtβt是第t個(gè)弱分類器的錯(cuò)誤率。強(qiáng)分類器相當(dāng)于先讓各個(gè)弱分類器進(jìn)行投票,然后讓投票結(jié)果根據(jù)各弱分類器的錯(cuò)誤率進(jìn)行加權(quán)相加,最后與平均的投票結(jié)果進(jìn)行比較得到最終結(jié)果。
Reference:
https://www.jb51.net/article/222465.htm
原文鏈接:https://www.cnblogs.com/wumh7/p/9403873.html
相關(guān)推薦
- 2022-10-17 C++STL教程之vector模板的使用_C 語(yǔ)言
- 2022-06-01 idea對(duì)CPU的占用率過(guò)大問(wèn)題的解決方法_相關(guān)技巧
- 2024-03-03 Element選擇年范圍,year范圍
- 2022-06-21 c語(yǔ)言詳解動(dòng)態(tài)內(nèi)存分配及常見錯(cuò)誤的解決_C 語(yǔ)言
- 2022-05-10 springMVC 文件上傳和下載
- 2022-05-24 淺談C#中Action和Func回調(diào)的常用方式_C#教程
- 2023-01-04 Android?Toolbar應(yīng)用欄使用方法簡(jiǎn)介_Android
- 2023-01-18 React報(bào)錯(cuò)Element?type?is?invalid解決案例_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支