梅家俊,王衛(wèi)民,戴興雨
(江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,鎮(zhèn)江 212100)
手語識別技術(shù)其實(shí)是利用計(jì)算機(jī)等智能設(shè)備,將手語動(dòng)作轉(zhuǎn)換為能夠與其他社會群體交流的信息[1].目前中國手語大約有5 500 多個(gè)常用詞匯[2].然而真正理解手語含義的人卻數(shù)量極少,大部分非聾啞人對手語基本上一無所知,并且也很少有人愿意去花時(shí)間和精力去學(xué)習(xí)手語這項(xiàng)技能,這也是聾啞人群體與其他社會群體之間產(chǎn)生溝通障礙的原因之一.因此,研究手語識別技術(shù)不僅能使聾啞人更好地適應(yīng)社會環(huán)境,還可以促進(jìn)人機(jī)交互的發(fā)展,為用戶提供更好的人機(jī)交互體驗(yàn)[3].
本文將隱馬爾可夫模型和深度學(xué)習(xí)結(jié)合起來,其中由于深度學(xué)習(xí)具有很好的遷移能力,故而將深度學(xué)習(xí)用于手語詞匯的特征提取以及候選詞匯的選擇,而隱馬爾可夫模型可以將現(xiàn)有的語言學(xué)的模型應(yīng)用到手語的識別中,并且二階隱馬爾可夫模型可以更好地運(yùn)用經(jīng)驗(yàn)知識來輔助識別[4].
根據(jù)識別手語的方法上劃分,可以將手語識別分為四類,分別為:基于體感設(shè)備的手語識別、基于穿戴式設(shè)備的手語識別、基于傳統(tǒng)機(jī)器學(xué)習(xí)的手語識別,以及基于深度學(xué)習(xí)的手語識別.
基于體感設(shè)備的手語識別就是采用體感設(shè)備Kinect來進(jìn)行手語的識別.如2019年,千承輝等[5]借助Kinect得到人體的深度圖像以及骨骼特征信息提取出手部特征,實(shí)現(xiàn)動(dòng)態(tài)的手語識別,準(zhǔn)確率可達(dá)95%,2020年,陳德寧等[6]運(yùn)用Kinect 設(shè)備提取到人體的骨骼信息,對手語進(jìn)行分類和識別.
基于穿戴式設(shè)備的手語識別,即通過運(yùn)用數(shù)據(jù)手套以及位置跟蹤器獲取手勢的實(shí)時(shí)變化信息,如Oz等[7]使用CyberGlove 數(shù)據(jù)手套以及位置跟蹤器對300個(gè)美國手語單詞進(jìn)行識別,得到了90%的識別準(zhǔn)確率.
基于機(jī)器學(xué)習(xí)的手語識別,就是使用傳統(tǒng)的機(jī)器學(xué)習(xí)算法,如隱馬爾可夫模型[8],支持向量機(jī)等[9].2019年,蔣賢維等[10]使用精度高斯支持向量機(jī)(FGSVM)對中國手語手指語圖像樣本進(jìn)行實(shí)驗(yàn),最終分類達(dá)到92.7%的識別率,2020年,包嘉欣等[11]使用綜合多要素的手語膚色分割與改進(jìn)VGG 網(wǎng)絡(luò)的手語識別方法,得到了對手語圖像97%以上的平均識別率.
深度學(xué)習(xí)方法的出現(xiàn),使手語識別迎來了新的機(jī)遇.例如2018年,梁智杰等[12]運(yùn)用三維卷積神經(jīng)網(wǎng)絡(luò),提取出視頻的短時(shí)特征,并運(yùn)用雙向LSTM 輸入到殘差網(wǎng)絡(luò)中,最終得到了很好的性能表現(xiàn).
然而,無論在國內(nèi)還是國外,都很難在市場上看到成熟的手語識別設(shè)備,主要原因是基于體感設(shè)備的手語識別,雖然識別準(zhǔn)確率很高,但體感設(shè)備Kinect價(jià)格昂貴且體積較大,對于非室內(nèi)的手語識別環(huán)境不是很方便;而基于穿戴式設(shè)備的手語識別方式,雖然數(shù)據(jù)手套準(zhǔn)確率高,但手套設(shè)備昂貴,且不易操作,不便于攜帶,很難普及和推廣;基于機(jī)器學(xué)習(xí)的手語識別,雖然不需要配套的設(shè)備,但整體的識別率比使用相關(guān)設(shè)備的識別方法低;而基于深度學(xué)習(xí)的手語識別,在訓(xùn)練量較少的時(shí)候效果并不佳,只有在有大量數(shù)據(jù)的情況下,深度學(xué)習(xí)方法才可以得到一個(gè)較好的識別準(zhǔn)確率.
手語識別是將一段完整的手語視頻轉(zhuǎn)換為中文語義的過程[13].手語識別主要是由語料庫和手語詞匯視頻庫的建設(shè)、滑動(dòng)窗口的切分及手語視頻識別等技術(shù)組成.
連續(xù)手語識別的系統(tǒng)運(yùn)算流程如圖1所示.
圖1 系統(tǒng)流程圖
中文語料集以及手語詞匯視頻庫的建設(shè)是手語識別中最基本也是最重要的環(huán)節(jié).通過收集大量的中文文本建立語料集,再通過各種渠道,大量收集手語詞匯的視頻,其中包括人、衣物、食品、生活用品、生活、工作、社會活動(dòng)、哲學(xué)、倫理、心理、行為、事物的狀態(tài)、性質(zhì)、特點(diǎn)、民族、宗教、歷史、政治、法律、國防外交、經(jīng)濟(jì)、文化教育、時(shí)間、空間、數(shù)學(xué)、物理、化學(xué)、信息學(xué)、生物等共54 大類共5 586個(gè)手語詞匯[14].把收集到的視頻按各自表達(dá)的意思進(jìn)行分類,構(gòu)建完整的手語詞匯視頻庫[15].
由于手語語句是由多個(gè)手語詞匯組合而成,因此需要把手語視頻進(jìn)行切分,分割成多個(gè)長度較短的視頻,使每個(gè)視頻能夠代表一個(gè)詞匯[16].因此采用滑動(dòng)窗口對手語視頻進(jìn)行切分,根據(jù)窗口大小Size以及滑動(dòng)步數(shù)Step,將原視頻V切分成多個(gè)相互重疊的視頻片段V1,V2,…,Vm,其中m是切分后的視頻個(gè)數(shù).
2.3.1 初始化HMM2
初始化隱馬爾可夫模型的3 個(gè)參數(shù)矩陣:初始狀態(tài)矩陣,轉(zhuǎn)移狀態(tài)矩陣和發(fā)射矩陣,以及兩個(gè)序列:狀態(tài)序列和觀測序列.狀態(tài)序列s=W1,W2,…,Wn,其中n表示手語詞匯個(gè)數(shù),Wi表示第i個(gè)手語詞匯,觀測序列V=V1,V2,…,Vm,其中Vi表示切分出的第i個(gè)視頻.主要計(jì)算過程如下所示.
(1)文章分句
輸入L篇文章,對L篇文章進(jìn)行如下處理:使用標(biāo)點(diǎn)符號“?.!”進(jìn)行分句處理,設(shè)分句后的結(jié)果為S1,S2,S3,…,Sy,其中y為L篇文章的句子總個(gè)數(shù),Si為L篇文章的第i個(gè)句子.
(2)計(jì)算初始狀態(tài)矩陣
計(jì)算所有字在句首出現(xiàn)的頻次,設(shè)字序列為C1,C2,…,Cx,對應(yīng)的頻次序列為Count(C1),Count(C2),…,Count(Cx),其中Ci表示第i個(gè)字,Count(Ci)為字Ci出現(xiàn)的頻次,于是有:
由此得到了初始狀態(tài)矩陣:
(3)句子分字
對所有的句子進(jìn)行頻次統(tǒng)計(jì):把y個(gè)句子中相應(yīng)的C1,C2,…,Cx替換為C1,C2,…,Cx的下標(biāo)1,2,…,x.去除其他非1,2,…,x的詞匯,再把下標(biāo)1,2,…,x替換回相對應(yīng)的字,由此就得到了分字的結(jié)果.
(4)計(jì)算一階轉(zhuǎn)移矩陣
首先統(tǒng)計(jì)出Ci的頻次Count(Ci)以及CiCj的頻次Count(CiCj),其中Count(CiCj)表示為字Ci后出現(xiàn)Cj的概率.再計(jì)算出每個(gè)字后出現(xiàn)所有字的頻次總和,記為O1,O2,…,Ox,其中Oi表示Ci后出現(xiàn)每個(gè)Cj的頻次總和.
其中,P(Cj|Ci)表示為Ci到Cj的轉(zhuǎn)移概率,得到了一階轉(zhuǎn)移狀態(tài)矩陣:
(5)計(jì)算二階轉(zhuǎn)移矩陣
統(tǒng)計(jì)出CiCjCk的頻次,記為Count(CiCjCk),其中Count(CiCjCk)表示為CiCj后出現(xiàn)Ck的概率.再計(jì)算每兩個(gè)字后出現(xiàn)所有字的頻次總和,記為Z11,Z12,…,Zxx,其中Zij表示CiCj后出現(xiàn)每個(gè)Ck的頻次總和.于是有:
其中,P(Ck|CiCj)表示CiCj到Ck的轉(zhuǎn)移概率,由此得到了二階轉(zhuǎn)移狀態(tài)矩陣:
(6)三維卷積模型
每個(gè)手語詞匯W1,W2,…,Wn都包含k個(gè)視頻,將這些視頻分別記為d11,d12,…,dnk,其中dij表示為第i個(gè)手語詞匯的第j個(gè)視頻.將所有的手語詞匯視頻進(jìn)行訓(xùn)練,最終得到一個(gè)三維卷積模型.卷積結(jié)構(gòu)如圖2所示.
圖2 三維卷積網(wǎng)絡(luò)結(jié)構(gòu)
(7)計(jì)算發(fā)射矩陣
將切分之后得到的m個(gè)視頻V1,V2,…,Vm,利用訓(xùn)練好的三維卷積模型進(jìn)行手語詞匯識別,其中第i個(gè)切分視頻的描述內(nèi)容為第j個(gè)手語詞匯的概率記為P(Wij).對每個(gè)切分視頻按照概率大小P(Wij)進(jìn)行排序,保留排好序的前5 個(gè)P(Wij),其余P(Wij)賦值為0.將每個(gè)手語詞匯對m個(gè)切分的視頻所得的值求和得到h1,h2,…,hn.于是有:
對所有P(Wij)中的非數(shù)值型的結(jié)果賦值為無窮小,由此得到了發(fā)射矩陣:
2.3.2 計(jì)算最佳路徑
運(yùn)用Viterbi 算法計(jì)算HMM2 的最佳路徑,主要過程如下所示:
給定一個(gè)觀察序列O=V1,V2,…,Vm和HMM2 模型λ=( π,A1,A2,B),并選擇一個(gè)狀態(tài)序列S=W1,W2,…,Wn,其中Vi表示第i個(gè)切分的視頻,Wi表示狀態(tài)序列中的第i個(gè)詞匯:
(1)首先計(jì)算狀態(tài)序列中的所有詞匯作為句首的概率P(Wi),從發(fā)射矩陣B中找出當(dāng)觀察值為V1時(shí),相對應(yīng)詞匯的概率值B(Wi|O=V1),得到Viterbi 算法中觀測值為V1的結(jié)果:
(2)接著計(jì)算當(dāng)觀測到V1的狀態(tài)值為Wi時(shí),觀測到V2的狀態(tài)值為Wj的概率P(Wj|Wi),從發(fā)射矩陣B中找出當(dāng)觀察值為V2時(shí),相對應(yīng)詞匯的概率值B(Wj|O=V2),則得到Viterbi 算法中觀測值為V2的結(jié)果:
(3)觀測值為Vt時(shí),其中2≤t≤m,計(jì)算出當(dāng)t-1 時(shí)刻觀測值為Wj并且t-2 時(shí)刻觀測值為Wi時(shí),觀測到Wk的概率P(Wk|WiWj),從發(fā)射矩陣B中找出當(dāng)觀察值為Vt時(shí),相對應(yīng)詞匯的概率值B(Wj|O=Vt),則得到Viterbi算法中觀測值為Vt的結(jié)果:
(4)求取最佳序列狀態(tài):找出P(WiWjWk|O=Vm)的最大值,并記錄下相對應(yīng)的Wi,Wj,Wk,通過Wi,Wj依次找出前一個(gè)觀測時(shí)刻的Wi,最終得到一條概率最大的路徑,即識別出的最終結(jié)果.
為了驗(yàn)證該系統(tǒng)的可行性,本次實(shí)驗(yàn)從新浪、搜狐上爬取50 篇新聞文章構(gòu)成語料集,并獲取中國科學(xué)技術(shù)大學(xué)視覺手語研究小組(VSLRG)發(fā)布的中國孤立手語詞數(shù)據(jù)集作為手語視頻庫,該數(shù)據(jù)集由50 個(gè)唯一的參與者執(zhí)行,每個(gè)參與者對每個(gè)類別進(jìn)行5 次.數(shù)據(jù)集包含500 個(gè)不同的類別,例如:身體、頭部、頭發(fā)、女士、妹妹、杯子、燈光等.并且每個(gè)類別具有250 個(gè)實(shí)例,共計(jì)125 000 個(gè)手語詞匯視頻,對于125 000個(gè)手語詞匯視頻,按照9 比1 的比例,隨機(jī)劃分卷積模型的訓(xùn)練集和測試集,訓(xùn)練集共112 500 個(gè)詞匯視頻,測試集共12 500 個(gè)詞匯視頻.再獲取VSLRG 發(fā)布的中國連續(xù)手語數(shù)據(jù)集,該數(shù)據(jù)集包括100 種不同含義的句子,從每種句子中隨機(jī)挑選5 個(gè)視頻,共500 個(gè)連續(xù)手語視頻作為手語識別的測試集.其中圖3 為連續(xù)手語數(shù)據(jù)集中的一個(gè)視頻的關(guān)鍵幀,圖4 為孤立手語詞數(shù)據(jù)集的一個(gè)詞匯視頻的關(guān)鍵幀.
圖3 “他的同學(xué)是警察”的關(guān)鍵幀
圖4 手語詞匯“外祖父”的關(guān)鍵幀
首先給定一個(gè)前提:測試集中的每一個(gè)連續(xù)手語視頻中,表示手語的速度與手語詞匯視頻中,某個(gè)人表示手語的速度是相似的.
每個(gè)手語詞匯W1,W2,…,Wn都包含k個(gè)視頻,將這些視頻分別記為d11,d12,…,dnk,其中dij表示第i個(gè)手語詞匯的第j個(gè)視頻,并且每一個(gè)手語詞匯視頻都有不同長度的幀數(shù),記為F11,F12,…,Fnk,其中Fij表示為第i個(gè)手語詞匯的第j個(gè)視頻的幀數(shù),把所有視頻的幀數(shù)統(tǒng)計(jì)出來,如表1所示.
表1 詞匯視頻幀數(shù)統(tǒng)計(jì)
由于最長詞匯視頻幀數(shù)過大,測試集中部分連續(xù)手語視頻達(dá)不到此幀數(shù),因此統(tǒng)計(jì)100 幀以下的視頻占比,如表2所示.
表2 100 幀以下詞匯視頻總數(shù)占比
共有97.51%的視頻處于一百幀以內(nèi),并且對于連續(xù)視頻而言,切分的窗口過大,反而會產(chǎn)生不必要的誤差.于是,設(shè)置計(jì)算過程中詞匯視頻幀數(shù)為100,大于100 幀的詞匯視頻取前100 幀計(jì)算,小于100 幀的詞匯視頻補(bǔ)零補(bǔ)到100 幀.將處理好的訓(xùn)練集進(jìn)行訓(xùn)練,共計(jì)訓(xùn)練1 000 輪.
為驗(yàn)證算法的識別性能,將通過與其他算法,如余弦相似度[17]和二維卷積模型[18],進(jìn)行對比Top-1 及Top-5 的準(zhǔn)確率.
其中網(wǎng)絡(luò)模型如圖1所示,訓(xùn)練中設(shè)置批量大小batch_size 為64,使用Adam 優(yōu)化器,根據(jù)訓(xùn)練的效果,依次調(diào)整初始學(xué)習(xí)率為1×10-4,1×10-6,1×10-8,其他參數(shù)保持不變,并設(shè)置訓(xùn)練迭代次數(shù)epochs 為1 000.實(shí)驗(yàn)結(jié)果如表3所示.
表3 不同算法的識別效果(%)
對測試集中每一個(gè)連續(xù)手語視頻,進(jìn)行如下處理:
以當(dāng)前連續(xù)手語視頻的前100 幀作為第一個(gè)手語短視頻,利用訓(xùn)練好的三維卷積模型進(jìn)行手語詞匯識別,找出其中概率最大的五個(gè)手語詞匯,按照這5 個(gè)手語詞匯的概率比例,與每個(gè)手語詞匯中250 個(gè)詞匯視頻幀數(shù)的平均值進(jìn)行計(jì)算,得到滑動(dòng)的幀數(shù)并進(jìn)行滑動(dòng),得到第二個(gè)手語短視頻.第二個(gè)短視頻也進(jìn)行詞匯識別,同樣以概率最大的5 個(gè)手語詞匯計(jì)算出第二次滑動(dòng)的幀數(shù).直至滑動(dòng)得到的手語短視頻的幀數(shù)小于100 幀后滑動(dòng)結(jié)束.
由此得到了當(dāng)前連續(xù)手語視頻的發(fā)射矩陣,并根據(jù)語料集得到初始狀態(tài)矩陣,一階轉(zhuǎn)移矩陣以及二階轉(zhuǎn)移矩陣.最終通過Viterbi 算法進(jìn)行識別,結(jié)果如表4所示.
表4 識別效果
表5 為本文算法HMM2 與傳統(tǒng)一階隱馬爾可夫HMM1 的對比情況.
表5 手語視頻識別精度
本文采用了二階隱馬爾可夫模型與深度學(xué)習(xí)相結(jié)合的方式,其中深度學(xué)習(xí)用于詞匯的特征提取以及候選詞匯的選擇,極大地縮小了候選詞匯的范圍,而二階隱馬爾可夫能夠更好地運(yùn)用經(jīng)驗(yàn)知識來輔助識別,通過結(jié)合深度學(xué)習(xí)得到的候選詞匯,形成連續(xù)手語視頻的句義.在連續(xù)手語數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果表明,本文算法的Top-5 識別精度為94.7%,比二維卷積模型提高5.3%;二階隱馬爾可夫模型對于連續(xù)語句的識別精度為88.6%,比一階隱馬爾可夫提高6.8%,具有更好的識別精度.