馬金林,朱艷彬,馬自萍,鞏元文,陳德光,劉宇灝
1.北方民族大學 計算機科學與工程學院,銀川750021
2.圖像圖形智能信息處理國家民委重點實驗室,銀川750021
3.北方民族大學 數學與信息科學學院,銀川750021
隨著人工智能技術的發展和計算機算力的增強,唇語識別逐漸成為研究熱點。唇語識別是一種通過視覺特征解釋唇部、面部和舌頭的運動來理解語音的技術,最初由Sumby等[1]在1954年提出,1984年,Illinois大學[2]建立了第一個唇語識別系統。與其他識別系統(包括人臉識別、指紋識別和手勢識別)相比,唇語識別具有時效性、方便性和直接性的特點。唇語識別涉及模式識別[3-4]、計算機視覺[5]和圖像處理等研究領域。由于其在信息安全[6-7]、語音識別[8-9]和輔助駕駛[10]方面具有應用價值而受到廣泛關注。
根據識別模式的不同[11],將唇語識別分為視聽語音識別(Audio-visual Speech Recognition,AVSR)和視覺語音識別(Visual Speech Recognition,VSR),AVSR是指利用唇部視覺信息輔助音頻語音識別,VSR僅使用唇部的視覺信息。2016年之前,傳統技術研究較為廣泛,詳見文獻[12]。傳統方法能夠解決一定數據規模下識別精度不高的問題,但需要具備豐富唇讀知識的研究者設計特征提取方法,此外,還存在泛化性不高的缺點。隨著大規模數據集[13]的出現和識別任務復雜性的提高,基于深度學習挖掘人類視覺與認知規律的唇語識別技術成為發展必然。基于深度學習的唇語識別方法將一連串被裁剪的唇部圖像送入前端以提取視覺特征,然后將其傳遞給后端以建立時間依賴的分類模型,并以端到端的形式進行訓練。唇語識別的深度學習方法框架如圖1所示。

