本發明涉及人臉活體檢測領域,具體而言,涉及一種面具造假卷積神經網絡訓練方法及人臉活體檢測方法。
背景技術:
由于人臉容易獲取、非接觸式、使用方便等優點,人臉識別受到人們的喜愛,廣泛應用在門禁出入境管理系統、登錄系統等。隨著智能設備的普及,人臉易被他人獲取,通過面具、照片或者視頻對人臉識別系統進行攻擊。因此,在人臉識別系統中,人臉活體檢測變得非常重要,是保證用戶安全的不可或缺的手段,也是人臉識別得到廣泛推廣的前提。
技術實現要素:
有鑒于此,本發明實施例的目的在于提供一種面具造假卷積神經網絡訓練方法及人臉活體檢測方法,以提供一種應對面具造假的人臉活體檢測方法。
為了達到上述的目的,本發明實施例采用的技術方案如下所述:
第一方面,本發明實施例提供了一種面具造假卷積神經網絡訓練方法,所述方法包括:構建訓練集,所述訓練集包括面具造假視頻和真人視頻;獲取面具造假視頻和真人視頻中的圖像;通過人臉檢測算法檢測所述圖像中的人臉;將所述人臉進行裁剪;對裁剪后出人臉圖像進行歸一化處理;將所述歸一化后的人臉圖像輸入至卷積神經網絡,所述卷積神經網絡包括輸入層、多個卷積層、relu層、max-pooling層、全連接層、dropout層和softmaxwithloss層;所述輸入層將所述歸一化后的人臉圖像進行隨機裁剪,將裁剪后的人臉圖像水平翻轉,得到特定像素的圖像,將所述特定像素的圖像送入多個卷積層中的第一個卷積層;所述第一個卷積層包括多個卷積核,所述第一個卷積層連接一個relu層和max-pooling層,所述特定像素的圖像經過所述第一個卷積層后得到與所述第一個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述max-pooling層對所述特征圖像進行壓縮,提取主要特征,所述特征圖像進入第二個卷積層;所述第二個卷積層包括多個卷積核,所述第二個卷積層連接一個relu層和max-pooling層,所述特征圖像經過所述第二個卷積層后得到與所述第二個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第二個max-pooling層后進而進入第三個卷積層;所述第三個卷積層包括多個卷積核,所述第三個卷積層連接一個relu層和max-pooling層,所述特征圖像經過所述第三個卷積層后得到與所述第三個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第三個max-pooling層后進而進入第四個卷積層;所述第四個卷積層包括多個卷積核,所述第四個卷積層連接一個relu層和max-pooling層,隨后連接兩個全連接層,每個全連接層均依次連接一個relu層和dropout層,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過所述第四個卷積層后得到與所述第四個卷積層的卷積核對應數量的特征圖像,經過第四個max-pooling層后進而進入兩個全連接層以及與所述全連接層連接的relu層和dropout層,dropout層通過訓練時,隨機讓卷積神經網絡某些隱含層節點的權重不工作,dropout層之后依次連接一個全連接層和softmaxwithloss層,最后一個全連接層輸出所述人臉圖像的得分情況,將得分輸入到最后一層softmaxwithloss層,得到屬于面具造假和真人的概率以及該次迭代的損失。
進一步地,每一個所述卷積層和relu層之間均依次連接一個batchnorm層和一個scale層,所述batchnorm層將神經元的輸出規范化到均值為0,方差為1,所述scale層逆轉所述batchnorm層對特征的破壞。
進一步地,所述構建訓練集的步驟包括:按照預定比例構建訓練集和驗證集,所述訓練集和驗證集均包括面具造假視頻和真人視頻。
進一步地,所述對裁剪后出人臉圖像進行歸一化處理的步驟包括:對裁剪后出人臉圖像歸一化到256×256像素。
進一步地,所述輸入層包含rgb三個通道,大小為256×256,將訓練集分為1000個batch,每個batch大小為128,所述特定像素的圖像的像素為227×227。
進一步地,所述第一個卷積層包括96個卷積核,每個卷積核的大小為7×7,卷積操作的步長為2,經過第一個卷積層后得到96個像素為111×111的特征圖像,經過第一個max-pooling層后,得到96個像素為55×55的特征圖像,所述第一個max-pooling層的大小為3×3,步長為2。
進一步地,所述第二個卷積層包括256個卷積核,每個卷積核的大小為5×5,卷積操作的步長為2,經過第二個卷積層后得到256個像素為26×26的特征圖像,經過第二個max-pooling層后,得到256個像素為26×26的特征圖像,所述第二個max-pooling層的大小為3×3,步長為1,邊界填充為1。
進一步地,所述第三個卷積層包括192個卷積核,每個卷積核的大小為3×3,邊界補充1,卷積操作的步長為1,經過第三個卷積層后得到192個像素為26×26的特征圖像,經過第三個max-pooling層后,得到192個像素為26×26的特征圖像,所述第三個max-pooling層的大小為3×3,步長為1,邊界填充為1。
進一步地,所述第四個卷積層包括192個卷積核,每個卷積核的大小為3×3,邊界補充1,卷積操作的步長為1,經過第四個卷積層后得到192個像素為26×26的特征圖像,經過第四個max-pooling層后,得到192個像素為13×13的特征圖像,所述第四個max-pooling層的大小為3×3,步長為2。
第二方面,本發明實施例提供了一種基于面具造假的人臉活體檢測方法,所述方法包括:獲取人臉圖像;通過人臉檢測算法檢測所述圖像中的人臉;將所述人臉進行裁剪;對裁剪后出人臉圖像進行歸一化處理;將所述歸一化后的人臉圖像輸入至卷積神經網絡,所述卷積神經網絡包括輸入層、多個卷積層、relu層、max-pooling層、全連接層、dropout層和softmax層;所述輸入層將所述歸一化后的人臉圖像進行隨機裁剪,將裁剪后的人臉圖像水平翻轉,得到特定像素的圖像,將所述特定像素的圖像送入多個卷積層中的第一個卷積層;所述第一個卷積層包括多個卷積核,所述第一個卷積層連接一個relu層和max-pooling層,所述特定像素的圖像經過所述第一個卷積層后得到與所述第一個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述max-pooling層對所述特征圖像進行壓縮,提取主要特征,所述特征圖像進入第二個卷積層;所述第二個卷積層包括多個卷積核,所述第二個卷積層連接一個relu層和max-pooling層,所述特征圖像經過所述第二個卷積層后得到與所述第二個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第二個max-pooling層后進而進入第三個卷積層;所述第三個卷積層包括多個卷積核,所述第三個卷積層連接一個relu層和max-pooling層,所述特征圖像經過所述第三個卷積層后得到與所述第三個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第三個max-pooling層后進而進入第四個卷積層;所述第四個卷積層包括多個卷積核,所述第四個卷積層連接一個relu層和max-pooling層,隨后連接兩個全連接層,每個全連接層均依次連接一個relu層和dropout層,所述特征圖像經過所述第四個卷積層后得到與所述第四個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第四個max-pooling層后進而進入兩個全連接層以及與所述全連接層連接的relu層和dropout層,dropout層通過訓練時,隨機讓卷積神經網絡某些隱含層節點的權重不工作,dropout層之后依次連接一個全連接層和softmax層,最后一個全連接層輸出所述人臉圖像的得分情況,將得分輸入到最后一層softmax層,得到屬于面具造假和真人的概率。
本發明實施例提供的面具造假卷積神經網絡訓練方法及人臉活體檢測方法,通過訓練基于造假面具的卷積神經網絡,對造假面具進行學習,為人臉識別時抵御面具造假攻擊提供保護,保護人臉識別的安全。
為使本發明的上述目的、特征和優點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發明的某些實施例,因此不應被看作是對范圍的限定,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。
圖1是本發明實施例提供的面具造假卷積神經網絡訓練方法的流程示意圖。
圖2是卷積神經網絡的訓練流程圖。
圖3是本發明實施例中訓練的卷積神經網絡模型的示意圖。
圖4是本發明實施例提供的一種基于面具造假的人臉活體檢測方法的流程圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發明實施例的組件可以以各種不同的配置來布置和設計。
因此,以下對在附圖中提供的本發明的實施例的詳細描述并非旨在限制要求保護的本發明的范圍,而是僅僅表示本發明的選定實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
請參照圖1,是本發明實施例提供的面具造假卷積神經網絡訓練方法的流程示意圖。該方法包括以下步驟:
步驟s110,構建訓練集,訓練集包括面具造假視頻和真人視頻。
當訓練集不包括驗證集時,步驟s101還包括按照預定比例構建訓練集和驗證集,所述訓練集和驗證集均包括面具造假視頻和真人視頻。訓練集和驗證集的比例自由配置,例如可以為8:2或7:3,本發明實施例對此不做限定。面具造假視頻為錄制的面具的視頻,該面具與真人人臉相似度高,模擬用面具造假進行攻擊的情景,真人視頻為錄制的真人的視頻。
步驟s120,獲取面具造假視頻和真人視頻中的圖像。
從面具造假視頻和真人視頻中分別取出多張圖像,比如隔3幀或者5幀取出一張圖像,則一個視頻總共取出:總幀數/3或者總幀數/5張圖像。
步驟s130,通過人臉檢測算法檢測所述圖像中的人臉。
人臉檢測算法可以為現有的通用的人臉檢測算法,如adaboost。
步驟s140,對人臉進行裁剪。
在對人臉進行裁剪過程中,利用人臉特征點定位的算法,找到人臉的準確區域,得到準確的人臉框,將該人臉框擴大,一般擴大1.8倍,將擴大后的人臉框對應的原圖中的區域裁剪出來,裁剪出來的人臉既包括人臉,也包括一定的背景,一定的背景存在有利于分類真假視頻。
步驟s150,對裁剪后出人臉圖像進行歸一化處理。
裁剪后的人臉圖像經過歸一化處理,歸一化到256×256像素。
步驟s160,將歸一化后的人臉圖像輸入至卷積神經網絡,該卷積神經網絡包括輸入層、多個卷積層、relu層、max-pooling層、全連接層、dropout層和softmaxwithloss層。
步驟s170,對該卷積神經網絡進行訓練。
其中,歸一化后的人臉圖像首先進入輸入層,請參照圖2,是卷積神經網絡的訓練過程,包括以下步驟:
步驟s171,輸入層將歸一化后的人臉圖像進行隨機裁剪,將裁剪后的人臉圖像水平翻轉,得到特定像素的圖像,將特定像素的圖像送入多個卷積層中的第一個卷積層。
其中,輸入層的圖像包含rgb三個通道,且大小為256×256,將訓練集分為1000個batch,每個batch大小為128。特定像素的圖像的像素為227×227,將該batch內的圖像打亂順序送入第一個卷積層,該batch內的圖像樣本正負比例1:1,且均屬于同一個人的人臉圖像,以降低由于不同外貌特征造成的差異,使網絡學習到由于真人和造假之間的本質特征,降低類內差異。
步驟s172,第一個卷積層包括多個卷積核,第一個卷積層連接一個relu層和max-pooling層,特定像素的圖像經過第一個卷積層后得到與第一個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,max-pooling層對特征圖像進行壓縮,提取主要特征,特征圖像進入第二個卷積層。
在本實施例中,第一個卷積層的卷積核的個數為96個,每個卷積核的大小為7×7,卷積操作的步長為2,經過第一個卷積層后得到96個像素為111×111的特征圖像,第一個max-pooling層的大小為3×3,步長為2,經過第一個max-pooling層后,得到96個像素為55×55的特征圖像。作為優選的,每一個卷積層和relu層之間依次連接一個batchnorm層和一個scale層,經過batchnorm層,scale層,relu層并不改變特征圖像的大小。當深度網絡層次太多,信號和梯度越來越小,深層難以訓練,被稱作梯度彌散,也有可能越來越大,又被稱作梯度爆炸,通過batchnorm層將神經元的輸出規范化到均值為0,方差為1,scale層逆轉所述batchnorm層對特征的破壞,以克服深度神經網絡難以訓練的弊病。由于深度網絡在訓練時,每一層的輸入數據分布一直是在發生變化的,因為前面一層的參數更新會導致后面一層的輸入數據的分布,batchnorm和scale可以解決訓練時,網絡中間層的數據分布發生改變的問題,batchnorm層是通過將神經元的輸出規范化到:均值為0,方差為1,通過batchnorm層后,所有神經元都規范化到了一種分布,但輸出限制在均值0方差1的分布又會使得網絡的表達能力變弱,也破壞了前面層學習到的特征,所以加入scale層,通過加入學習到的重構參數,逆轉對特征的破壞,逆轉的程序由模型訓練時調整。這樣既將神經元做了規范化又保留前面層所學到的特征,由于輸入變得穩定,促進了模型的收斂并一定程度上阻止了過擬合。通過逐層尺度歸一,避免了梯度消失和梯度溢出,而且加速收斂,同時作為一種正則化技術也提高了泛化能力;相比使用sigmoidtanh作激活函數,計算量大,反向傳播求誤差梯度時,求導計算量也很大,并且sigmoidtanh函數容易飽和,出現梯度消失情況,即在接近收斂時,變換太緩慢,造成信息丟失。relu層會使部分神經元輸出為0,造成稀疏性,不僅緩解了過擬合,也更接近真實的神經元激活模型克服了梯度消失,在沒有無監督預訓練(即訓練網絡的第一個隱藏層,再訓練第二個…最后用這些訓練好的網絡參數值作為整體網絡參數的初始值)的情況下相比sigmoid和tanh激活函數顯著加快收斂。
步驟s173,第二個卷積層包括多個卷積核,第二個卷積層連接一個relu層和max-pooling層,特征圖像經過第二個卷積層后得到與第二個卷積層的卷積核對應數量的特征圖像,所述relu層使部分神經元輸出為0,造成稀疏性,所述特征圖像經過第二個max-pooling層后進而進入第三個卷積層。
第二個卷積層包括256個卷積核,每個卷積核的大小為5×5,卷積操作的步長為2,經過第二個卷積層后得到256個像素為26×26的特征圖像,relu層使部分神經元輸出為0,造成稀疏性,特征圖像經過第二個max-pooling層后,得到256個像素為26×26的特征圖像,第二個max-pooling層的大小為3×3,步長為1,邊界填充為1。
步驟s174,第三個卷積層包括多個卷積核,第三個卷積層連接一個max-pooling層,特征圖像經過第三個卷積層后得到與第三個卷積層的卷積核對應數量的特征圖像,relu層使部分神經元輸出為0,造成稀疏性,特征圖像經過第三個max-pooling層后進而進入第四個卷積層。
第三個卷積層包括192個卷積核,每個卷積核的大小為3×3,邊界補充1,卷積操作的步長為1,經過第三個卷積層后得到192個像素為26×26的特征圖像,經過第三個max-pooling層后,得到192個像素為26×26的特征圖像,第三個max-pooling層的大小為3×3,步長為1,邊界填充為1。
步驟s175,第四個卷積層包括多個卷積核,第四個卷積層連接一個max-pooling層,隨后連接兩個全連接層,每個全連接層均依次連接一個relu層和dropout層,relu層使部分神經元輸出為0,造成稀疏性,特征圖像經過第四個卷積層后得到與第四個卷積層的卷積核對應數量的特征圖像,經過第四個maxpooling層后進而進入兩個全連接層以及與全連接層連接的relu層和dropout層。
第四個卷積層包括192個卷積核,每個卷積核的大小為3×3,邊界補充1,卷積操作的步長為1,經過第四個卷積層后得到192個像素為26×26的特征圖像,經過第四個max-pooling層后,得到192個像素為13×13的特征圖像,第四個max-pooling層的大小為3×3,步長為2。
步驟s176,dropout層通過訓練時,隨機讓卷積神經網絡某些隱含層節點的權重不工作,dropout層之后依次連接一個全連接層和softmaxwithloss層,最后一個全連接層輸出人臉圖像的得分情況,將得分輸入到最后一層softmaxwithloss層,得到屬于面具造假和真人的概率以及當前迭代的損失。
dropout層消除減弱了神經元節點間的聯合適應性,增強了泛化能力,dropout層通過訓練模型時,隨機讓網絡某些隱含層節點的權重不工作的方式防止模型過擬合,正則化手段,提高泛化能力。訓練過程中,softmaxwithloss層包括softmax層和多維logisticloss層,softmax層將前面的得分情況映射為屬于每一類的概率,之后接一個多維logisticloss層,這里得到的是當前迭代的損失。把softmax層和多維logisticloss層合并為一層保證了數值上的穩定,兩個全連接層輸出為512維特征。
請參照圖3,是本發明實施例中訓練過程中的卷積神經網絡模型的示意圖。本發明實施例提供的面具造假卷積神經網絡訓練方法通過訓練基于造假面具的卷積神經網絡,對造假面具進行學習,為人臉識別時抵御面具造假攻擊提供保護,保護人臉識別的安全。
請參照圖4,本發明實施例還提供了一種基于面具造假的人臉活體檢測方法,該方法包括以下步驟:
步驟s210,獲取人臉圖像。
獲取的人臉圖像可以是通過門禁、電腦或者監控器等設備的攝像頭獲取的人臉圖像。
步驟s220,通過人臉檢測算法檢測圖像中的人臉。
步驟s230,將人臉進行裁剪.
步驟s240,對裁剪后出人臉圖像進行歸一化處理。
步驟s250,將歸一化后的人臉圖像輸入至卷積神經網絡,卷積神經網絡包括輸入層、多個卷積層、relu層、max-pooling層、全連接層、dropout層和softmax層。
步驟s260,對所述人臉圖像進行識別。
其中,步驟s260的識別過程依據上述實施例訓練的卷積神經網絡進行,以得到人臉圖像真假的概率。由于在前述實施例中已經對具體過程和原理作出陳述,此處不再贅述。
綜上所述,本發明實施例提供了一種面具造假卷積神經網絡訓練方法及人臉活體檢測方法,通過訓練基于造假面具的卷積神經網絡,對造假面具進行學習,為人臉識別時抵御面具造假攻擊提供保護,保護人臉識別的安全。
在本申請所提供的實施例中,應該理解到,所揭露的方法,也可以通過其它的方式實現。以上所描述的實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據本發明的實施例的方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現方式中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
另外,在本發明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。
所述功能如果以軟件功能模塊的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。