廣東工業(yè)大學自動化學院 馮省城
當前的人臉識別算法發(fā)展迅速,已經能夠以極高準確率進行人臉驗證。但是使用照片也可以有效地通過人臉驗證,所以還需要進行人臉活體檢測進行驗證是否為真人。我們可以讓人說出所提供的數(shù)字驗證碼,通過唇動序列識別出所說的數(shù)字驗證碼,然后進行正確性的驗證,進而進行活體檢測?;贑NN+LSTM+CTC的傳統(tǒng)方法對于數(shù)據(jù)量小的數(shù)據(jù)集會出現(xiàn)難以收斂,并且準確率不高。本文使用注意力機制對不同位的數(shù)字進行分別的分類,這樣就把多分類簡化為一個10分類問題。實驗表明,本文提出的基于CNN+GRU+ATTENTION的方法,對于小數(shù)據(jù)量的數(shù)據(jù)集能夠更好的收斂,并且有更高的準確率。
唇語識別技術能通過唇動視頻序列來理解人說話內容的一種技術。當處于噪聲環(huán)境之下時,語音識別的準確率會有很大的下降,唇動序列能夠幫助我們理解人的說話內容。所以唇語識別技術結合基于聲學模型的語音識別技術,能夠解決噪聲的問題。同時對于人臉活體檢測的問題,我們也能夠通過人臉識別技術和唇語識別技術相結合來解決。人臉識別技術用于識別進行視頻中人的身份認證,唇語識別技術用于進行視頻中人的真實性驗證,所以一個高效并且高精度的唇語識別算法是至關重要的。
最先進的單個詞匯唇語識別方法由一個3D卷積層,接著是一個18層殘差網絡(ResNet),一個雙向門控復發(fā)單元(BGRU)網絡和一個softmax層。它在LRW和LRW1000數(shù)據(jù)集實現(xiàn)了最好的性能。而我們的數(shù)字驗證碼唇語識別是無法使用這種方法進行識別的,需要使用基于句子級別的唇語識別,但是句子級別的唇語識別模型因為需要強大的前后語意,需要較為龐大模型參數(shù),對于數(shù)字驗證碼識別唇語識別的應用場景,我們需要一個模型更加小的方法。其中基于CNN+LSTM+CTC的方法是一種可行方法,但是基于數(shù)字驗證碼是固定的特性,本文設計出一種基于注意力機制的唇動序列數(shù)字驗證碼識別方法,有更好的精度和效率。
注意力機制是一種模仿人類視覺機制的方法,在人類根據(jù)所看到的圖像里,快速掃描全局圖像,然后會根據(jù)自己的重點選擇性關注對自己有用的信息,忽略其他無用的信息。也就是說注意力機制就是對某一區(qū)域給與更大的關注,從而獲得關鍵點更多有用的信息,抑制其他區(qū)域無用的信息。從人類進化角度來說,這使得人類極大的提高了視覺處理上的高效性和準確性。注意力機制已經成功的運用在許多領域,如自然語言處理,計算機視覺等。那么在網絡中,注意力機制本質上關注的是什么呢。注意力機制我們分為通道注意力機制和空間注意力機制。通道注意力機制是通過對卷積的特征維度通道進行一個權重的計算,因為特征維度通道代表的是各個特征的信息,所以通道注意力機制是篩選出對于結果有用的特征通道,忽略其他無用的特征通道??臻g注意力機制顧名思義就是關注空間中重要的信息,忽略空間中無用的信息。兩種注意力機制沒有本質的區(qū)別,只是關注的維度不同而已。這里我們根據(jù)我們的唇動序列提出一個注意力機制網絡,用于關注唇動序列中哪些序列屬于有用信息,哪些序列屬于無用信息。如圖1所示,輸入為經過卷積提取的圖像序列特征,維度為N×C,通過兩個全連接層FC提取出權重信息,維度為N×1,然后把這個權重信息和輸入相乘,從而調整N這個維度的注意重點。因為N這個維度是唇動序列維度,也就是通過注意力機制提取出相對有用的唇動序列信息。
圖1 注意力模塊結構圖
在基于CNN+LSTM+CTC的傳統(tǒng)方法中,我們使用CNN卷積網絡對每一幀嘴唇圖像進行空間特征的提取,然后使用LSTM循環(huán)神經網絡提取唇動序列之間的時間信息特征,最后用CTC-Loss對每一幀回歸到每一個數(shù)字標簽,從而實現(xiàn)唇動序列數(shù)字驗證碼的識別。本文在此方法的基礎上提出了基于注意力機制的唇動序列數(shù)字驗證碼識別方法。首先,我們仍然使用一樣的空間和時間的特征提取網絡進行唇動序列的空間時間特征的提取,然后我們使用多個注意力機制模塊,對提取出來的特征進行不同幀間的權重改變,使得不同位數(shù)的驗證碼注意力集中在其對應的圖像幀上,同時使用損失函數(shù)回歸每一個數(shù)字驗證碼位,從而實現(xiàn)唇動序列數(shù)字驗證碼識別。
網絡基本框架如圖2所示,我們使用resnet18作為圖像特征的提取,因為嘴唇特征相對簡單,所以我們使用層數(shù)相對較淺的特征提取網絡就能夠滿足性能要求。使用GRU循環(huán)神經網絡進行時序特征的提取,GRU相對于LSTM,更加容易收斂,不容易過擬合。我們假設我們的驗證碼位數(shù)是4位,所以使用了四個注意力模塊,讓不同位置的驗證碼關注不同的視頻幀,從而實現(xiàn)4個位驗證碼的分類。同時我們使用arcloss損失函數(shù)替代一般的交叉熵損失函數(shù),使得不同類的特征間距更加的大,最終獲得四位數(shù)字驗證碼結果。
圖2 網絡框架
通常訓練的模型往往會過度擬合數(shù)據(jù)集場景,目標詞總是在其中心位置。在這種有偏差的環(huán)境下訓練的模型可以記住這些偏差,并對輸入的微小變化變得敏感。例如,簡單地從輸入序列中刪除一個隨機幀會導致性能顯著下降。所以為了避免這種數(shù)據(jù)集的偏差,我們提出了一種方法,即對每個輸入訓練序列在目標詞邊界之前和之后的一個隨機點進行隨機裁剪。雖然這種變化不會直接改善現(xiàn)有的基準,但我們認為它產生了更健壯的模型。
本文是基于數(shù)字驗證碼來做唇語識別的實驗,并且在實際應用中是可以通過手機攝像頭獲得清晰的唇動序列,所以綜合考慮下,使用OuluVs2數(shù)據(jù)集作為本文的實驗數(shù)據(jù)集。OuluVs2數(shù)據(jù)集具有多個視角的唇動序列,并且也有關于數(shù)字驗證碼的相關唇動序列樣本,所以我們使用該數(shù)據(jù)集的正面視角中的數(shù)字驗證碼部分作為實驗數(shù)據(jù)。該數(shù)據(jù)集是在實驗室環(huán)境下采集,樣本中總共有52個人,每個人說出30個不同的數(shù)字驗證碼,總共有1560個樣本,通過隨機分配成1400個訓練集,160個作為測試集。
我們使用相同的數(shù)據(jù)集對不同的算法進行性能測試,一種是基于CNN+LSTM+CTC的傳統(tǒng)方法,一種是我們提出的基于CNN+GRU+Attention的方法。使用的評測指標為精確度,其中對于一個樣本所有數(shù)字驗證碼的位數(shù)都對就認為是正確的,有一個數(shù)字識別錯誤了就認為是錯誤的。
表1 實驗結果
實驗結果如表1所示,在同樣的實驗設置下,本文方法在精確度上比傳統(tǒng)方法提高了5個百分點的精度。可以看出,我們的方法具有一定的優(yōu)越性。