圖1 唇語識別深度學習方法框架Fig.1 Deep learning methods for lip recognition
根據識別對象的不同[14-15],唇語識別的深度學習方法可以分為孤立唇語識別方法和連續唇語識別方法:孤立唇語識別方法的識別對象是數字、字母、單詞或短語等視覺上可分的有限類別;連續唇語識別方法的識別對象是音素、視素[16](視覺信息的基本單位)、字符等視覺上不可區分的視覺單元。
孤立唇語識別的輸入與輸出呈多對一關系。由于數字字母等識別對象唇形的模糊性,不同識別對象可能產生相似的唇形運動,因此孤立唇語識別主要圍繞如何更有效地描述唇動的底層特征、降低誤判率展開。根據視覺時序特征提取方法的不同分為基于二維卷積神經網絡(2D CNN)和基于三維卷積神經網絡(3D CNN)兩類識別方法。
基于2D CNN的孤立唇語識別方法經歷了兩個研究階段:第一階段,通過構建基于光流和灰度圖像的雙流二維卷積神經網絡展開研究。第二階段,為避免光流輸入,在單流2D CNN基礎上,構建時間特征提取模塊來捕獲上下文信息。
第一階段,針對單流2D CNN無法建模時間上下文信息的問題,Weng等[17]提出基于光流和灰度視頻的雙流網絡,利用光流圖像序列中像素的時域變化和相鄰幀間的相關性,尋找前一幀與當前幀之間的對應關系來直接編碼唇部運動。雙流網絡通過將光流與灰度視頻流融合的方式,捕獲相鄰幀間的像素運動。具體地,使用PWC-Net[18]計算光流后,使用與灰度視頻流相同的前端結構(不共享權重)提取光流特征,并與灰度視頻流提取的特征相融合。該方法在清潔音頻和低噪聲條件下取得了一定效果,但無法獲得長時依賴。為此,采用長短時記憶網絡(Long Short Term Memory Network,LSTM)聚合2D CNN輸出的視頻幀的底層特征,產生了音視頻同步網絡SyncNet[19]。該網絡包括五個2D CNN層和兩個全連接層,將在卷積層提取自灰度輸入圖像的單幀特征向量輸入到單層LSTM,LSTM在時間序列中對輸入特征建模,返回預測類,在OuluVS數據集[20]上取得了94.1%的識別準確率。文獻[21-22]也采用了類似結構。但由于LSTM對幀間底層的時間信息建模不足,導致時序信息丟失,同時,光流法的預計算具有計算量大、對光照和說話人姿態變化敏感的缺點。因此,設計時間特征提取模塊,通過有效捕獲唇部運動的上下文信息避免使用光流輸入是該領域的研究熱點。
第二階段,避免光流輸入,有兩種設計思路。一種思路是從光流計算的原理出發,通過相鄰幀的連續性和不同人發音時運動模式的一致性,設計變形流網絡(DFN)[23]。變形流網絡通過學習相鄰幀之間的變形流來直接捕捉唇部區域的運動信息,它將唇部運動建模為說話過程中唇部區域的一系列明顯變形,然后將學習到的變形流與原始灰度幀結合起來進行識別。為了使兩個流在學習過程中利用信息的互補性進行相互學習,引入雙向知識蒸餾損失來共同訓練這兩個分支。但由姿勢、光照條件、說話人的外表、說話速度等的變化所帶來的噪音使模型無法有效捕捉唇部運動信息。為提高模型對外部環境的魯棒性,在局部特征和全局序列的層面上引入相互信息約束[24],以加強它們與語音內容的關系。一方面,通過施加局部相互信息最大化約束,提高模型發現細微的唇部運動和發音相似的單詞之間細微差異的能力。另一方面,在全局序列水平上引入了互信息最大化約束,使模型能夠更多關注與語音內容相關的關鍵幀辨別,而較少關注說話過程中出現的各種噪音。通過將這兩者結合在一起,提高孤立唇語識別的辨別力和魯棒性。
另一種思路是對時間通道上的信息進行有效處理來設計時間特征提取模塊。例如,Chung等[25]將建模的最小單元由單張圖片變成連續若干幀所組成的片段,在通道維度上拼接后,作為分類網絡的輸入來構建時間特征提取模塊。最具有代表性的工作是早期融合(Early Fusion,EF)[26]和多塔(Multi-Tower,MT)[27],它們在VGG-M[28]架構之上添加額外的卷積層,分別用于捕捉輸入數據的空間和時空信息,提高網絡動態特征建模能力。其中,基于2D CNN的多塔結構表現最好,在LRW數據集[29]的500個單詞訓練下,準確率達到61.1%。然而該方法仍無法處理整個唇部圖像序列的時空信息,因此提出一種新的序列圖像表示方法——幀級聯圖像(Concatenated Frame Image,CFI)[30]。CFI將視頻的所有幀連接成一幅圖像作為輸入,分別在嵌套網絡(Network in Network,NIN)[31]、AlexNet和GoogLeNet中提取視覺特征,基于CFI的GoogLeNet表現最好,但會大量學習到與任務無關的冗余信息(如姿態、光照、膚色等)。為解決這一問題,研究人員在CFI的基礎上提出一種基于Hahn矩的2D CNN[32](HCNN),它結合Hahn矩有效地提取和保留圖像中最有用的信息以減少冗余。實驗表明,淺層HCNN模型能有效地降低視頻圖像的維度,分類精度優于GoogLeNet和SyncNet,極大降低了模型復雜度。
基于2D CNN的識別方法雖能很好地解決唇部特征的自動提取問題,但需要指出的是,在處理順序輸入時,即使使用動態幀,該方法在每次卷積運算后均會丟失輸入數據的時間信息,該架構仍會在空間特征方面有所妥協,需要借助光流或設計專門的時間特征提取模塊來捕獲連續幀圖像在時間維度上的信息。基于此,3D CNN被引入孤立唇語識別中。
基于三維卷積神經網絡的識別方法采用三維卷積(3D CNN)對連續幀唇部圖像的時空信號進行建模,能很好地獲取時間信息和空間信息。Stafylakis等[33]首次采用3D CNN來提取唇語視頻的時空特征,強調對唇部區域進行短期動態建模的必要性。采用3D CNN建模雖然能夠得到比2D CNN更緊湊的特征表示,但僅僅在具有豐富視聽內容的數據集上表現良好,泛化能力弱。為解決這一問題,耦合的3D CNN[34]架構利用從視覺模態提取的信息,通過尋找視聽流之間的對應關系補充缺失的信息來提高模型的泛化能力。首先,對視覺模塊,將固定大小的60×100灰度圖像輸入到4層3D CNN提取唇部運動的時空信息,并利用時間上的相關性加以對齊;在音頻模塊,用3D卷積層提取MFCC(Mel-Fequency Cepstral Coefficients,MFCC)[35]特征,然后,將視頻和音頻模塊提取的特征映射到一個特征空間,通過多模態特征判斷視聽流之間的對應關系。上述方法通過重復堆疊三維卷積塊來獲取較大的時間感受野,但存在參數量大、網絡時空復雜度大、容易過擬合等問題。同時因時空特征信息存在差異而無法提取細粒度空間特征。
針對過擬合問題,主要通過構建3D+2D卷積神經網絡結構的方法解決。首先通過一個大感受野的3D卷積抽取短時依賴,然后利用2D卷積獨立地對圖像特征建模,相當于用3D的形式代替了2D中多個連續幀的拼接。
受ResNet[36]啟發,Stafylakis等[33]提出基于3D CNN+ResNet的網絡架構,網絡輸入是灰度歸一化且持續時間為1 s的視頻序列,殘差網絡由34層(包括卷積層、池化層和全連接層)組成,這些層逐漸減少具有最大池化層的空間維數,直到每個時間步輸出一維矢量為止。然后,這些一維矢量用作兩個雙向LSTM(Bi-LSTM)[37](每個方向兩個)的輸入特征,在每個時間步將它們串聯起來進行分類。此后,Petridis等[38]在類似的前端結構上,使用Bi-GRU替代Bi-LSTM,并添加音頻流構建出第一個視聽融合模型,該模型能同時學習從圖像像素和音頻波形中提取到的特征。與逐層堆疊的3D CNN相比,將2D CNN和3D CNN聚集在一起,不僅可以增強模型學習視覺特征的能力,而且大大降低了時空融合的復雜性。此外,為進一步減少模型參數量,提出改進的3DDensNet模型[39],使用1×1×1卷積的稠密塊和變形塊起特征壓縮的作用。
針對視頻信號的時空特征存在差異的問題,Wiriyathammabhum等[40]提出SpotFast網 絡。SpotFast是動作識別網絡SlowFast的變種,它利用一個時間窗口作為定點路徑使用詞的邊界信息,將所有幀作為快速路徑隱含著其他語境的建模。這兩條路徑都與雙時空卷積融合,在減小時空特征差異的同時加快訓練速度,再結合記憶增強的橫向轉化器學習用于分類的順序特征。
3D CNN采用三維卷積同時捕獲時空信息,且能同時處理多個輸入幀,提升了算法的運行速度。目前,基于3D CNN方法的識別精度已遠超2D CNN方法。但3D CNN的一個缺點是需要算力強大的硬件,因而需要較高的計算和存儲開銷。目前常利用由2D和3D卷積層混合而成的3D+2D卷積神經網絡的方法進行解決。表1列出了孤立唇語識別主要的深度學習方法。

