周 舟,韓 芳,王直杰
東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海201620
在聾校語言教學(xué)中,雙語教學(xué)模式能有效提高聾童的語言學(xué)習(xí)效率,對于特殊教師們來說則需花費更多的耐心、時間和精力。面臨著我國特殊教育學(xué)校的師資普遍薄弱的現(xiàn)狀,手語識別技術(shù)便可幫助特教完成教學(xué)任務(wù)——聾童將手語錄成視頻輸入計算機,進而能夠?qū)W習(xí)輸出的漢字和唇語,無需老師親自教學(xué)就能完成漢語書面語的學(xué)習(xí)。另外,計算機只對標準的手語(以《中國手語》為標準)進行識別,借此還可糾正聾童手語方言化的問題。
目前手語識別方法大體分為兩種:一是基于傳統(tǒng)圖像特征和機器學(xué)習(xí)的方法[1-2]:如首先利用傳統(tǒng)的圖像分割算法從手語視頻的視頻幀中分割出手部,再通過機器學(xué)習(xí)的方法(如SVM、Adaboost 算法)根據(jù)分割區(qū)域的圖像特征(如HOG、SIFT特征)進行特征分類[3]。但由于這些特征的表征能力有限,難以從復(fù)雜內(nèi)容中提取到具有代表性的語義信息,而且分步完成的手勢識別實時性差。二是基于深度學(xué)習(xí)的方法[4]:如利用目標檢測神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)視頻幀的特征,對手部進行定位并同時進行手勢分類。相比傳統(tǒng)圖像處理和機器學(xué)習(xí)算法,基于深度學(xué)習(xí)的目標檢測網(wǎng)絡(luò)往往能得到更高的準確率和識別速度[5],其代表有Faster R-CNN[6],以及后來推出的Onestage目標檢測方法,如YOLO[7]、SSD[8],能進行端到端檢測,具有更好的實時性,因此成為動態(tài)目標檢測的主流方法。
本文提出的手語識別算法利用深度學(xué)習(xí)中的目標檢測網(wǎng)絡(luò)SSD,相比基于圖像特征和機器學(xué)習(xí)的大部分手語識別方法更簡單,能同時完成手語視頻中每個視頻幀中的手部檢測和手勢分類。目前,大部分研究僅利用SSD 進行手部定位[9],或沒有針對手勢識別任務(wù)改進SSD[10],因而在檢測小目標時仍存在漏檢、誤檢等情況。本文對SSD網(wǎng)絡(luò)進行網(wǎng)絡(luò)結(jié)構(gòu)、損失函數(shù)和訓(xùn)練方法上的改進,實驗表明,本文算法在手語識別的任務(wù)上取得了更好的效果。
SSD 網(wǎng)絡(luò)是目前主流的目標檢測網(wǎng)絡(luò)之一。其網(wǎng)絡(luò)結(jié)構(gòu)大致如圖1所示,輸入是尺寸為300×300的圖像,其基礎(chǔ)網(wǎng)絡(luò)是VGG16 網(wǎng)絡(luò),分別在基礎(chǔ)網(wǎng)絡(luò)中的6 個特征層(Conv4_3、Fc7、Conv6_2、Conv7_2、Conv8_2、Conv9_2)上預(yù)測目標,每個特征層都負責(zé)在該層的每個預(yù)選框下檢測特定尺寸的目標。為了檢測大型物體并增加感受野,在原始基礎(chǔ)網(wǎng)絡(luò)上增加了額外的卷積特征層。SSD將整幅圖像分割成網(wǎng)格單元,并在每個網(wǎng)格單元中,生成一組具有多個尺度和縱橫比的默認框,每個邊界框都對應(yīng)4 個反映其尺寸的值進行回歸、C(類別數(shù))+1個分類概率進行分類,再經(jīng)過非極大值抑制刪除一部分重疊或者不正確的邊界框,生成最終的邊界框集合。整個網(wǎng)絡(luò)通過端對端的訓(xùn)練方案在所有預(yù)測圖上用定位損失和分類損失的加權(quán)進行優(yōu)化,最終的預(yù)測是通過合并來自不同特征層的所有檢測結(jié)果來實現(xiàn)的。
SSD損失函數(shù)分為兩部分:用于默認框位置回歸的損失函數(shù)Lloc和置信度損失函數(shù)Lconf。位置回歸損失Lloc為預(yù)選框l和真實邊界框g的SmoothL1損失函數(shù)回歸的參數(shù)是默認框d的中心偏移量,以及寬w、高h,見公式(1):
其中,N是與真實框相比滿足交并比閾值的默認框數(shù)量,參數(shù)α用于調(diào)整Lloc和Lconf之間的權(quán)重比例,默認α=1。
借助特征金字塔的思想,預(yù)選框的生成是SSD的亮點之一。6 個特征層產(chǎn)生的特征圖的大小分別為38×38、19×19、10×10、5×5、3×3、1×1。每個n×n大小的特征圖中有n×n個中心點,圍繞中心點產(chǎn)生一大一小的2個正方形框和2個或4個長方形框,其中,如果該層設(shè)置的長方形框的長寬比有一個(默認為2),則通過長寬互換產(chǎn)生2個長方形框;如果縱橫比有兩個:2和3,則產(chǎn)生4個長方形框。每個特征層的中心點對應(yīng)的默認框數(shù)量k分別為4、6、6、6、4、4。在每層空間位置上,對這些默認框進行位置回歸和置信度回歸。當(dāng)特征層尺寸越小,在該特征層上預(yù)選框中檢測到的目標越大。
這些框的尺寸根據(jù)一定規(guī)律進行計算,得到每層的特征圖上產(chǎn)生的默認框尺寸如表1所示,由于一只手的大小不可能超過整張圖片的一半,因此在Conv8_2、Conv9_2 上產(chǎn)生的默認框?qū)τ谑植繖z測的效果貢獻不大,本文中將Conv8_2 和Conv9_2 去掉,在保證準確率不變的情況下最大限度減少網(wǎng)絡(luò)的參數(shù),提高檢測速度。另外,淺特征層對手這種小目標的檢測能力更強,本文將Conv4_3中的k改為6,最終每層默認框尺寸如表1。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)圖
表1 每層的特征圖上對應(yīng)的默認框大小
SE-Net[11]通過對各通道之間依賴關(guān)系建模,以此對各通道特征進行重校準,選擇性增強特征表達能力更強的通道,其結(jié)構(gòu)如圖2。其中U為任意卷積層的輸出結(jié)構(gòu)體,在該卷積層后嵌入SE-Net模塊,計算各通道的權(quán)重,輸出相同尺寸和維度的結(jié)構(gòu)體。
圖2 SE-Net網(wǎng)絡(luò)結(jié)構(gòu)
SE-Net 模塊主要分成三步:用于全局信息嵌入的Squeeze部分、負責(zé)自適應(yīng)重新校準的Excitation部分和將權(quán)重融合進原特征層的Scale層。
(1)首先根據(jù)空間維度進行特征壓縮,將每個二維的特征通道變成一個實數(shù),這個實數(shù)則攜帶著全局的信息,并且輸出和輸入的維度相匹配。它表征著在特征通道上相應(yīng)的全局分布,而且使得靠近輸入的層也可以獲得全局信息,此部分的操作由全局平均池化操作完成,公式如下:
其中,uc表示U中第c個二維矩陣,下標c表示其中的通道。
(2)再采用門機制,利用參數(shù)W為每個特征通道生成對應(yīng)的權(quán)重,其中參數(shù)被學(xué)習(xí)用來顯式建立通道之間的相關(guān)性。為了限制模型復(fù)雜度和輔助泛化,此部分通過兩個全連接層完成:在第一個全連接層按縮放因子r(默認為16)減少通道數(shù)為激活函數(shù)為Relu;在第二個全連接層恢復(fù)通道數(shù)為C,經(jīng)過Sigmoid 激活后得到,其結(jié)構(gòu)為C×1×1,具體公式如下:
其中W1、W2分別為兩個卷積層的參數(shù),且和
圖3 改進的SSD網(wǎng)絡(luò)結(jié)構(gòu)
(3)此時s融合著各通道的特征圖信息,其中的每個數(shù)值都代表該通道的二維特征矩陣的權(quán)重,將其與原特征層U按通道相乘,通過加權(quán)的方式,完成在通道維度上的對原始特征的重標定。公式如下:
為了更好地加強有效的特征而抑制貢獻小的特征,將SE-Net嵌入剩下的4個特征層后,改進后網(wǎng)絡(luò)的結(jié)構(gòu)如圖3所示。為了加強分類能力,嵌入的位置是置信度計算分支上,即在圖3 中的全局平均池化(Global Pooling)層、兩個FC池化層和Scale層。
SSD檢測框中包含有檢測目標的框為正樣本,不包含則為負樣本。一幀圖像中檢測目標只有1~2個,而且占整張圖片的2%~5%,那么此時正樣本的數(shù)量遠遠小于負樣本,導(dǎo)致分類性能差。為了解決這一問題,本文將Lconf的交叉熵損失函數(shù)CE(pt)替換為焦點損失[12](Focal Loss)函數(shù)FL(pt),公式如下:
其中,pt為該類別分類正確的概率,且FL(pt)相比CE(pt)添加了兩部分的權(quán)重αt和(1-pt)γ,αt主要用來處理正負樣本不均衡問題,對于正樣本,則設(shè)置較小的權(quán)重αt;對于負樣本則使用稱為調(diào)制參數(shù),其中γ≥0,其作用則是將模型的注意力集中在難訓(xùn)練樣本(即難例),所謂難例就是pt更接近0的樣本,反之pt接近1,則說明該樣本屬于易分類樣本。如圖4 所示,橫軸為pt,縱軸為損失函數(shù)值。當(dāng)γ=0時,即為原始的交叉熵損失。通過調(diào)整γ,控制難易分類對總分類損失函數(shù)的貢獻。
圖4 在不同γ 下,損失函數(shù)值隨pt 變化曲線
圖5 本文數(shù)據(jù)集上mixup數(shù)據(jù)增強的效果圖(1、2、3分別為不同的手勢類別)
另外為了提升模型對檢測目標的分類能力,將式(1)中置信度損失與位置回歸損失的比例增大,即令參數(shù)α=0.8,使模型在學(xué)習(xí)時側(cè)重于分類損失。
為了使模型在復(fù)雜的環(huán)境下得到很好的檢測效果,往往可以采取數(shù)據(jù)增強的方法,通過從訓(xùn)練樣本鄰域中提取附加的虛擬樣本以擴充對訓(xùn)練分布的支持。本文使用的數(shù)據(jù)增強方法為mixup[13],原本用于減輕分類網(wǎng)絡(luò)中的對抗性干擾[14],其關(guān)鍵思想是以線性差值的方法構(gòu)建新的虛擬訓(xùn)練樣本和標簽。公式如下:
另外,為了加速模型訓(xùn)練收斂的速度,使模型輸出特征的分布更加穩(wěn)定,訓(xùn)練時,本文在SSD 中每個卷積層后都添加Batch Normalization(BN)[15]層,以批數(shù)量(batch_size)為單位。并在每個特征層后特征歸一化(Normalize)操作,即對每個像素點在通道上做L2 歸一化,先將數(shù)據(jù)統(tǒng)一映射到[ ]0,1 區(qū)間上,再把像素點上的值放大到一定倍數(shù),如20倍,加快基于梯度下降法或隨機梯度下降法模型的收斂速度,提升模型精度。例如在每一個特征層及其后的網(wǎng)絡(luò)結(jié)構(gòu)如圖6所示。
在手語視頻中,最少在3 幀之內(nèi)不會有超過2 幀包含有關(guān)鍵手勢的關(guān)鍵幀,因此在每個手語視頻中每隔3幀取出一幀進行SSD目標檢測,得到每幀圖片中所有檢測目標的類別,經(jīng)過相鄰重復(fù)關(guān)鍵幀的去重和無意義手勢的去除后,在已經(jīng)建立好的中國手語標準關(guān)鍵手勢模板數(shù)據(jù)庫中搜尋結(jié)果匹配的漢語詞匯,完成整個視頻的手語-漢語翻譯。在模板庫中手語“前途”的關(guān)鍵手勢類別名稱如表2所示。
圖6 每個特征圖及其后的網(wǎng)絡(luò)流程圖
表2 手語“前途”的模板
SSD的檢測類別(即手勢類別)除關(guān)鍵手勢外,還包含2 類非關(guān)鍵語義手勢:過渡不清晰手勢“background”(記作G)和無動作靜止手勢“static”(記作S),模板匹配具體流程見圖7,L1為“前途”第一個關(guān)鍵幀的左手關(guān)鍵手勢“1-qiantu-L1”的縮寫,以此類推L2和R2。
圖7 目標檢測結(jié)果與標準手語庫進行模板匹配
實驗數(shù)據(jù)來源于中科院SLR Dataset數(shù)據(jù)集中不同手語詞匯的彩色視頻,每個手語詞匯由50 個不同的手語者錄制,每個手語時長都不相同,平均時長為3~5 s,從每個視頻中隨機抽取視頻幀作為訓(xùn)練集,采集共計5 000 張720×720 的RGB 圖像,其中25%作為測試集,75%作為訓(xùn)練集,使用標記工具LabelImg標注每只手的手勢類別及位置。
實驗配置為CPU:Inteli7 8700K,RAM:8 GB,GPU:Nvidia GTX 1080,GPU 加速庫:CUDA 8.0.61,CUDNN6.0.21,實驗系統(tǒng)為ubuntu16.04,算法使用Caffe深度學(xué)習(xí)框架。網(wǎng)絡(luò)訓(xùn)練過程中,設(shè)置batch_size 為8,初始學(xué)習(xí)率為0.005,多分步策略學(xué)習(xí),前置衰減系數(shù)為0.000 5,同時通過觀察損失函數(shù)變化、訓(xùn)練與測試準確率差異等指標調(diào)整學(xué)習(xí)率和下調(diào)學(xué)習(xí)率時的步數(shù)。
為了驗證本實驗各部分的效果,在本文算法的基礎(chǔ)上分別單獨去掉各模塊進行實驗,在這些實驗中保持訓(xùn)練集和實驗配置都相同,輸入圖像尺寸均為300×300,結(jié)果如表3。
表3 消去各模塊后對網(wǎng)絡(luò)的影響
由結(jié)果可以看出,各個部分都能單獨對mAP有1%~2%的提升,SE-Net 計算不同通道的重要性權(quán)重并重新分配給各通道,增大了對手勢識別發(fā)揮作用的特征層的權(quán)重。置信度損失函數(shù)替換為Focal Loss 使訓(xùn)練時模型參數(shù)的學(xué)習(xí)更傾向于正確的分類預(yù)測框。mixup 數(shù)據(jù)增強方法增加了訓(xùn)練時的擾動,使模型在更加復(fù)雜的環(huán)境下也能保持很好的檢測精度,為了更直觀地展示mixup 的效果,利用圖5 中混合后的圖像做不同模型的對比實驗,結(jié)果如圖8,沒有使用混合方法訓(xùn)練的網(wǎng)絡(luò)很難檢測到所有的目標,相比之下,由于生成的視覺欺騙訓(xùn)練的模型更具魯棒性。添加兩種不同的歸一化層后,引入了新的學(xué)習(xí)參數(shù),模型參數(shù)會有所提高,但是由于其對神經(jīng)網(wǎng)絡(luò)中間層的數(shù)據(jù)進行重新歸一化,使每一層的更新更為同步,減少了在某一層過擬合的可能性,對mAP的提升起到不小的作用。
本文任務(wù)實為分類任務(wù),相比預(yù)測框位置的準確率,本算法更關(guān)注預(yù)測框類別,因此定義了兩個檢測指標來觀察預(yù)測框分類的準確率:
圖8 SSD-3和本文改進的SSD的檢測結(jié)果對比
由于一幀圖像中最多只可能有兩個手勢,如果檢測出3 個及以上分數(shù)大于0.5 的目標,則選出的分數(shù)最大的兩個預(yù)測框作為檢測結(jié)果,并與原始SSD、文獻[16]中的MobileNet-SSD 和文獻[17]中的SE-MSSD 在以上指標上進行記錄,其中MobileNet-SSD為將基礎(chǔ)網(wǎng)絡(luò)改成MobileNet[18],結(jié)果如表4所示。
表4 手勢識別實驗結(jié)果對比
通過表4 可以觀察到本文改進的SSD 模型相比另外幾個模型在mAP上提升了4~5個百分點,其中,F(xiàn)A越低,說明預(yù)測出的錯誤分類框更少,而在預(yù)測錯誤的時候則會使手語模板匹配失敗,LA 越高,則說明沒檢測的目標更少,那么漏檢的幀更少,手語關(guān)鍵幀的語義缺失的概率越少。MobileNet-SSD將6個特征圖的尺寸只有本文算法的一半,對小目標的檢測效果沒有本文好。SE-MSSD的基礎(chǔ)網(wǎng)絡(luò)是MobileNet,SE-Net模塊添加在MobileNet 的每個深度可分離卷積層后,深度可分離卷積雖可大量降低網(wǎng)絡(luò)參數(shù)量,提高算法的運算速度,但也因此帶來了精度上的損失,而在本文中SE-Net 僅加在產(chǎn)生默認框的特征層的置信度計算分支上,引入的額外計算量相比SE-MSSD 少很多,在盡可能減少參數(shù)的情況下增強了網(wǎng)絡(luò)層通道間的相關(guān)性,提高分類準確率。另外,本文中增加了默認框的數(shù)量,并且通過歸一化操作操作和mixup提升了模型泛化能力,對手部小目標的檢測能力更強,預(yù)測框數(shù)量更接近于真實數(shù)量。
為了驗證本算法在手語識別上的有效性,與基于二級匹配策略的實時動態(tài)手語識別[19]做對比實驗,對于本數(shù)據(jù)集的手語視頻中的手語詞匯進行識別,平均準確率如表5。
表5 本文算法與文獻[19]的視頻手語識別結(jié)果對比
通過表5比較可以看出,本文算法識別手語的精度相比文獻[19]有一定的提升,而且在識別時間上也由于手部定位和分類的一步完成快于文獻[19],文獻[19]借助體感攝像頭Kinect獲取手心軌跡,首先根據(jù)軌跡的點密度分布設(shè)計了一種關(guān)鍵幀檢測算法以提取手勢的關(guān)鍵手型,再結(jié)合軌跡的曲線特征和提取關(guān)鍵手勢特征進行二級匹配,步驟復(fù)雜,用于提取關(guān)鍵幀的時間耗費久,而且利用傳統(tǒng)圖像特征分割手部并進行特征提取,易受光照等不利因素的影響,因此準確率和識別速度受到影響。而本文算法只需借助一個單目攝像頭,無需借助輔助技術(shù),更不需要文獻[19]中用到的顏色手套,脫離了其他技術(shù)和外物的限制,利用目標檢測網(wǎng)絡(luò)SSD一步完成手部定位和分類,并利用SE-Net 增強了圖像深度信息的提取能力,為了更好地完成分類任務(wù),利用Focal Loss 損失函數(shù)解決正負樣本不均衡的問題并提升置信度損失的權(quán)重,使模型目標的分類更加準確,還利用多種訓(xùn)練技巧,例如mixup、歸一化來提升模型的泛化能力。
本文提出了一種基于改進SSD 的手語識別算法。利用SSD目標檢測神經(jīng)網(wǎng)絡(luò)實現(xiàn)視頻手語的識別,復(fù)雜度低,避免傳統(tǒng)圖像處理算法分割手部效果不佳和機器學(xué)習(xí)分類準確率低的問題。本文對原始SSD 主要進行以下四方面的改進:(1)針對手部小目標,去掉SSD最后兩個用于檢測大目標的特征層,并在第一個特征層增加產(chǎn)生的默認框數(shù)量;(2)添加SE-Net模塊學(xué)習(xí)每個特征通道的重要性,并加權(quán)到原特征上;(3)針對每張視頻幀中正負樣本極度不均衡的情況,選用Focal Loss 作為SSD損失函數(shù)中的置信度分類部分,并增大分類損失的權(quán)重,提升了網(wǎng)絡(luò)針對手勢的分類能力;(4)加上mixup數(shù)據(jù)增強和卷積層、特征層后的歸一化操作等訓(xùn)練技巧,整體上提升了模型的泛化能力和魯棒性。實驗證明,本文方法不僅在識別率和速度上得到提升,而且僅使用單目攝像頭,不借助數(shù)據(jù)手套、顏色手套或體感設(shè)備Kinect,更具價格優(yōu)勢和實用性。