亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

使用機器學習進行面部檢測的制作方法

文檔序號:10694091閱讀:224來源:國知局
使用機器學習進行面部檢測的制作方法
【專利摘要】公開的面部檢測系統(tǒng)(和方法)基于卷積神經(jīng)網(wǎng)絡(CNN)的結構。一個方面涉及一種用于自動地訓練用于面部檢測的CNN的方法。通過從面部圖像獲取附加的面部圖像來執(zhí)行訓練,使得平衡數(shù)量的面部圖像和非面部圖像被用于訓練。還通過根據(jù)自動停止準則自適應地改變階段的訓練的數(shù)量來執(zhí)行訓練。另一個方面涉及一種用于通過集成不同的尺度(即,不同的圖像程度)的數(shù)據(jù)以便更好地使用每個尺度的數(shù)據(jù)來執(zhí)行圖像檢測的系統(tǒng)。系統(tǒng)可以包括使用在本文公開的方法自動地訓練的CNN。
【專利說明】
使用機器學習進行面部檢測
技術領域
[0001] 本發(fā)明一般地涉及圖像處理,并且更具體地涉及使用機器學習的對象檢測。
【背景技術】
[0002] 面部檢測系統(tǒng)對數(shù)字圖像或視頻幀執(zhí)行圖像處理以自動地識別出人。在一個方法 中,面部檢測系統(tǒng)將圖像分類為包含面部的正樣本(positive)圖像和不包含任何面部的負 樣本(negative)圖像。面部檢測系統(tǒng)可以訓練用于檢測面部的神經(jīng)網(wǎng)絡并且將面部從背景 分離。通過將面部從背景分離,面部檢測系統(tǒng)可以確定圖像是否包含面部。良好的面部檢測 系統(tǒng)應當具有低比率的假正樣本檢測(即,將負樣本圖像錯誤地檢測為正樣本圖像)和高比 率的真正樣本檢測(即,應當檢測到圖像中的所有面部)。
[0003] 因為可用于訓練的正樣本圖像和負樣本圖像的數(shù)量典型地不平衡,所以面部檢測 仍然具有挑戰(zhàn)性。例如,與正樣本圖像相比,可能存在多得多的負樣本圖像,并且可能通過 具有太多負樣本圖像的有偏向性的方式來訓練神經(jīng)網(wǎng)絡。結果,利用不平衡數(shù)量的正樣本 和負樣本所訓練的神經(jīng)網(wǎng)絡可能因高假正樣本檢測率或低真正樣本檢測率而遭遇面部檢 測方面的低準確度。
[0004] 因為面部容貌可能是無規(guī)律的而具有大的變化,所以面部檢測還仍然具有挑戰(zhàn) 性。例如,由于主體具有變化的姿態(tài)或表情,因此面部可能是變形的。此外,可能由于諸如光 照條件之類的外部環(huán)境、咬合等使面部發(fā)生變形。結果,神經(jīng)網(wǎng)絡可能無法從背景中區(qū)分出 面部并且導致了高假正樣本檢測率。
[0005] 因而,需要好的方法來進行準確的面部檢測以及其它對象的檢測。

【發(fā)明內(nèi)容】