表1 孤立唇語識別的深度學習方法Table 1 Isolated lip recognition techniques based on deep learning and representative work
連續唇語識別的輸入輸出之間是多對多關系,相較于孤立唇語識別,需要建立更為可靠的長期時序依賴。根據主干網絡的特點將連續唇語識別方法分為基于聯結時序主義分類模型和基于注意力機制的編解碼模型。
相較于孤立唇語識別,連續唇語識別更為復雜,對時序性要求更強。采用聯結時序主義分類(Connectionist Temporal Classification,CTC)[53]能更好地對唇語長時序序列進行文本標簽對齊。Assael等[54]基于CTC損失提出第一個連續唇語識別網絡LipNet,在GRID數據集上對LipNet進行評測,在重疊和未觀察到的說話人條件下,單詞錯誤率[55]分別達到4.8%和11.4%。類似地,漢語句子識別的LipCH-Net[56]架構也被提出。上述架構在最小識別單元為字符的小規模連續唇語識別中取得了不錯性能。針對數據集中可識別詞匯量小的問題,Shillingford等[57]建立了現有規模最大的視覺語音數據集LSVSR,并首次提出最小識別單元為音素的V2P模型。其結構如圖2所示。V2P使用CTC損失進行訓練,其前端由3D卷積模塊組成,用于從視頻片段提取時空特征。后端通過時間模塊聚合這些特征,輸出目標音素序列。在測試階段,使用基于有限狀態轉換器(FSTs)的譯碼器產生給定音素分布序列對應的單詞序列。V2P和LipNet在LSVSR數據集上分別實現了59.1%和27.3%的單詞識別率。

