人臉檢測(cè)中AdaBoost算法詳解
人臉檢測(cè)中的AdaBoost算法,供大家參考,具體內(nèi)容如下
第一章:引言
2017.7.31。英國測(cè)試人臉識(shí)別技術(shù),不需要排隊(duì)購票就能刷臉進(jìn)站。據(jù)BBC新聞報(bào)道,這項(xiàng)英國政府鐵路安全標(biāo)準(zhǔn)委員會(huì)資助的新技術(shù),由布里斯托機(jī)器人實(shí)驗(yàn)室(Bristol Robotics Laboratory) 負(fù)責(zé)開發(fā)。這個(gè)報(bào)道可能意味著我們將來的生活方式。雖然人臉識(shí)別技術(shù)已經(jīng)研究了很多年了,比較成熟了,但是還遠(yuǎn)遠(yuǎn)不夠,我們以后的目標(biāo)是通過識(shí)別面部表情來獲得人類心理想法。 長(zhǎng)期以來,計(jì)算機(jī)就好像一個(gè)盲人,需要被動(dòng)地接受由鍵盤、文件輸入的信息,而不能主動(dòng)從這個(gè)世界獲取信息并自主處理。人們?yōu)榱俗層?jì)算機(jī)看到這個(gè)世界并主動(dòng)從這個(gè)世界尋找信息,發(fā)展了機(jī)器視覺;為了讓計(jì)算機(jī)自主處理和判斷所得到的信息,發(fā)展了人工智能科學(xué)。人們夢(mèng)想,終有一天,人機(jī)之間的交流可以像人與人之間的交流一樣暢通和友好。 而這些技術(shù)實(shí)現(xiàn)的基礎(chǔ)是在人臉檢測(cè)上實(shí)現(xiàn)的,下面是我通過學(xué)習(xí)基于 AdaBoost 算法的人臉檢測(cè),趙楠的論文的學(xué)習(xí)心得。
第二章:關(guān)于Adaptive Boosting
AdaBoost 全稱為Adaptive Boosting。Adaptively,即適應(yīng)地,該方法根據(jù)弱學(xué)習(xí)的結(jié)果反饋適應(yīng)地調(diào)整假設(shè)的錯(cuò)誤率,所以Adaboost不需要預(yù)先知道假設(shè)的錯(cuò)誤率下限。Boosting意思為提升、加強(qiáng),現(xiàn)在一般指將弱學(xué)習(xí)提升為強(qiáng)學(xué)習(xí)的一類算法。實(shí)質(zhì)上,AdaBoost算法是通過機(jī)器學(xué)習(xí),將弱學(xué)習(xí)提升為強(qiáng)學(xué)習(xí)的一類算法的最典型代表。
第三章:AdaBoost算法檢測(cè)人臉的過程
先上一張完整的流程圖,下面我將對(duì)著這張圖作我的學(xué)習(xí)分享:
1.術(shù)語名詞解析:
弱學(xué)習(xí),強(qiáng)學(xué)習(xí):隨機(jī)猜測(cè)一個(gè)是或否的問題,將會(huì)有50%的正確率。如果一個(gè)假設(shè)能夠稍微地提高猜測(cè)正確的概率,那么這個(gè)假 設(shè)就是弱學(xué)習(xí)算法,得到這個(gè)算法的過程稱為弱學(xué)習(xí)??梢允褂冒胱詣?dòng)化的方法為好幾個(gè)任務(wù)構(gòu)造弱學(xué)習(xí)算法,構(gòu)造過程需要數(shù)量巨大的假設(shè)集合,這個(gè)假設(shè)集合是基于某些簡(jiǎn)單規(guī)則的組合和對(duì)樣本集的性能評(píng)估而生成的。如果一個(gè)假設(shè)能夠顯著地提高猜測(cè)正確的概率,那么這個(gè)假設(shè)就稱為強(qiáng)學(xué)習(xí)。特征模版:我們將使用簡(jiǎn)單矩形組合作為我們的特征模板。這類特征模板都是由兩個(gè)或多個(gè)全等的矩形相鄰組合而成,特征模板內(nèi)有白色和黑色兩種矩形(定義左上角的為白色,然后依次交錯(cuò)),并將此特征模板的特征值定義為白色矩形像素和減去黑色矩形像素和。最簡(jiǎn)單的 5 個(gè)特征模板:
下面列出了,在不同子窗口大小內(nèi),特征的總數(shù)量:
積分圖:主要是為了利用積分圖計(jì)算矩形特征值,提高程序運(yùn)行效率。下面給出非常形象的積分圖的來計(jì)算矩形特征值:
區(qū)域 D 的像素和可以用積分圖計(jì)算為: K1+K4 - (K2+K3)
K1=區(qū)域A 的像素值
K2=區(qū)域A 的像素值+區(qū)域B 的像素值
K3=區(qū)域A 的像素值+區(qū)域C 的像素值
K4 =區(qū)域A 的像素值+區(qū)域B 的像素值+區(qū)域C 的像素值+區(qū)域D 的像素值
2.算法基本描述
對(duì)照上面的流程圖:A給定一系列訓(xùn)練樣本,B初始化權(quán)重,C歸一化權(quán)重,都挺好理解的。我現(xiàn)在需要著重說的是接下來的步驟,即如何選取,訓(xùn)練弱分類器:
現(xiàn)在我們假設(shè)我們的計(jì)算機(jī)讀取一張圖片進(jìn)來,在這張圖片上遍歷所有的特征,(例如20X20像素的圖片,一共有78460個(gè)特征),當(dāng)遍歷到x個(gè)特征時(shí),計(jì)算該特征在所有的訓(xùn)練樣本中(人臉和非人臉圖)的特征值。并且將這些特征值排序,通過掃描一遍排好序的特征值,可以為這個(gè)特征確定一個(gè)最優(yōu)的閾值,從而訓(xùn)練成一個(gè)弱分類器。那么為什么掃描一遍就可以得出最優(yōu)閾值?因?yàn)樵趻呙璧矫恳粋€(gè)特征值時(shí),當(dāng)選取當(dāng)前元素的特征值和它前面的一個(gè)特征值 之間的數(shù)作為閾值時(shí),計(jì)算這個(gè)閾值所帶來的分類誤差為
e = min( S 1+ (T 2- S 2 ), S2 + (T 1- S 1 ))
其中:
全部人臉樣本的權(quán)重的和T 1
全部非人臉樣本的權(quán)重的和T 2
在此元素之前的人臉樣本的權(quán)重的和S 1
在此元素之前的非人臉樣本的權(quán)重的和S 2
將最小誤差記錄下來,選取該最小誤差的特征值,選取當(dāng)前元素的特征值和它前面的一個(gè)特征值 之間的數(shù)作為閾值,那么x特征的最小誤差的弱分類器將出來了!以此類推,當(dāng)遍歷了所以的特征了,就在這些弱分類器中找到誤差最小的分類器,就是最佳弱分類器。
接下來,就進(jìn)入到調(diào)整最佳弱分類器的權(quán)重了。設(shè)置一個(gè)循環(huán),用剛剛得到的最佳弱分類器去分類所有的訓(xùn)練樣本,按照最上面的流程圖中的調(diào)整權(quán)重的部分來調(diào)整權(quán)重。
以上的步驟就是一個(gè)完整的adaboost算法的訓(xùn)練過程!
最后,實(shí)驗(yàn)結(jié)果表明,當(dāng)T=200 時(shí),構(gòu)成的強(qiáng)分類器可以獲得很好的檢測(cè)效果。經(jīng)過 200次迭代后,獲得了 200個(gè)最佳弱分類器 ,可以按照下面的方式組合成一個(gè)強(qiáng)分類器:
那么,這個(gè)強(qiáng)分類器對(duì)待一幅待檢測(cè)圖像時(shí),相當(dāng)于讓所有弱分類器投票,再對(duì)投票結(jié)果按照弱分類器的錯(cuò)誤率加權(quán)求和,將投票加權(quán)求和的結(jié)果與平均投票結(jié)果比較得出最終的結(jié)果。
第4章、個(gè)人總結(jié)
前前后后將近花了3天時(shí)間來學(xué)習(xí)adaboost算法的人臉識(shí)別。在網(wǎng)上找了很多的資料,發(fā)現(xiàn)大部分關(guān)于每一個(gè)特征的弱分類器和所有圖像的最佳弱分類器的概念含糊不清,以及怎么用編程的思想來解讀這個(gè)算法的意識(shí)不明確,具體來說,只考慮算法的過程,而不考慮怎么用編程來實(shí)現(xiàn)這些過程。這也是我寫這個(gè)博客的主要目的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Qt實(shí)現(xiàn)一個(gè)圖片對(duì)比選擇瀏覽器
這篇文章主要為大家詳細(xì)介紹了如何基于Qt實(shí)現(xiàn)一個(gè)圖片對(duì)比選擇瀏覽器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04解析一個(gè)有關(guān)sizeof用法的題目--sizeof(i++)
本篇文章是對(duì)一個(gè)關(guān)于sizeof用法的題目進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06如何統(tǒng)計(jì)在一篇文章中某個(gè)單詞出現(xiàn)了幾次,以及第一次出現(xiàn)的位置
本文的主要內(nèi)容就是統(tǒng)計(jì)某個(gè)單詞在一篇文章中出現(xiàn)了幾次,以及第一次出現(xiàn)的位置,需要的朋友可以參考下2015-08-08深入探究協(xié)程在C++中的實(shí)現(xiàn)方式
協(xié)程可以被看作是計(jì)算機(jī)程序中的獨(dú)立功能塊,它們?cè)趫?zhí)行過程中能夠暫停和恢復(fù),與傳統(tǒng)的函數(shù)調(diào)用相比,協(xié)程更像是一種輕量級(jí)的線程,本文我們將深入探究協(xié)程在C++中的實(shí)現(xiàn)方式,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12C/C++實(shí)現(xiàn)高并發(fā)http服務(wù)器的代碼示例
這篇文章簡(jiǎn)單給大家介紹了C/C++實(shí)現(xiàn)高并發(fā)http服務(wù)器的代碼示例,文章通過代碼和圖文介紹的非常詳細(xì),感興趣的同學(xué)可以參考閱讀2023-07-07c語言讀取txt文件內(nèi)容簡(jiǎn)單實(shí)例
在本篇文章里小編給大家整理的是關(guān)于c語言如何讀取txt文件內(nèi)容,需要的朋友們可以參考下。2020-03-03