一種基於條件隨機森林的笑臉檢測器及方法與流程
2023-09-23 00:16:45

本發明涉及算機視覺和模式識別領域,具體涉及一種基於條件隨機森林的笑臉檢測器及方法。
背景技術:
笑臉檢測在用戶體驗感知、學生心理狀態分析、照片增強處理、相機微笑快門等方面有著廣泛的應用。當前的笑臉檢測算法大多只對正臉圖像有效,而在很多實際應用中,人的頭部姿態通常不受限制。在頭部姿態變化範圍較大的情況下,人臉對齊較為困難,巨大的類內差異會導致難以設計高正確率和高效率的笑臉檢測器。
技術實現要素:
針對現有技術的缺陷,本發明的目的在於,解決在不限定頭部姿態圖像中檢測笑臉的問題,提供一種具備高正確率、高效率的笑臉檢測器。
一種基於條件隨機森林的笑臉檢測器,包括條件隨機森林組、人臉檢測模塊、頭部姿態估計模塊、動態隨機森林組建模塊、隨機森林笑臉分類模塊,其中,
條件隨機森林組通過離線訓練得到,由一組不同頭部姿態條件下的笑臉分類隨機森林組成;人臉檢測模塊用於從圖像中檢測出包含人臉的區域;頭部姿態估計模塊用於根據人臉區域提取的特徵估計出頭部姿態;動態隨機森林組建模塊用於根據估計的頭部姿態從條件隨機森林組中選擇決策樹動態建構用於笑臉分類的隨機森林;隨機森林笑臉分類模塊用於利用動態組建的笑臉分類隨機森林對人臉區域圖像做出笑臉/非笑臉的分類。
作為優化,所述條件隨機森林組離線訓練得到,訓練的過程為:
(1)將訓練數據集中的圖像按頭部姿態所屬範圍劃分為N個子集,記為其中Ωn表示第n個子集中包含的圖像的頭部姿態範圍;
(2)利用各個數據子集中的圖像訓練一個條件隨機森林T(Ωn),每個條件隨機森林T(Ωn)由T棵決策樹組成,即每棵決策樹Tt(Ωn)採用如下步驟獨立訓練生成:
(21)從訓練樣本子集中隨機選擇m張圖像,接著從選中的每張圖像上提取一系列圖像特徵,圖像Ii提取特徵後的特徵圖像集合記為Ii={Ii1,Ii2,...,Iif,...,IiF},i∈[1,m],其中F表示特徵的種數;然後從每張特徵圖像上隨機摳取NP個大小為s×s像素的圖像子塊,並將從第i張圖像上摳取的第j個圖像塊記為Pij=(θi,Iij),其中θi∈{-1,+1}為表示笑和非笑的類別標籤;
(22)生成候選二值測試集每個二值測試包含四個參數R1,R2,f,τ,其中R1和R2分別表示從圖像子塊P裡隨機選取的兩個矩形區域,f∈{1,2,…,F}表示隨機選取的特徵通道,τ為閾值;每個二值測試的形式為:
其中If表示提取第f種特徵後的圖像,|R1|、|R2|分別表示兩個矩形區域內像素的數量,(x,y)表示像素;
(23)生成一個根節點,該節點中包含所有摳取的圖像子塊{Pij},將根節點標記為當前節點;
(24)使用候選二值測試集中的每一個嘗試將當前節點上的圖像子塊集P分裂為兩個子集和及
(25)計算分裂後的信息增益:
其中H(·)表示熵;
當隨機樹生長到預設的最大深度時,或當前節點的信息增益小於最小閾值時,停止隨機樹的生長並生成葉子節點;否則繼續迭代分裂;到達葉子節點l的圖像子塊記為l(P),統計l(P)中標籤為笑臉(θ=1)的概率p(θ|l(P)),並將p(θ|l(P))存儲於該葉子節點上;
(3)計算各個條件隨機森林分類閾值:
(31)從訓練數據子集中的各張圖像上隨機摳取一系列圖像子塊,並將各個圖像子塊輸入條件隨機森林T(Ωn)的各棵決策樹,最終到達決策樹的葉子節點;取圖像子塊到達的葉子節點上存儲的分類概率p(θ|Ωn,l(P))作為該圖像子塊屬於笑臉的概率。為表述方便將所有圖像子塊屬於笑臉的概率簡記為{p1,p2,p3…};
(32)初始化聚類中心:c0=min{p1,p2,p3…},c1=max{p1,p2,p3…};
(33)計算每個數據對象pi到聚類中心c0和c1的歐式距離,並將各個數據歸類到距離較短的聚類中心所在的類,歸類後的兩類數據集合分別記為和
(34)計算各類均值作為新的聚類中心;
(35)重複(32)、(33)直到聚類中心不再變化;
(36)輸出聚類結果C0、C1。
(37)計算條件隨機森林T(Ωn)的分類閾值τp(Ωn):
作為優化,所述動態隨機森林組建模塊從離線訓練的條件隨機森林組中選出T棵決策樹動態組建出一個隨機森林TC,其中從條件隨機森林T(Ωn)中隨機選出的決策樹的棵數kn由頭部姿態估計模塊給出的頭部姿態分布情況來決定:
其中p(ω|P)表示頭部姿態估計模塊給出的頭部姿態分布,表示向下取整;動態組建的隨機森林TC的分類閾值τp為:
作為優化,所述隨機森林笑臉分類模塊接收從人臉檢測模塊輸入的人臉區域圖像,並利用動態組建的隨機森林TC對人臉區域圖像做出笑臉/非笑臉的分類,步驟為:
1)對人臉區域圖像提取特徵;
2)從人臉區域的各類特徵圖像上分別摳取M個圖像子塊{Pi,i∈[1,m]},並輸入動態組建的隨機森林TC的各棵決策樹種;當圖像子塊到Pi到達決策樹的葉子節點時,記錄該葉子節點上保存的概率值pit=p(θ,l(P));
3)若判決輸入的人臉區域圖像為笑臉;否則判決輸入的人臉區域圖像為非笑臉。
一種基於條件隨機森林的笑臉檢測方法,包括以下步驟:
步驟1)通過離線訓練得到由一組不同頭部姿態條件下的笑臉分類隨機森林組成的條件隨機森林組;
步驟2)從圖像中檢測出包含人臉的區域;
步驟3)根據人臉區域提取的特徵估計出頭部姿態;
步驟4)根據估計的頭部姿態從條件隨機森林組中選擇決策樹動態建構用於笑臉分類的隨機森林;
步驟5)利用動態組建的笑臉分類隨機森林對人臉區域圖像做出笑臉/非笑臉的分類。
作為優化,所述步驟1)中的條件隨機森林組離線訓練得到,訓練的過程為:
11)將訓練數據集中的圖像按頭部姿態所屬範圍劃分為N個子集,記為其中Ωn表示第n個子集中包含的圖像的頭部姿態範圍;
12)利用各個數據子集中的圖像訓練一個條件隨機森林T(Ωn),每個條件隨機森林T(Ωn)由T棵決策樹組成,即每棵決策樹Tt(Ωn)採用如下步驟獨立訓練生成:
121)從訓練樣本子集中隨機選擇m張圖像,接著從選中的每張圖像上提取一系列圖像特徵,圖像Ii提取特徵後的特徵圖像集合記為Ii={Ii1,Ii2,...,Iif,...,IiF},i∈[1,m],其中F表示特徵的種數;然後從每張特徵圖像上隨機摳取NP個大小為s×s像素的圖像子塊,並將從第i張圖像上摳取的第j個圖像塊記為Pij=(θi,Iij),其中θi∈{-1,+1}為表示笑和非笑的類別標籤;
122)生成候選二值測試集每個二值測試包含四個參數R1,R2,f,τ,其中R1和R2分別表示從圖像子塊P裡隨機選取的兩個矩形區域,f∈{1,2,…,F}表示隨機選取的特徵通道,τ為閾值;每個二值測試的形式為:
其中If表示提取第f種特徵後的圖像,|R1|、|R2|分別表示兩個矩形區域內像素的數量,(x,y)表示像素;
123)生成一個根節點,該節點中包含所有摳取的圖像子塊{Pij},將根節點標記為當前節點;
124)使用候選二值測試集中的每一個嘗試將當前節點上的圖像子塊集P分裂為兩個子集和及
125)計算分裂後的信息增益:
其中H(·)表示熵;
當隨機樹生長到預設的最大深度時,或當前節點的信息增益小於最小閾值時,停止隨機樹的生長並生成葉子節點;否則繼續迭代分裂;到達葉子節點l的圖像子塊記為l(P),統計l(P)中標籤為笑臉(θ=1)的概率p(θ|l(P)),並將p(θ|l(P))存儲於該葉子節點上;
13)計算各個條件隨機森林分類閾值:
131)從訓練數據子集中的各張圖像上隨機摳取一系列圖像子塊,並將各個圖像子塊輸入條件隨機森林T(Ωn)的各棵決策樹,最終到達決策樹的葉子節點;取圖像子塊到達的葉子節點上存儲的分類概率p(θ|Ωn,l(P))作為該圖像子塊屬於笑臉的概率。為表述方便將所有圖像子塊屬於笑臉的概率簡記為{p1,p2,p3…};
132)初始化聚類中心:c0=min{p1,p2,p3…},c1=max{p1,p2,p3…};
133)計算每個數據對象pi到聚類中心c0和c1的歐式距離,並將各個數據歸類到距離較短的聚類中心所在的類,歸類後的兩類數據集合分別記為和
134)計算各類均值作為新的聚類中心;
135)重複132)、133)直到聚類中心不再變化;
136)輸出聚類結果C0、C1。
137)計算條件隨機森林T(Ωn)的分類閾值τp(Ωn):
作為優化,所述步驟4)從離線訓練的條件隨機森林組中選出T棵決策樹動態組建出一個隨機森林TC,其中從條件隨機森林T(Ωn)中隨機選出的決策樹的棵數kn由頭部姿態估計模塊給出的頭部姿態分布情況來決定:
其中p(ω|P)表示頭部姿態估計模塊給出的頭部姿態分布,表示向下取整;動態組建的隨機森林TC的分類閾值τp為:
作為優化,所述步驟5)接收從人臉檢測模塊輸入的人臉區域圖像,並利用動態組建的隨機森林TC對人臉區域圖像做出笑臉/非笑臉的分類,步驟為:
51)對人臉區域圖像提取特徵;
52)從人臉區域的各類特徵圖像上分別摳取M個圖像子塊{Pi,i∈[1,m]},並輸入動態組建的隨機森林TC的各棵決策樹種;當圖像子塊到Pi到達決策樹的葉子節點時,記錄該葉子節點上保存的概率值pit=p(θ,l(P));
53)若判決輸入的人臉區域圖像為笑臉;否則判決輸入的人臉區域圖像為非笑臉。
作為優化,在訓練和檢測過程中也可以不從整個人臉區域摳取圖像子塊,而從嘴巴、眉眼等區域摳取圖像子塊,然後利用本發明提供的技術構建笑臉檢測器。
作為優化,亦可從多個人臉的多個區域摳取圖像子塊,利用本發明提供的技術構建笑臉多個檢測器,然後組合這些笑臉檢測器,進一步提高笑臉檢測的正確率。
本發明的有益技術效果體現在:
本發明提供了一種基於條件隨機森林的笑臉檢測系統。該系統在利用隨機森林做笑臉檢測時將頭部姿態作為條件狀態,在訓練時根據頭部姿態將數據進行分類,降低了數據的內類差異,使得訓練的條件隨機森林具備高的分類正確率和效率;在進行笑臉/非笑臉分類時,也先進行了頭部姿態的估計,根據估計的頭部姿態分布情況動態組建隨機森林,並計算動態隨機森林的分類閾值。因此,本發明提供的技術可以解決不限定頭部姿態情景下的笑臉檢測問題,擴展笑臉檢測系統的應用範圍。
附圖說明
圖1是本發明一較佳實施例結構組成示意圖;
圖2是本發明一較佳實施例條件隨機森林組的離線訓練流程圖;
具體實施方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特徵只要彼此之間未構成衝突就可以相互組合。
圖1示出了本發明一個較佳實施例。一種基於條件隨機森林的笑臉檢測器,包括:條件隨機森林組10、人臉檢測模塊11、頭部姿態估計模塊12、動態隨機森林組建模塊13、隨機森林笑臉分類模塊14,其中,
條件隨機森林組10通過離線訓練得到,由一組不同頭部姿態條件下的笑臉分類隨機森林組成;人臉檢測模塊11從圖像中檢測出包含人臉的區域;頭部姿態估計模塊12根據人臉區域提取的特徵估計出頭部姿態;動態隨機森林組建模塊13根據估計的頭部姿態從條件隨機森林組中選擇決策樹動態建構用於笑臉分類的隨機森林;隨機森林笑臉分類模塊14利用動態組建的笑臉分類隨機森林對人臉區域圖像做出笑臉/非笑臉的分類。
所述條件隨機森林組10離線訓練得到,訓練的過程如圖2所示:
S11:將訓練數據集中的圖像按頭部姿態所屬範圍劃分為N個子集,記為其中Ωn表示第n個數據子集中包含的圖像的頭部姿態範圍。在本實施例中,按頭部的水平偏向角度ω將訓練數據劃分為3個子集,即Ω1={-30°≤ω≤30°}、Ω2={ω|-30°<ω≤-60°}∪{ω|30°<ω≤60°}、及Ω3={ω|-90°≤ω<-60°}∪{ω|60°<ω≤90°}。其中,Ω2和Ω3利用了人臉的水平對稱性,將朝向為左的人臉圖像作水平鏡像後與朝向為右的人臉圖像合併。
S12:利用各個數據子集中的圖像訓練一個條件隨機森林T(Ωn)。每個條件隨機森林T(Ωn)由T棵決策樹組成,即在本實施例中,T設置為30。每棵決策樹Tt(Ωn)採用如下步驟獨立訓練生成:
S121:從訓練樣本子集中隨機選擇m張圖像。在本實施例中,m設置為2000。接著從每張選中的圖像上提取一系列圖像特徵,圖像Ii提取特徵後的特徵圖像集合記為Ii={Ii1,Ii2,...,IiF},i∈[1,m]其中F表示特徵的種數。在本實施例中,F設置為3,並採用了3種特徵:圖像灰度值、局部二進位模式(LBP)和Gabor特徵。然後從每張特徵圖像上隨機摳取NP個大小為s×s像素的圖像子塊,並將從第i張圖像上摳取的第j個圖像塊記為Pij=(θi,Iij),其中θi∈{-1,+1}為類別標籤(笑/非笑)。在本實施例中,NP設置為200,s設置為25,即從每張特徵圖像上摳取200個25×25像素的圖像子塊。
S122:生成候選二值測試集每個二值測試包含四個參數R1,R2,f,τ,其中R1和R2分別表示從圖像子塊P裡隨機選取的兩個矩形區域,f∈{1,2,…,F}表示隨機選取的特徵通道,τ為閾值。每個二值測試的形式為:
其中|R1|、|R2|分別表示矩形區域內像素的數量。在本實施例中,候選二值測試集的大小設置為3000。
S123:生成一個根節點,該節點中包含所有摳取的圖像子塊{Pij}。將根節點標記為當前節點。
S124:分裂節點。使用候選二值測試集中的每一個嘗試將當前節點上的圖像子塊集P分裂為兩個子集和及
計算分裂後的信息增益:
其中H(·)表示熵。選擇使得信息增益最大的二值測試將當前節點分裂為兩個子節點。
當隨機樹生長到預設的最大深度時,或當前節點的信息增益小於最小閾值時,停止隨機樹的生長並生成葉子節點;否則繼續迭代分裂。到達葉子節點l的圖像子塊記為l(P),統計l(P)中標籤為笑臉(θ=1)的概率p(θ|l(P)),並將p(θ|l(P))存儲於該葉子節點上。
S13:計算各個條件隨機森林分類閾值。閾值的計算步驟為:
S131:從訓練數據子集中的各張圖像上隨機摳取一系列圖像子塊,並將各個圖像子塊輸入條件隨機森林T(Ωn)的各棵決策樹,最終到達決策樹的葉子節點。取圖像子塊到達的葉子節點上存儲的分類概率p(θ|Ωn,l(P))作為該圖像子塊屬於笑臉的概率。為表述方便將所有圖像子塊屬於笑臉的概率簡記為{p1,p2,p3…}。
S132:初始化聚類中心:c0=min{p1,p2,p3…},c1=max{p1,p2,p3…}。
S133:計算每個數據對象pi到聚類中心c0和c1的歐式距離,並將各個數據歸類到距離較短的聚類中心所在的類。歸類後的兩類數據集合分別記為和
S134:計算各類均值作為新的聚類中心。
S135:重複(S132)、(S133)直到聚類中心不再變化。
S136:輸出聚類結果C0、C1。
S137:計算條件隨機森林T(Ωn)的分類閾值:
在本實施例中,人臉檢測模塊11由兩個基於Haar特徵的AdaBoost分類器組成,其中一個負責從圖像中檢測正面人臉,另外一個負責從圖像中檢測側臉圖像。不難理解,人臉檢測模塊11也可以採用其他算法來實施。
在本實施例中,頭部姿態估計算法採用文獻《Robust head pose estimation using Dirichlet-tree distribution enhanced random forests》中提供的算法來實現。改算法輸入人臉區域圖像即可估計出頭部姿態的分布情況。不難理解,頭部姿態檢測模塊12也可以採用其他能估計頭部姿態分布的算法來實施。
所述動態隨機森林組建模塊13從離線訓練的條件隨機森林組10中選出T棵決策樹動態組建出一個隨機森林TC,其中從條件隨機森林T(Ωn)中隨機選出的決策樹的棵數kn由頭部姿態估計模塊給出的頭部姿態分布情況來決定:
其中p(ω|P)表示頭部姿態估計模塊給出的頭部姿態分布,表示向下取整。動態組建的隨機森林TC的分類閾值τp為:
所述隨機森林笑臉分類模塊14接收從人臉檢測模塊輸入的人臉區域圖像,並利用動態組建的隨機森林TC對人臉區域圖像做出笑臉/非笑臉的分類,步驟為:
(1)對人臉區域圖像提取特徵。所提取的特種種類與離線訓練條件隨機森林組所提取的特徵種類一致。
(2)從人臉區域的各類特徵圖像上分別摳取M個圖像子塊{Pi,i∈[1,m]},並輸入動態組建的隨機森林TC的各棵決策樹種。當圖像子塊到Pi到達決策樹的葉子節點時,記錄該葉子節點上保存的概率值pit=p(θ,l(P))。在本實施例中M設置為200.
(3)若判決輸入的人臉區域圖像為笑臉;否則判決輸入的人臉區域圖像為非笑臉。
作為優化,在訓練和檢測過程中也可以不從整個人臉區域摳取圖像子塊,而從嘴巴、眉眼等區域摳取圖像子塊,然後利用本發明提供的技術構建笑臉檢測器。作為優化,亦可從多個人臉的多個區域摳取圖像子塊,利用本發明提供的技術構建笑臉多個檢測器,然後組合這些笑臉檢測器,進一步提高笑臉檢測的正確率。
本實例可在包括但不限於智慧型手機、平板電腦、智能電視、計算機等硬體上實施。
本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。