圖2 V2P框架Fig.2 V2P framework diagram
基于CTC損失的連續唇語識別方法,通過長時序列的文本標簽對齊,解決說話速度不同導致的輸入序列和輸出序列的長度上不相等問題。由于網絡輸出有條件相互獨立的假設,CTC損失更多地關注鄰近幀的局部信息[58],而不是所有幀的全局信息,因此需要外部語言模型才能獲得良好性能(如V2P中需采用N-gram有限狀態轉換器轉換成單詞序列)。同時,CTC損失需要滿足輸入序列必須比輸出序列長的約束,因此它不適合進行可變長的連續唇語標簽預測。
與基于CTC的模型不同,編解碼模型允許外部語言模型作為解碼器的一部分被隱性學習,這將連續唇語識別中可訓練的數據從對齊數據擴展到純文本數據,有利于提升模型的泛化能力。在此基礎上引入注意力機制[59]計算解碼器的隱藏狀態來從給定的幀序列中提取鑒別性特征,同時忽略多余的背景信息。有助于解碼器在不同時間步長下對編碼器的輸出引起注意,從而更好地處理可變長的連續唇語識別任務。
其中最具代表性的工作是Chung等[42]提出的由Watch、Listen、Attend和Spell模塊組成的WLAS網絡,其中Watch、Listen模塊為視頻和語音模塊編碼。Spell模塊為解碼模塊,Attend模塊根據作用于視頻和語音的注意力機制計算每個時間步的上下文向量。為進一步提升模型的泛化能力,將這項工作擴展到多視圖數據并提出改進的MV-WAS網絡[60],分別在側面視圖和正面視圖實現了62.8%和56.4%的單詞錯誤率。此后,研究者們通過使用基于注意力機制的方法消除條件獨立性假設,獲得了比CTC更好的性能。本文總結不同類型注意力機制在唇語識別中的應用,如表2所示。

表2 唇語識別中不同類型注意力機制對比表Table 2 Comparison of different types of attention mechanisms in lip recognition
基于注意力機制的編解碼模型在可變長連續唇語識別任務中取得了不錯的效果,但使用遞歸神經網絡堆疊編解碼器的過程中會產生兩個問題:(1)RNN中的“teacher-forcing”策略[61]導致的暴露偏差。(2)判別性優化目標(通常是交叉熵損失)和單詞錯誤率之間的不一致。為解決這兩個問題,Luo等[62]提出基于偽卷積策略梯度(PCPG)模型:一方面引入單詞錯誤率評價指標作為獎勵形式,與原始判別目標一起優化模型;另一方面受卷積運算的局部感知特性啟發,在獎勵和損失維度上進行偽卷積運算,從而將每個時間步周圍的更多背景考慮在內,為整個優化過程生成一個穩健的獎勵和損失。該方法雖能一定程度上解決RNN堆疊帶來的問題,但無法突破RNN自身結構限制導致的模型無法快速收斂和并行訓練問題。基于此,研究者們徹底摒棄RNN,提出基于多頭自注意力機制的編解碼框架Transformer[60],它能在不同子空間表示中學習唇部運動相關信息,進一步提高全局上下文特征的提取能力。根據采用的損失函數不同,將其分為TM-seq2seq和TM-CTC。其中,TM-seq2seq采用隱馬爾可夫模型[63]進行解碼的第二階段,單獨的注意力頭被用于關注嵌入的視頻和音頻。
在每個解碼器層中,所產生的視頻和音頻上下文信息在信道維度上連接并傳播到前饋塊。而TM-CTC先采用CTC預測逐幀標簽,然后在逐幀預測和輸出序列之間尋找最佳對齊方式。TM-CTC模型將視頻和音頻編碼連接起來,通過一組自注意/前饋模塊傳播結果,網絡的輸出是每個輸入幀的CTC后驗概率,并且整個堆棧都用CTC損失訓練。其缺點是模型假定輸入和輸出序列之間是單向排序的。Afouras等[60]比較了這兩種變體的性能,在VSR識別模式下,TM-Seq2Seq性能更優,TM-CTC模型對于環境噪聲的魯棒性更強。
CTC假設個體特征具有條件獨立性,而基于注意力的模型可以提供非順序對齊。為強制單調對齊,同時擺脫條件獨立性假設。2018年,首次提出將CTC損失與基于注意力的模型相結合的混合架構[75]。該架構的編碼器使用一組雙向長短時記憶網絡將輸入流轉換為按幀計算的隱藏特征表示。這些特征通過一個包含遞歸神經網絡語言模型(RNN-LM)、注意力機制和CTC的聯合解碼器來輸出標簽序列,在LRS2數據集上實現7%的單詞錯誤率。同年Xu等[58]提出LCANet,將編碼的時空特征輸入到級聯注意力CTC解碼器,從而捕獲更長的上下文信息。引入注意力機制使CTC損失中的條件獨立性假設的約束變弱,對視覺相似的視素單元做出更好預測,在提高連續唇語識別精度的同時,提升了收斂速度。該模型在GRID數據集上獲得了97.1%的識別準確率。表3列出了主要連續唇語識別的深度學習方法。