[0006] 本發(fā)明通過采用用于檢測例如面部的對象的框架來克服現(xiàn)有技術的限制??蚣芑?于卷積神經(jīng)網(wǎng)絡(CNN)的結構。一個方面涉及一種用于自動地訓練用于面部檢測的CNN的方 法。另一個方面涉及一種用于通過集成不同尺度(scale)(即,圖像尺寸)的數(shù)據(jù)以便更好地 使用每個尺度的數(shù)據(jù)來執(zhí)行面部檢測的系統(tǒng)。系統(tǒng)可以包括使用在本文公開的方法自動地 訓練的CNN。
[0007] 在一個方面中,使用具有一定數(shù)量的包含面部的圖像("面部圖像"或"正樣本圖 像")以及明顯更大數(shù)量的沒有面部的圖像("非面部圖像"或"負樣本圖像")的池來訓練 CNN。然而,并不是平等地使用池中的所有圖像。相反,從池中獲取的平衡數(shù)量(即,大致相等 數(shù)量)的面部圖像和非面部圖像被用于進行訓練。
[0008] 在一種實現(xiàn)方式中,按階段執(zhí)行訓練。各階段可以包含用于不同階段的不同訓練 集合。訓練集合可以具有大致相等數(shù)量的從池中的圖像獲取的面部圖像和非面部圖像???以通過包括在較早階段中是假正樣本的非面部圖像來選擇用于階段的訓練集合中的非面 部圖像。
[0009] 優(yōu)選地,訓練繼續(xù),直到滿足預先確定的條件為止。在一個方面中,用于階段的訓 練繼續(xù),直到在預先確定的持續(xù)時間中不能再提高驗證成本為止。驗證成本的一個測量是 對單獨的驗證數(shù)據(jù)集合的成功率的負對數(shù)似然。在另一個方面中,可以訓練附加的階段,直 到用于最近階段的假正樣本的數(shù)量下降到低于假正樣本的閾值數(shù)量。
[0010]在一個方法中,通過修改池中的面部圖像來獲取訓練集合中的面部圖像。如果用 于階段的訓練集合包括明顯更大數(shù)量的非面部圖像,可以生成附加的面部圖像,使得該階 段具有大致相等數(shù)量的面部圖像和非面部圖像??梢岳缤ㄟ^將面部圖像進行旋轉、模糊、 鏡像或扭曲來獲取附加的面部圖像。
[0011]在一個方法中,使用雙尺度CNN來執(zhí)行面部檢測。雙尺度CNN使得能夠以兩個不同 的尺度(即,圖像的尺寸)進行數(shù)據(jù)的集成。在一個結構中,雙尺度CNN包括兩個CNN。每個CNN 確定圖像是否包含面部、但是這基于圖像內(nèi)的不同尺寸區(qū)域而進行。優(yōu)選地,使用較大尺寸 區(qū)域的CNN還比另一個CNN多包括至少一個卷積層。只有兩個CNN都指示圖像包含面部,雙尺 度CNN的輸出才可以指示圖像包含面部。
[0012] 在一種實現(xiàn)方式中,雙尺度CNN采用從圖像產(chǎn)生特征塊集合的公共CNN。在公共CNN 后面的是兩個CNN,這兩者都使用特征塊。例如,一個CNN可以使用整個特征塊集合作為輸 入,并且另一個CNN可以使用特征塊集合的內(nèi)部區(qū)域作為輸入。
[0013] 其它方面包括與上文有關的組件、設備、系統(tǒng)、改善、方法、處理、應用和其它技術。
【附圖說明】
[0014] 本發(fā)明具有在結合附圖時根據(jù)本發(fā)明的以下詳細描述和所附權利要求將更易于 顯而易見的其它優(yōu)點和特征,在附圖中:
[0015] 圖1是面部檢測系統(tǒng)的簡圖。
[0016] 圖2是用于訓練卷積神經(jīng)網(wǎng)絡(CNN)并且使用CNN執(zhí)行面部檢測的總體框架的圖。 [0017]圖3是在階段中訓練CNN的方法的流程圖。
[0018] 圖4是根據(jù)實施例的、使用自動階段訓練來訓練CNN的示例過程。
[0019] 圖5是雙尺度CNN的示例結構的圖。
[0020] 圖6是檢測面部的方法的流程圖。
[0021]各圖描繪本發(fā)明的實施例僅僅是為了說明的目的。本領域技術人員根據(jù)以下討論 將容易地意識到,在不背離本文所描述的本發(fā)明的原理的情況下,可以采用本文所說明的 結構和方法的替換實施例。
【具體實施方式】
[0022]附圖和以下描述僅僅通過說明的方式來提及優(yōu)選的實施例。應當注意到,根據(jù)以 下討論,將會容易地把在本文公開的結構和方法的替換實施例承認為在不背離權利要求所 要求保護的原理的情況下可以采用的可行的替換。
[0023]所公開的面部的檢測系統(tǒng)(和方法)基于卷積神經(jīng)網(wǎng)絡(CNN)的結構。在一個方法 中,使用自動階段訓練來訓練CNN。自動階段訓練根據(jù)包含一定數(shù)量的面部圖像和明顯更大 數(shù)量的負樣本(即,非面部)圖像的池來訓練CNN。自動階段訓練可以獲取附加的面部圖像以 平衡面部圖像和非面部圖像的數(shù)量。
[0024]在一種實現(xiàn)方式中,面部檢測基于雙尺度CNN來確定圖像是否包含面部。雙尺度 CNN包括兩個CNN以利用不同尺度(即,不同的圖像尺寸)中的信息。例如,第一CNN基于圖像 內(nèi)的預先確定尺寸的第一區(qū)域來確定圖像是否包含面部,并且第二CNN基于圖像內(nèi)的不同 的預先確定尺寸的第二區(qū)域來確定圖像是否包含面部。只有第一 CNN和第二CNN兩者都指示 圖像包含面部,雙尺度CNN才指示該圖像包含面部。
[0025] 面部檢測概述
[0026] 圖1是根據(jù)一個實施例的面部檢測系統(tǒng)100的簡圖。面部檢測系統(tǒng)100接收輸入圖 像110并且確定輸入圖像是否包含面部。面部檢測系統(tǒng)100生成用于指示輸入圖像110是面 部圖像還是非面部圖像的輸出150。
[0027] 面部檢測系統(tǒng)100包括雙尺度CNN 120、訓練模塊130和處理器140。雙尺度CNN 120 使用神經(jīng)網(wǎng)絡執(zhí)行面部檢測。訓練模塊130訓練雙尺度CNN120中的神經(jīng)網(wǎng)絡。處理器140運 行指令以在面部檢測系統(tǒng)100上執(zhí)行面部檢測。這些組件中的每一個可以被實施為硬件、軟 件、固件或其組合。這些組件一起執(zhí)行輸入圖像110的面部檢測。
[0028]雙尺度CNN 120接收輸入圖像110并且確定輸入圖像是否包含面部。在一個方法 中,雙尺度CNN 120執(zhí)行至少兩個CNN。雙尺度CNN 120從輸入圖像110獲得不同程度(即,尺 度)的圖像塊,并且集成不同程度的圖像塊的信息。另外,雙尺度CNN 120生成輸出150以指 示輸入圖像110是否包含面部。
[0029]訓練模塊130訓練用于執(zhí)行面部檢測的雙尺度CNN 120中的神經(jīng)網(wǎng)絡。在一個方面 中,訓練模塊130使用面部圖像和非面部圖像訓練CNN。面部檢測系統(tǒng)100可以具有用于存儲 不同個體的面部圖像和非面部圖像的大型數(shù)據(jù)庫。數(shù)據(jù)庫可以具有不平衡數(shù)量的面部圖像 和非面部圖像。例如,數(shù)據(jù)庫可以包括明顯更大數(shù)量的非面部圖像。訓練模塊130可以獲取 附加的面部圖像來平衡面部圖像和非面部圖像的數(shù)量以便訓練CNN。
[0030] 處理器140運行指令以在面部檢測系統(tǒng)100中執(zhí)行面部檢測。處理器140從存儲器 (未示出)或外部電路接收指令。指令也可以完全地或至少部分地存在于處理器140內(nèi)(例 如,在處理器的高速緩存存儲器內(nèi))。根據(jù)指令,處理器140變換或選擇輸入圖像110的一部 分以提供給雙尺度CNN 120。此外,處理器140根據(jù)指令操作雙尺度CNN 120和訓練模塊130 以執(zhí)行面部檢測的功能??梢栽贑PU或GPU中實現(xiàn)處理器140。
[0031] CNN的自動階段訓練
[0032] 圖2是使用CNN 200執(zhí)行面部檢測的總體框架的圖。雙尺度CNN可以包括如圖2中所 圖示的CNN 200。由訓練模塊130使用面部圖像230P和非面部圖像230N來訓練CNN 200XNN 200可以從用于訓練CNN 200的面部圖像230P和非面部圖像230N獲得多個圖像塊。在訓練之 后,CNN 200接收輸入圖像210并且確定輸入圖像210是否包含面部。在該示例中,CNN 200生 成響應圖290,其可以指示在圖像210上的對應位置處的可能的面部。
[0033] 在一種實現(xiàn)方式中,CNN 200涉及卷積和池化260以及softmax函數(shù)280XNN 200執(zhí) 行卷積和池化260以從圖像210生成中間特征圖270。中間特征圖270和/或響應圖290可以小 于圖像210。
[0034] CNN 200可以包括用于執(zhí)行卷積的全連接層。為了定位圖像210中的面部,通過將 輸出矢量處理為具有許多通道的lx 1特征圖來將全連接層轉換為卷積層。例如,如果針對 全連接層的輸入是具有k個通道的m X η特征圖并且輸出是t維矢量,那么所得到的層包含k X m X η X t卷積。在面部檢測期間,可以通過常數(shù)因子(例如,α = 1.2)對圖像210連續(xù)地進 行下采樣(subsample)以產(chǎn)生圖像金字塔。向金字塔中的每個圖像應用卷積和池化操作260 和sof tmax 280,得到面部可能性的響應圖290。在一個方法中,響應圖290中的高數(shù)值指示 在圖像210中的對應尺度和位置處的面部候選。優(yōu)選地,卷積和池化層不包含任何填充 (padding)。該過程等效于滑動窗口方法,但是快得多,這是因為重疊窗口的卷積結果被共 享和重新使用。
[0035] 在一個方面中,使用面部圖像230P和非面部圖像230N來訓練CNN 200,以確定用于 執(zhí)行卷積和池化260和sof tmax功能280的最優(yōu)權重。在數(shù)據(jù)庫中,非面部圖像的數(shù)量可能顯 著地大于面部圖像的數(shù)量。使用不平衡數(shù)量的面部圖像230P和非面部圖像230N訓練CNN 200可能使得CNN 200有偏向性。優(yōu)選地,使用平衡數(shù)量的面部圖像230P和非面部圖像230N 來執(zhí)行訓練,使得可以通過具有低假正樣本率的無偏向性的方式來訓練CNN 200。
[0036] 例如,一種情形包括大約10,000個固定尺寸的小面部圖像以及30,000個不包含面 部的負樣本。然而,負樣本多得多,使得能夠從負樣本中提取出數(shù)十億非面部圖像。要處理 數(shù)十億候選非面部圖像來選擇用于訓練的更有用的那些非面部圖像,例如很可能被錯誤分 類為包含面部的那些非面部圖像。因而,雖然原始池可以包含1〇〇χ、1〇〇〇χ或者甚至1000 Ox 更多的非面部圖像,但訓練集合優(yōu)選地被選擇為具有大致相等數(shù)量(例如,10%以內(nèi)或20% 以內(nèi))的面部以及非面部圖像。
[0037]在一個實施例中,按階段來訓練CNN 200。在一個方面中,CNN 200執(zhí)行自動階段訓 練,使得使用從包含不平衡數(shù)量的面部圖像和非面部圖像的原始池獲取的平衡數(shù)量的面部 圖像230P和非面部圖像230N來訓練CNN 200。如果原始池不包含足夠的面部圖像,則可以從 池中的面部圖像獲取附加的"合成"面部圖像230P,使得用于階段的訓練集合具有大致相等 數(shù)量的面部圖像230P和非面部圖像230N??梢岳缤ㄟ^將原始池中的面部圖像進行旋轉、 模糊、鏡像或扭曲來獲取附加的面部圖像230P。例如,通過對原始的面部圖像應用達到± 20 度的隨機通道內(nèi)(in-lane)旋轉、[-0.8,1.2]內(nèi)的伽馬校正以及具有概率0.5的水平翻轉來 獲取附加的面部圖像230P。也可以通過將來自原始池的不同面部圖像進行組合來獲取附加 的面部圖像230P。
[0038] 隨著階段的訓練的進行,利用更接近面部/非面部邊界的更困難的示例來呈現(xiàn)CNN 200。在每個階段中,對CNN 200進行測試和評估以獲得假正樣本的數(shù)量。訓練繼續(xù)進行附加 的階段,直到最后的階段具有小于閾值數(shù)量的假正樣本。對于具有閾值數(shù)量或具有更多假 正樣本的其它階段,假正樣本被引導(bootstrap)并且重新用作非面部圖像230N以用于接 下來階段中的訓練。優(yōu)選地,用于接下來階段的非面部圖像230N包括來自所有先前階段的 所有假正樣本。在一個方法中,對于每個階段(至少對于訓練的一部分)而言,在階段中所使 用的假正樣本的數(shù)量增加。因此,對于每個相繼的階段,來自較早階段的假正樣本占訓練集 合中的非面部圖像的百分比是不斷增加的百分比。隨著訓練的進行,在往后階段中的新近 添加的困難的非面部圖像230N構成所有負樣本中的較小部分,從而有效地指導CNN 200更 溫和地微調(diào)其參數(shù)(或權重)。因此,通過在參數(shù)空間中移動得不太遠、同時仍然借助于微調(diào) 來降低假正樣本率,由此預期CNN 200記住先前的正確的非面部圖像230N。
[0039] 圖3是根據(jù)一個實施例的在階段中訓練CNN的方法的流程圖。在一個方面中,由訓 練模塊130或由處理器140根據(jù)來自訓練模塊130的指令來執(zhí)行該方法。在每個階段中,訓練 模塊130構建用于該階段的訓練集合和驗證集合(310)。訓練集合具有大致相等數(shù)量的面部 圖像230P和非面部圖像230N。訓練模塊130使用用于該階段的訓練集合來訓練CNN(320)。訓 練模塊130使用用于該階段的驗證集合來評估CNN(330)并且生成評估的成本(即,驗證成 本),其是將被優(yōu)化的目標值。例如,可以是應當被最小化的成功率的負對數(shù)似然。計數(shù)對于 該階段所執(zhí)行的訓練的數(shù)量。
[0040] 在每個階段中,訓練模塊130訓練CNN 200,直到滿足預先確定的要求為止。在一個 方法中,訓練模塊確定是否能夠在預先確定的持續(xù)時間(例如,預先確定的訓練或時期 (epoch)的數(shù)量)中獲得更低的成本(340)。例如,來自該階段的先前評估的最低驗證成本被 用作閾值成本。將閾值成本與該階段的評估的成本相比較。如果在預先確定的持續(xù)時間(例 如,預先確定的訓練的數(shù)量T)內(nèi)評估的成本低于該階段的閾值成本,則訓練模塊130使用評 估的成本來更新閾值成本并且重置所執(zhí)行的訓練的計數(shù)。進一步地,訓練模塊130重復CNN 的訓練和評估。如果在預先確定的持續(xù)時間(例如,預先確定的訓練的數(shù)量T)內(nèi)找不到更低 的成本,則訓練模塊130使用閾值成本更新CNN( 350 ),并且結束訓練的該階段。
[0041] 在另一個方法中,階段中的訓練繼續(xù)進行,直到滿足其它預先確定的條件為止。例 如,階段中的訓練可以繼續(xù),直到用于該階段的驗證成本下降到低于閾值成本。算法可以在 每個時期之后檢查驗證成本并且確定是否滿足終止準則。另一個可能的方法將是在預先定 義的時期的數(shù)量進行訓練。
[0042]對于具有用于階段的最低成本的CNN,訓練模塊130將假正樣本的數(shù)量與假正樣本 的閾值數(shù)量相比較。如果對階段的上個訓練中的CNN具有閾值數(shù)量的假正樣本或更多的假 正樣本,則訓練模塊130搜索(bootstrap)假正樣本并且重新使用所搜索的假正樣本作為用 于接下來階段中的訓練的非面部圖像230N。訓練模塊130利用更新的非面部圖像230N來執(zhí) 行接下來階段的訓練,如參考圖3詳細描述的。如果對階段的上個訓練中的CNN具有比假正 樣本的閾值數(shù)量更低數(shù)量的假正樣本,則訓練模塊130完成訓練。在一個方法中,訓練可以 針對附加的階段繼續(xù),直到用于階段的新的假正樣本(即,在先前階段中不是假正樣本的假 正樣本)的數(shù)量下降到低于閾值數(shù)量。然而,在另一個方法中,訓練可以針對附加的階段繼 續(xù),直到用于階段的總的假正樣本的數(shù)量下降到低于閾值數(shù)量。
[0043]在算法1上示出了自動階段訓練中的一個方法。