表3 連續唇語識別的深度學習方法Table 3 Continuous lip recognition techniques based on deep learning and representative work
目前,由神經網絡實現的端到端唇語識別架構已達到比傳統方法更高的性能[81-82]。陸續發布的大規模唇語識別數據集為研究者們在通用大規模數據集上評估其方法創造了條件。大量訓練樣本和具有挑戰性的測試集使唇語識別的深度學習方法的訓練和可靠結論的得出成為可能。唇語識別系統的識別性能不僅取決于模型表現,而且受許多其他因素(如預處理方法)直接影響,即使對同樣的數據集采用相同的方法,是否有外部語言模型、是否存在說話者依賴、是否有音頻信號也會影響識別效果。唇語識別中常關注的實驗條件有:
(1)外部語言模型[78],在解碼過程中整合外部語言模型,實際是對文本輸出的后處理優化過程。
(2)說話者依賴[83],是指測試集中的說話人同時也出現在訓練集中,在這種條件下訓練出的模型容易出現對于說話者的過擬合。
(3)音頻信號,多數唇語識別深度學習方法在訓練階段不會使用音頻信息,但部分方法會不同程度地利用音頻信息訓練音視頻共享特征表示。
字母數字識別的全面評估見參考文獻[84],本文評估單詞、短語、句子三種不同識別任務中。本文選取常用的單詞數據集LRW[29]與LRW-1000[39]、短語數據集GRID[85]和句子數據集LRS2-BBC[42]與LRS3-TED[86]對唇語識別的深度學習方法進行比較,結果如表4所示。
由表4可以看出:(1)孤立唇語識別主要在前端結構的初始層使用三維卷積來提高性能。算法性能與前端CNN的深度息息相關,ResNet-18平衡了模型深度與識別精度,顯示出積極的影響。此外多數方法采用遞歸架構,如雙向LSTM和雙向GRU或近期使用較多的TCNs對后端序列進行編碼。滿足上述條件的基線模型識別準確率可達82%~83%,但要進一步提高性能需要采取不同的前端策略。例如,對訓練圖像進行數據增強以生成任意姿勢的合成面部數據,使系統能夠很好地泛化。通過設計專門的訓練策略,在LRW和LRW-1000上,孤立唇語識別的最高識別準確率分別達到88.40%和55.70%。

表4 不同數據集下代表性方法對比Table 4 Comparison of representative methods under different datasets
(2)連續唇語識別在GRID數據集上的單詞錯誤率已低至2.9%,表明深度學習方法在面向小規模受限實驗環境下的連續唇讀識別能力幾乎飽和。這催生了非受限環境下大規模數據集的構建,相比之前在受限實驗室環境下收集的數據集來說,其識別難度有很大的提升,如在LRS2-BBC數據集上連續唇語識別的單詞錯誤率高達48.3%,表明基于深度學習的方法對于連續唇語識別任務的性能十分有限。表5從算法優點、局限性和適用范圍3個方面對孤立唇語識別的深度學習方法和連續唇語識別的深度學習方法進行了總結和比較。

表5 唇語識別深度學習方法對比表Table 5 Comparison table of deep learning methods for lip recognition
基于深度學習的唇語識別雖已取得重大進展,但在以下方面仍存在許多問題。
(1)視覺歧義:首先在發音的過程中,有一些不同的音素具有相同的口型。如,英語中的輔音音素/d/和/t/在視覺上是不可區分的。其次相同單詞在不同語言環境下發音不同。目前在沒有具體語境的情況下,很難區分視覺歧義。研究人員主要使用不同的音素映射[94-95]和相鄰字符或詞來解決視覺歧義問題。
(2)姿態變化:在現實中,人們在說話的過程中可能伴隨著頭部的轉動。這種變化導致唇部角度的變化。由于不同說話人的姿態不同,有不同的角度樣本。從這些樣本中很難提取到與語音內容相聯系的特征。在現實場景下,極難在說話過程中獲取到多視角的唇部運動數據。目前對此仍少有針對性的解決方法。主要通過建立多視圖的視覺語音數據集,獲取更多視角來解決唇語識別中說話者姿態變化引起的面部角度問題。
(3)說話者依賴:在一些數據集中,說話者數目非常少,而在實際應用中往往需要識別未知說話者。不同人的說話習慣存在差異,唇語識別就是要從唇部圖像中提取特征。這些特征往往含有說話者的信息,而與說話內容無關。因此,如何在唇部圖片中提取與說話人無關的信息也是一個關鍵問題。
(4)多模態識別:單模態方法提取唇部視頻幀的視覺特征信息是有限的,從多模態方向入手,采用音頻、圖像差分圖、變形流等作為輔助輸入處理唇語識別任務,提取不同維度的有效信息是該領域的一個重要研究方向。
(5)大規模唇語數據集:一些早期數據集在數量、樣本和背景方面是單調的,這極大地限制了唇語識別的發展。近年來,越來越多的大規模視覺語音數據集出現,例如LRW、LRS和LSVSR。在說話者數量和說話內容方面更加豐富,但這些數據集仍然存在詞匯量較小、采集場景與姿勢受限等問題。唇語識別亟需構建包含多個說話者和不同姿勢背景的大規模數據集,尤其針對中文的這對唇語識別技術的發展起著重要作用。
(6)多語種混合識別:多語種識別中存在的困難:嵌入語言受主體語言影響形成的非母語視素現象嚴重,不同語言視素構成之間的差異給混合視素建模帶來巨大困難,帶標注的混合視素訓練數據極其稀缺。可以通過引入“混合詞典構建”“混合視素模型自適應”算法,解決口型差異帶來的協同視素和視素差異等問題。
結合唇語識別的現狀和深度學習的發展方向,其深度學習方法的未來發展趨勢主要為:小樣本學習、輕量化模型。
(1)小樣本學習:大多數基于深度學習的連續唇語識別方法需要大量的訓練樣本才能收斂。然而,現實的唇語識別任務往往應用于特定場景,無法提供足夠的訓練樣本,訓練樣本的缺少會導致深度學習模型欠擬合。在未來的研究中,可以利用多模態信息來緩解小樣本學習中標注數據少的問題,例如增加深度圖信息。同時,可以在特征層面進行數據增強,來提升模型的魯棒性。
(2)輕量化模型:設計輕量化唇語識別模型,使其可以部署到移動終端或便攜式設備。由于現有的唇語識別模型具有參數多、時間復雜度高等特點,既不能滿足實時性和高效性的要求,也不能部署于移動終端或便攜式設備。可借助蒸餾、剪枝、自動模型壓縮等方法,設計更加輕量化的識別網絡,推動唇語識別應用于更多場景。