[0046]圖4示出了根據(jù)實施例的、由訓練模塊130執(zhí)行的、使用自動階段訓練來訓練CNN的 示例過程。在圖4中,在三個階段中執(zhí)行CNN的訓練。在其它實施例中,可以在任何數(shù)量的階 段中執(zhí)行訓練,直到最后的階段中的假正樣本的數(shù)量小于假正樣本的閾值數(shù)量。在該示例 中,假正樣本的閾值數(shù)量是2。
[0047]在每個階段中,訓練模塊130使用線405以上的面部圖像230P以及線405以下的非 面部圖像230N來訓練CNN。在每個階段中,訓練模塊130接收包含正樣本圖像和負樣本圖像 的樣本。根據(jù)樣本,訓練模塊130構建訓練集合和驗證集合。優(yōu)選地,每個訓練集合具有平衡 數(shù)量的正樣本圖像和負樣本圖像,并且每個驗證集合也具有平衡數(shù)量的正樣本圖像和負樣 本圖像。訓練模塊130使用訓練集合來訓練CNN并且使用驗證集合來評估所訓練的CNN。根據(jù) 評估,訓練模塊130對假正樣本的數(shù)量進行計數(shù)。
[0048]例如,階段1的左列表示由階段1使用的訓練集合410。用于階段1的訓練集合410包 含從圖像的原始池取出的一定數(shù)量的非面部圖像410N。用于階段1的訓練集合410也包含從 圖像的原始池取出的較低數(shù)量的面部圖像410P。訓練模塊130獲取附加的面部圖像410D,使 得面部圖像410P/410D的總數(shù)量匹配訓練集合410中的非面部圖像410N的數(shù)量。訓練模塊 130使用訓練集合410的一部分來用于訓練以及一部分來用于驗證。
[0049]階段1的右列表示驗證結果。線405以上是面部圖像的評估結果。415P是被正確地 歸類為正樣本圖像的面部圖像,415FN是未被正確地歸類為非面部圖像的面部圖像(即,假 負樣本)。類似地,在線405以下,非面部圖像415N被正確歸類,而非面部圖像415FP是假正樣 本。在該示例中,存在四個假正樣本415FP。這多于假正樣本的閾值數(shù)量(例如,在該示例中 是2)。因而,訓練模塊130前進到階段2。
[0050] 階段2中的訓練集合420包含一定數(shù)量的非面部圖像420N/420FP。非面部圖像包含 來自階段1的假正樣本415FP,如由箭頭所指示并且被重新標記為420FP。非面部圖像也可以 包含新的非面部圖像420N。訓練集合420還包含面部圖像420P和/或所獲取的面部圖像420D 以匹配非面部圖像的數(shù)量。在訓練該階段之后,根據(jù)評估結果425,存在三個假正樣本 425FP,這仍然多于假正樣本的閾值數(shù)量(例如,在該示例中是2)。因而,訓練模塊130前進到 階段3。
[0051] 階段3中的訓練集合430包含許多非面部圖像430。在一種實現(xiàn)方式中,非面部圖像 包含僅僅來自緊鄰的在前的階段的假正樣本。因此,訓練集合430包含與來自階段2的假正 樣本425FP對應的非面部圖像430FP。訓練集合430可以包含來自階段2的假正樣本的全部或 僅僅一些。在另一種實現(xiàn)方式中,訓練集合中的非面部圖像包含與來自前面階段的所有假 正樣本對應的非面部圖像430。因此,訓練集合430包含與來自階段1和2兩者的假正樣本 415FP和425FP對應的非面部圖像430FP。在該示例中,在訓練之后,僅僅存在一個假正樣本 435FP,這小于假正樣本的閾值數(shù)量(例如,在該示例中是2)。因而,訓練模塊130完成CNN的 訓練。
[0052] 雙尺度CNN
[0053]圖5是雙尺度CNN 120的示例結構的圖。雙尺度CNN 120接收圖像510,并且確定圖 像510是否包含面部。在一個實施例中,雙尺度CNN 120包含公共CNN 520、第一CNN 580A、第 二CNN 580B和輸出生成器550。可以由訓練模塊130根據(jù)自動尺度訓練來訓練雙尺度CNN 120中的CNN。共同地,這些分量聚集兩個不同程度的圖像中的信息,以有效地利用分量的局 部外觀和全局特性。
[0054] 公共CNN 520接收圖像510,并且從圖像510產(chǎn)生特征塊集合530。優(yōu)選地,圖像510 具有包括覆蓋大部分的可能面部的24x 24像素的第一區(qū)域Rl以及包括覆蓋可能的面部和 背景的32x 32像素的第二區(qū)域R2。在一種實現(xiàn)方式中,公共CNN 520可以用lx 3x 3x 16核 對圖像510執(zhí)行卷積,并且可以通過非重疊最大池化(maxpooling)將卷積的圖像塊下采樣 至大致一半尺寸。另外,公共CNN 520可以執(zhí)行附加的16x 4x 4x 24卷積和最大池化。結果, 公共CNN 520生成具有6x 6空間維度的24通道的特征塊集合530。
[0055]第一CNN 580A接收特征塊的輸入集合530A并且確定圖像510是否包含面部。第一 CNN 580A可以提取特征塊集合530的內(nèi)部區(qū)域作為特征塊的輸入集合530A。優(yōu)選地,特征塊 集合530的內(nèi)部區(qū)域對應于在圖像510內(nèi)的預先確定尺寸的第一區(qū)域。例如,特征塊集合530 的內(nèi)部區(qū)域具有與覆蓋圖像510的可能面部的24x 24像素對應的4x 4維度。第一CNN 580A 包括兩個全連接層,并且基于圖像510內(nèi)的預先確定尺寸的第一區(qū)域來確定圖像510是否包 含面部。因此,第一CNN 580A捕捉圖像510的局部信息。
[0056] 第二CNN 580B基于特征塊集合530確定圖像510是否包含面部。第二CNN 580B可以 使用整個特征塊集合530作為與圖像510內(nèi)的預先確定尺寸的第二區(qū)域對應的特征塊的輸 入集合。在該示例中,特征塊集合530的整個區(qū)域具有與圖像510的32x 32像素面部部分對 應的6x 6維度,而特征塊集合530的內(nèi)部區(qū)域具有與覆蓋圖像510的可能面部的24x 24像素 對應的4x 4維度。第二CNN 580B可以包括附加的卷積層和兩個全連接層。在一個方面中,附 加的卷積層535產(chǎn)生與用作特征塊的輸入集合530A的內(nèi)部區(qū)域相同尺寸的特征塊集合 530B。例如,附加的卷積層535具有24x 3x 3x 24核,并且從具有6x 6x 24維度的整個特征 塊集合530生成具有4x 4x 24維度的特征塊集合530B。另外,第二CNN 580B中的兩個全連接 層基于特征塊集合530B來確定圖像510是否包含面部。兩個全連接層可以共享第一 CNN 580A中的兩個全連接層中的權重。因此,第二CNN 580B基于圖像510內(nèi)的預先確定尺寸的第 二區(qū)域來檢測可能的面部并且捕捉圖像510的全局信息。
[0057] 輸出生成器550將來自第一CNN 580A和第二CNN 580B的結果進行組合,以生成指 示圖像510是否包含面部的輸出。在一個方面中,只有第一CNN580A和第二CNN 580N兩者都 指示圖像510包含面部,輸出生成器550才指示圖像510包含面部。輸出生成器550可以順序 地組合來自第一CNN 580A和第二CNN 580B的結果。
[0058] 在一種實現(xiàn)方式中,可以通過順序地操作兩個CNN 580來實現(xiàn)輸出生成器550。在 一個方法中,只有第一CNN 580A已經(jīng)確定圖像510包含面部,第二CNN 580B才確定圖像510 是否包含面部。因此,第二CNN 580B指示圖像510包含面部暗示了第一CNN 580A也指示圖像 510包含面部??商鎿Q地,可以顛倒順序,并且只有第二CNN 580B已經(jīng)確定圖像510包含面 部,第一CNN 580A才確定圖像510是否包含面部。
[0059]在一個方法中,以部分分離的方式來訓練兩個CNN 580。優(yōu)選地,使用自動階段訓 練算法在24x 24個塊上訓練第一CNN 580A。然后,利用固定到第一CNN 580A的前兩個卷積 層的權重在32x 32個塊上訓練第二CNN580B。初始的負樣本可以是不同的。權重共享提高了 訓練和檢測速度兩者,并且也減小模型尺寸。
[0060] 圖6是檢測圖像510中的面部的方法的流程圖。雙尺度CNN 120接收圖像510(610)。 雙尺度CNN 120使用公共CNN 520從圖像510產(chǎn)生特征塊集合530(620)。雙尺度CNN 120使用 第一CNN 580A、基于特征塊集合530的內(nèi)部區(qū)域確定圖像510是否包含面部(630)。優(yōu)選地, 特征塊集合530的內(nèi)部區(qū)域對應于覆蓋大部分的可能面部的圖像510內(nèi)的預先確定尺寸的 第一區(qū)域。另外,雙尺度CNN 120使用第二CNN 580B、基于整個特征塊集合530來確定圖像 510是否包含面部(635)。優(yōu)選地,整個特征塊集合對應于覆蓋可能的面部和背景的圖像510 內(nèi)的預先確定尺寸的第二區(qū)域。只有第一CNN580A和第二CNN 580B兩者都指示圖像包含面 部,雙尺度CNN 120才指示圖像包含面部(640)。
[0061] 有利地,面部檢測系統(tǒng)100更好地提高面部檢測的準確度。自動尺度訓練通過動態(tài) 地平衡來自包含不平衡數(shù)量的面部圖像和非面部圖像的池的面部圖像和非面部圖像的數(shù) 量來提高準確度。另外,自動尺度訓練通過根據(jù)自動停止準則自適應地改變階段的訓練的 數(shù)量來提高準確度。例如,執(zhí)行訓練,直到在預先確定的時期數(shù)量中不能更新驗證成本。而 且,雙尺度CNN 120通過組合來自第一CNN 580A和第二CNN 580B的結果提高準確度。因此, 能夠捕捉圖像的不同方面。結果,能夠降低假正樣本比率。甚至在無規(guī)律面部容貌的情況 下一一例如由于變化的姿態(tài)、表情、光照條件、咬合等,利用圖像的不同方面允許更魯棒的 面部檢測。采用利用自動階段訓練所訓練的雙尺度CNN 120的面部檢測系統(tǒng)100在面部檢測 數(shù)據(jù)集合和基準(FDDB)上實現(xiàn)具有僅六個假正樣本的81.6%的檢測率,而現(xiàn)有技術的當前 狀態(tài)實現(xiàn)大約具有50個假正樣本的80%的檢測率。
[0062]另外,面部檢測系統(tǒng)100可以實現(xiàn)面部檢測中速度的顯著提高。通過在雙尺度CNN 120的第一CNN 580A和第二CNN 580B中共享權重,能夠增強訓練和檢測速度兩者。雙尺度 CNN 120具有足夠能力以直接地執(zhí)行多視圖面部檢測,因此能夠避免標記面部姿態(tài)以及將 它們劃分為不同的類別。由于具有提高的面部檢測速度,面部檢測系統(tǒng)100可以以實時速度 在現(xiàn)代GPU上實現(xiàn)。例如,在x86/64Linux平臺上的NVIDIA CUDA API中實現(xiàn)面部檢測系統(tǒng) 100。當逐個幀地處理圖像時,面部檢測系統(tǒng)100在單個NVIDIA GTX Titan Black上對VGA圖 像(640\480像素)以24€?8運行。如果整體供給一批10個圖像,則速度上升到32€?8。在沒有 優(yōu)化的情況下通過簡單地使用對應的CPU實現(xiàn)來替換GPU內(nèi)核,由此在CPU上實現(xiàn)面部檢測 系統(tǒng)100,這會實現(xiàn)Intel Core i7的單線程上的1.38fps。
[0063]仿真結果
[0064]為了評估CNN和雙尺度CNN 120的自動階段訓練對面部檢測的性能,在面部檢測數(shù) 據(jù)集合和基準(FDDB)上執(zhí)行具有不同方法的實驗。
[0065]為了評估自動階段訓練的效力,使用不同方法來訓練第一CNN 580A。為了驗證自 動的停止準則的效力(在本文被稱為"autostop"),在每個階段中使用固定數(shù)量的時期來訓 練第一CNN 580A以便進行比較。為了驗證動態(tài)擴充面部圖像以平衡面部圖像和非面部圖像 的數(shù)量的效力,使用預先生成的面部圖像(其僅僅是在沒有自動階段訓練中執(zhí)行的獲取的 情況下的重復的面部圖像)來訓練第一CNN 580A。在表格1中匯總結果。
[0066]表格1:用于自動階段訓練的不同配置的性能。自動停止是在階段訓練中的自動的 停止準則,并且dynaug是陽性樣本的動態(tài)擴充。
[0068]在表格1中,根據(jù)自動階段訓練使用訓練1所訓練的CNN實現(xiàn)僅具有72個假正樣本 的最高Fl得分。在動態(tài)擴張的情況下使用固定數(shù)量的訓練、根據(jù)訓練2-5所訓練的CNN實現(xiàn) 更低的Fl得分和更高的假正樣本數(shù)量。另外,使用預先生成的面部圖像、使用自動的停止準 貝丨J、根據(jù)訓練6-7所訓練的CNN實現(xiàn)更低的Fl得分和更高的假正樣本數(shù)量。因此,自動階段訓 練提高面部檢測的準確度。
[0069] 為了評估雙尺度CNN 120的效力,分開地在H)DB上測試每個CNN 580。在表格2中匯 總結果。
[0070] 表格2:雙尺度CNN和單個CNN的性能。
[0072]如在表格2中列出的,使用兩個CNN 580進行不同尺度的信息的集成顯著地提高檢 測的準確度。盡管雙尺度CNN 120的Fl得分不是最高的,但雙尺度CNN 120的Fl得分基本上 接近于第一CNN 580A和第二CNN 580B的那些Fl得分。同時,當僅僅實現(xiàn)第一CNN 580A會實 現(xiàn)72個假正樣本并且僅僅實現(xiàn)第二CNN 580B會實現(xiàn)47個假正樣本時,實現(xiàn)雙尺度CNN 120 會實現(xiàn)6個假正樣本。因而,當諸如在實際應用中期望具有低假正樣本比率的很好的準確度 時,雙尺度CNN結構是有效的。
[0073] 盡管【具體實施方式】包含許多細節(jié),但這些不應當被理解為限制本發(fā)明的范圍而是 僅僅被理解為說明本發(fā)明的不同的示例和方面。應當理解,本發(fā)明的范圍包括未在上面詳 細地討論的其它實施例。例如,也能夠將在雙尺度CNN 120或自動尺度訓練中公開的原理應 用于除面部檢測之外的其它區(qū)域或對象。在不背離在所附權利要求中限定的本發(fā)明的精神 和范圍的情況下,可以在本文所公開的本發(fā)明的方法和裝置的布置、操作和細節(jié)方面進行 對那些本領域技術人員將是顯而易見的各種其它修改、改變和變化。因此,本發(fā)明的范圍應 當由所附權利要求及其合法等同物來確定。
[0074] 在替換實施例中,在計算機硬件、固件、軟件和/或其組合中實現(xiàn)本發(fā)明。可以在由 可編程處理器執(zhí)行的有形地實現(xiàn)在機器可讀存貯設備中的計算機程序產(chǎn)品中實現(xiàn)本發(fā)明 的裝置;并且能夠通過可編程處理器對輸入數(shù)據(jù)進行操作并且生成輸出執(zhí)行指令的程序以 執(zhí)行本發(fā)明的功能來執(zhí)行本發(fā)明的方法步驟??梢栽诳稍诎ㄖ辽僖粋€可編程處理器的可 編程系統(tǒng)上執(zhí)行的一個或多個計算機程序中有利地實現(xiàn)本發(fā)明,該至少一個可編程處理器 被耦合以從數(shù)據(jù)存貯系統(tǒng)、至少一個輸入設備和至少一個輸出設備接收數(shù)據(jù)和指令并且向 數(shù)據(jù)存貯系統(tǒng)、至少一個輸入設備和至少一個輸出設備傳送數(shù)據(jù)和指令。如果期望的話,可 以以高級別程序或面向對象的程序設計語言或者以匯編或機器語言來實現(xiàn)每個計算機程 序;并且在任何情況下,語言可以是編譯或解釋語言。舉例來說,適當?shù)奶幚砥靼ㄍㄓ煤?專用微處理器兩者。通常,處理器將從只讀存儲器和/或隨機存取存儲器接收指令和數(shù)據(jù)。 通常,計算機將包括用于存儲數(shù)據(jù)文件的一個或多個大容量存儲設備;此類設備包括諸如 內(nèi)部的硬盤和可換式磁盤之類的磁盤;磁光盤;以及光盤。適于有形地實現(xiàn)計算機程序指令 和數(shù)據(jù)地存貯設備包括所有形式的非易失性存儲器,舉例來說包括:諸如EPR0M、EEPR0M,和 閃速存儲器設備之類的半導體存儲器設備;諸如內(nèi)部硬盤和可換式磁盤之類的磁盤;磁光 盤;以及CD-ROM盤。上文中的任何能夠被ASIC(專用集成電路)和其它形式的硬件補充,或被 并入其中。
【主權項】
1. 一種在計算機系統(tǒng)上實現(xiàn)自動地訓練關于面部檢測的卷積神經(jīng)網(wǎng)絡(CNN)的方法, 所述訓練方法使用包含面部圖像以及明顯更大數(shù)量的非面部圖像的池,所述訓練方法出現(xiàn) 在各階段中,所述各階段包括: 構建用于該階段的訓練集合,所述訓練集合具有從所述池中的圖像選取的大致相等數(shù) 量的面部圖像和非面部圖像,所述非面部圖像包含在較早階段中是假正樣本的非面部圖 像;以及 使用用于該階段的訓練集合來訓練CNN。2. 根據(jù)權利要求1所述的方法,其中,所述各階段進一步包括: 構建用于該階段的面部圖像和非面部圖像的驗證集合,其中所述訓練集合用于在該階 段期間訓練所述CNN,并且所述驗證集合用于計算用于該階段的驗證成本,并且所述驗證成 本用于確定是否繼續(xù)該階段的訓練。3. 根據(jù)權利要求1所述的方法,其中,對階段的訓練繼續(xù),直到該階段的驗證成本下降 到低于閾值成本為止。4. 根據(jù)權利要求1所述的方法,其中,對階段的訓練繼續(xù),直到該階段的驗證成本在預 先確定的訓練持續(xù)時間內(nèi)沒有提尚。5. 根據(jù)權利要求4所述的方法,其中,預先確定的持續(xù)時間是預先確定的用于該階段的 訓練的數(shù)量。6. 根據(jù)權利要求1所述的方法,其中,訓練針對附加的階段繼續(xù),直到用于階段的新的 假正樣本的數(shù)量下降到低于閾值。7. 根據(jù)權利要求1所述的方法,其中,訓練針對附加的階段繼續(xù),直到用于階段的總的 假正樣本的數(shù)量下降到低于閾值。8. 根據(jù)權利要求1所述的方法,其中,對于每個相繼的階段,來自較早階段的假正樣本 占訓練集合中的非面部圖像的百分比是不斷增加的百分比。9. 根據(jù)權利要求1所述的方法,其中,用于階段的訓練集合包含來自緊鄰的在前的階段 的所有假正樣本。10. 根據(jù)權利要求1所述的方法,其中,用于階段的訓練集合包含僅僅來自緊鄰的在前 的階段的假正樣本。11. 根據(jù)權利要求1所述的方法,其中,用于階段的訓練集合包含來自多個在前階段的 假正樣本。12. 根據(jù)權利要求1所述的方法,其中,通過修改所述池中的面部圖像來獲取所述訓練 集合中的面部圖像。13. 根據(jù)權利要求12所述的方法,其中,通過將所述池中的面部圖像進行旋轉、模糊、鏡 像或扭曲來獲取所述訓練集合中的面部圖像。14. 根據(jù)權利要求12所述的方法,其中,通過將所述池中的不同面部圖像進行組合來獲 取所述訓練集合中的面部圖像。15. 根據(jù)權利要求1所述的方法,其中,使用所述池中的基本上所有所述面部圖像來獲 取所述訓練集合中的面部圖像。16. 根據(jù)權利要求1所述的方法,其中,使用所述池中的少于一半的所述非面部圖像來 獲取所述訓練集合中的非面部圖像。17. 根據(jù)權利要求1所述的方法,其中,所述CNN以權重為特征,并且訓練所述CNN包括適 配所述權重。18. 根據(jù)權利要求1所述的方法,其中,所述計算機系統(tǒng)包括GPU,并且CNN的訓練在所述 GPU上實現(xiàn)。19. 根據(jù)權利要求1所述的方法,其中,所述CNN是雙尺度CNN。20. -種被配置為存儲由指令組成的程序代碼的非暫時型計算機可讀介質,當所述指 令由處理器運行時,使得處理器訓練關于面部檢測的卷積神經(jīng)網(wǎng)絡(CNN),所述訓練方法使 用包含面部圖像以及明顯更大數(shù)量的非面部圖像的池,所述訓練方法出現(xiàn)在各階段中,所 述各階段包括: 構建用于該階段的訓練集合,所述訓練集合具有從所述池中的圖像獲取的大致相等數(shù) 量的面部圖像和非面部圖像,所述非面部圖像包含在較早階段中是假正樣本的非面部圖 像;以及 使用用于該階段的訓練集合來訓練CNN。21. -種自動地訓練關于面部檢測的卷積神經(jīng)網(wǎng)絡(CNN)的系統(tǒng),所述訓練方法使用包 含面部圖像以及明顯更大數(shù)量的非面部圖像的池,所述訓練方法出現(xiàn)在各階段中,所述各 階段包括: 構建用于該階段的訓練集合,所述訓練集合具有從所述池中的圖像獲取的大致相等數(shù) 量的面部圖像和非面部圖像,所述非面部圖像包含在較早階段中是假正樣本的非面部圖 像;以及 使用用于該階段的訓練集合來訓練CNN。22. -種用于面部檢測的系統(tǒng),所述系統(tǒng)包括: 用于接收圖像的輸入; 第一神經(jīng)網(wǎng)絡,其基于所述圖像內(nèi)的預先確定尺寸的第一區(qū)域來確定所述圖像是否包 含面部; 第二神經(jīng)網(wǎng)絡,其基于所述圖像內(nèi)的預先確定尺寸的第二區(qū)域來確定所述圖像是否包 含面部,其中所述第二區(qū)域大于所述第一區(qū)域,并且所述第二神經(jīng)網(wǎng)絡比所述第一神經(jīng)網(wǎng) 絡多包含至少一個卷積層;以及 輸出,只有所述第一神經(jīng)網(wǎng)絡和所述第二神經(jīng)網(wǎng)絡兩者都指示所述圖像包含面部,所 述輸出才指示所述圖像包含面部。23. 根據(jù)權利要求22所述的系統(tǒng),其中,所述第一區(qū)域的尺寸被調(diào)整為包含可能的面 部,并且所述第二區(qū)域的尺寸被調(diào)整為包含所述可能的面部和背景。24. 根據(jù)權利要求22所述的系統(tǒng),其中,與由第一神經(jīng)網(wǎng)絡單獨進行的指示或者由第二 神經(jīng)網(wǎng)絡單獨進行的指示相比,輸出指示更準確。25. 根據(jù)權利要求22所述的系統(tǒng),還包括: 公共神經(jīng)網(wǎng)絡,其從所述圖像產(chǎn)生特征塊集合,其中所述第二神經(jīng)網(wǎng)絡使用整個特征 塊集合作為輸入,并且所述第一神經(jīng)網(wǎng)絡使用特征塊集合的內(nèi)部區(qū)域作為輸入。26. 根據(jù)權利要求25所述的系統(tǒng),其中,所述第二神經(jīng)網(wǎng)絡包含卷積層,所述卷積層產(chǎn) 生與用作所述第一神經(jīng)網(wǎng)絡的輸入的所述內(nèi)部區(qū)域有相同尺寸的碎片集合。27. 根據(jù)權利要求25所述的系統(tǒng),其中,所述公共神經(jīng)網(wǎng)絡包含卷積層和下采樣層。28. 根據(jù)權利要求25所述的系統(tǒng),其中,所述第一神經(jīng)網(wǎng)絡由使用所述特征塊集合的所 述內(nèi)部區(qū)域作為輸入的全連接層組成,并且第二神經(jīng)網(wǎng)絡由使用所述整個特征塊集合作為 輸入的、后面是全連接層的卷積層組成。29. 根據(jù)權利要求25所述的系統(tǒng),其中,由所述第一神經(jīng)網(wǎng)絡使用的所述內(nèi)部區(qū)域小于 由所述第二神經(jīng)網(wǎng)絡使用的所述整個特征塊集合的一半尺寸。30. 根據(jù)權利要求22所述的系統(tǒng),其中,只有所述第一神經(jīng)網(wǎng)絡已經(jīng)確定所述圖像確實 包含面部,所述第二神經(jīng)網(wǎng)絡才確定所述圖像是否包含面部。31. 根據(jù)權利要求22所述的系統(tǒng),其中,只有所述第二神經(jīng)網(wǎng)絡已經(jīng)確定所述圖像包含 面部,所述第一神經(jīng)網(wǎng)絡才確定所述圖像是否包含面部。32. 根據(jù)權利要求22所述的系統(tǒng),其中,所述第一神經(jīng)網(wǎng)絡對與所述圖像內(nèi)的預先確定 尺寸的所述第一區(qū)域對應的特征塊集合執(zhí)行卷積,并且所述第二神經(jīng)網(wǎng)絡對與所述圖像內(nèi) 的預先確定尺寸的所述第二區(qū)域對應的另一個特征塊集合執(zhí)行卷積,并且其中,所述第一 神經(jīng)網(wǎng)絡中的卷積和所述第二神經(jīng)網(wǎng)絡中的卷積具有共享的權重。33. -種用于面部檢測的方法,所述方法在實現(xiàn)第一神經(jīng)網(wǎng)絡和第二神經(jīng)網(wǎng)絡的計算 機系統(tǒng)上實現(xiàn),所述方法包括: 接收圖像; 所述第一神經(jīng)網(wǎng)絡基于圖像內(nèi)的預先確定尺寸的第一區(qū)域來確定圖像是否包含面部; 所述第二神經(jīng)網(wǎng)絡基于圖像內(nèi)的預先確定尺寸的第二區(qū)域來確定圖像是否包含面部, 其中所述第二區(qū)域大于所述第一區(qū)域,并且所述第二神經(jīng)網(wǎng)絡比所述第一神經(jīng)網(wǎng)絡多包含 至少一個卷積層;以及 只有所述第一神經(jīng)網(wǎng)絡和所述第二神經(jīng)網(wǎng)絡兩者都指示所述圖像包含面部,才指示所 述圖像包含面部。34. -種被配置為存儲由指令組成的程序代碼的非暫時型計算機可讀介質,當所述指 令由處理器運行時,使得處理器執(zhí)行包括以下的面部檢測: 接收圖像; 第一神經(jīng)網(wǎng)絡基于圖像內(nèi)的預先確定尺寸的第一區(qū)域來確定圖像是否包含面部; 第二神經(jīng)網(wǎng)絡基于圖像內(nèi)的預先確定尺寸的第二區(qū)域來確定圖像是否包含面部,其中 所述第二區(qū)域大于所述第一區(qū)域,并且所述第二神經(jīng)網(wǎng)絡比所述第一神經(jīng)網(wǎng)絡多包含至少 一個卷積層;以及 只有所述第一神經(jīng)網(wǎng)絡和所第二神經(jīng)網(wǎng)絡兩者都指示圖像包含面部,才指示所述圖像 包含面部。
【文檔編號】G06K9/66GK106062774SQ201480076851
【公開日】2016年10月26日
【申請日】2014年11月15日
【發(fā)明人】印奇, 曹志敏, 賈開
【申請人】北京曠視科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1