韓曉冰,胡其勝,趙小飛,秋 強
(西安科技大學通信與信息工程學院,陜西 西安 710000)
手語作為一種特殊的語言形式,已經(jīng)成為許多聾啞人士和聽力障礙者最常用的交流工具。這種語言的獨特性質(zhì)需要使用者具備一定的學習和掌握技能,這就需要投入大量的時間和精力來學習手語。同時,由于手語在不同的文化背景和語境下可能存在差異,因此需要考慮地域和文化差異以適應(yīng)不同的聽障人士。隨著科技的發(fā)展,手語識別技術(shù)的應(yīng)用也越來越廣泛。手語識別技術(shù)的發(fā)展使得聾啞人士與健全人士之間的交流變得更加便捷和高效。利用計算機視覺技術(shù)和機器學習算法,手語識別系統(tǒng)可以自動識別手語中的手勢序列,然后將其轉(zhuǎn)換為文本或語音形式。這種技術(shù)的發(fā)展將有助于聾啞人士更好地融入社會,并實現(xiàn)更好的社會交往[1]。未來,隨著手語識別技術(shù)的不斷創(chuàng)新和發(fā)展,手語也將繼續(xù)成為一種更加生動、便捷和流行的交流方式,為廣大聽障人士和健全人士之間的交流和融合做出更大的貢獻[2]。
目前,手語識別方法主要分為兩種:采用經(jīng)典的圖像特征提取和機器學習算法[3-5]、基于深度學習的方法。
采用經(jīng)典的圖像特征提取和機器學習算法[4-5],通常會使用經(jīng)典的圖像分割算法[6]對手語視頻進行預(yù)處理[7-8],這樣得到了初步的手部特征,再通過如SVM、Adaboost 算法等機器學習的方法[9],將分割區(qū)域內(nèi)的不同手部特征進行分類[10]。但是手語中的動作、手勢和姿勢十分復(fù)雜多變,傳統(tǒng)的圖像特征無法充分地表達這些復(fù)雜的特征信息,而且基于傳統(tǒng)圖像特征和機器學習算法的手語識別方法采用分步驟進行處理,導致實時性較差。
傳統(tǒng)的圖像處理和機器學習算法在目標檢測任務(wù)中常常需要手動提取特征,而這些特征的表征能力可能有限,在復(fù)雜內(nèi)容中難以提取到有效的語義信息。與之相比,基于深度學習的目標檢測網(wǎng)絡(luò)[11]利用神經(jīng)網(wǎng)絡(luò)模型自動學習特征,而且可以得到更高的準確率和識別速度[12]。其中,F(xiàn)aster RCNN[13]是一種兩階段目標檢測算法,通過引入RPN 網(wǎng)絡(luò)實現(xiàn)了更快的檢測速度和更高的準確率。后來,One-stage 目標檢測方法,如YOLO[14]和SSD[15]能夠直接從輸入圖像中預(yù)測目標的類別和位置,具有端到端檢測的能力,能夠?qū)崿F(xiàn)更好的實時性。
本文介紹了一種改進的手語識別算法,它基于YOLOv7-tiny 算法,并在此基礎(chǔ)上進行了改進。首先將改進后的CBAM 注意力機制融入頸部層網(wǎng)絡(luò),可以加強網(wǎng)絡(luò)中不同層之間和不同通道之間的特征相關(guān)性,從而提升手語識別的準確性;之后使用Ghost 卷積來替換頸部層的部分普通卷積,以減少計算量和參數(shù)量,加快檢測速度;最后將損失函數(shù)替換為SIoU,可以有效地降低模型的過擬合風險,提高模型的泛化能力,能夠更好地滿足實際應(yīng)用需求。
YOLOv7[16]是一種高速、高精度的目標檢測模型,適用于實時場景下的目標檢測任務(wù)。它包括三種基本網(wǎng)絡(luò)模型,其中最輕量級的YOLOv7-tiny在速度和精度方面表現(xiàn)優(yōu)秀,可作為嵌入式系統(tǒng)或移動設(shè)備上的目標檢測器,其檢測邏輯與之前的YOLO算法系列[17-18]基本類似。
YOLOv7-tiny 網(wǎng)絡(luò)模型由輸入、骨干網(wǎng)絡(luò)、頸部和頭部等4 部分組成,其中輸入部分進行數(shù)據(jù)增強等預(yù)處理,將圖片送入主干網(wǎng)提取特征,再經(jīng)過頸部模塊特征融合處理得到不同尺寸的特征。最后,融合后的特征被送入檢測頭,經(jīng)過檢測輸出結(jié)果。
YOLOv7-tiny 網(wǎng)絡(luò)模型主要由卷積、MX 模塊、MCB模塊以及SPPCSP 模塊構(gòu)成。MCB 模塊結(jié)構(gòu)上類似sppf,通過多次堆疊卷積層,形成了過渡層結(jié)構(gòu),使網(wǎng)絡(luò)堆疊更多的block,從而加強網(wǎng)絡(luò)學習能力。SPPCSP 模塊在進行卷積后加入并行的多次MaxPool 操作,增大了感受野,使得算法適應(yīng)不同的分辨率圖像,而且又采用了類似殘差結(jié)構(gòu)的方法,將進行了常規(guī)處理的特征與進行池化的特征合并在一起,提高了算法的速度與精度。MX 模塊的主要作用是下采樣,將進行了最大池化的特征與常規(guī)卷積后的特征加在一起,形成了一個超級下采樣的效果。
在頸部模塊,YOLOv7 采用了與YOLOv5 網(wǎng)絡(luò)模型相同的傳統(tǒng)PAFPN 結(jié)構(gòu)。在檢測頭部分,本文的YOLOv7-tiny 算法選用了3 種不同尺寸目標檢測結(jié)果,并且提出了輔助頭的一個訓練方法,主要目的是通過增加訓練成本來提升精度,同時不影響推理的時間。
在手語識別中,手語圖像除了包含不同的手部動作信息外,還伴有復(fù)雜的背景環(huán)境,在訓練過程中會導致負樣本過多,影響檢測效果。為此,本文加入了CBAM注意力機制[19],并且為了使模型更加精準地定位與識別出手語動作,將其進行了改進。CBAM 注意力機制結(jié)構(gòu)如圖1 所示,主要結(jié)構(gòu)是兩個子模塊,即通道注意力模塊和空間注意力模塊,由于兩個模塊互相獨立,這樣便于進行使用和改進。
通道注意力模塊如圖2 所示,首先通過使用平均池化和最大池化操作聚合特征圖的空間信息,生成兩個不同的空間上下文描述符Fcavg和Fcmax,分別表示平均池化特征和最大池化特征;然后這兩個空間描述符被轉(zhuǎn)發(fā)到一個共享網(wǎng)絡(luò)來產(chǎn)生通道注意力映射,共享網(wǎng)絡(luò)應(yīng)用于每個描述符后,使用逐元素求和來合并輸出特征向量。通道注意力計算式為:
圖2 通道注意力機制模塊
式中:σ為sigmoid 函數(shù);r是縮減率;W0∈RC/r×C和W1∈RC×C/r為權(quán)重。
空間注意力模塊如圖3 所示,通過兩個池化操作聚合一個特征圖的通道信息,生成兩個2D 映射和,分別表示跨通道的平均池化特征和最大池化特征,然后將這些信息連接起來并通過一個標準的卷積層進行卷積,產(chǎn)生2D 空間注意力圖,最后通過sigmoid 函數(shù)進行標準化得到最終注意力圖??臻g注意力計算式為:
圖3 空間注意力機制模塊
式中:σ為sigmoid 函數(shù);f7×7表示卷積核大小。
但是在CBAM 模塊的通道域使用共享全連接層,這樣雖然可以減少參數(shù)開銷,同時也導致了部分通道特征信息的丟失,從而無法獲取復(fù)雜手語動作的全部特征信息[20]。為了避免這種缺失并提高手語識別網(wǎng)絡(luò)的準確率,本文只保留了CBAM 注意力機制的空間域,將通道域部分替換成ECA-Net[21]模塊。
ECA-Net 是通道注意力機制,通過使用一維卷積來聚合通道特征,實現(xiàn)局部跨通道交互,K是卷積核大小,表示局部交叉通道交互的面積。ECA-Net 采用分組卷積[22]的方法,如式(3)所示:
式中:通道維度C的初始值為64;|t|odd表示距離t最近的奇數(shù);γ取2;b取1。
本文將原CBAM 注意力機制的通道域部分替換成ECA 模塊,由于卷積核大小K值不同時,模型所體現(xiàn)的實驗精確度不同,不同卷積核大小對應(yīng)的模型準確率如圖4 所示。
圖4 卷積核大小與準確率的變化曲線
由圖4 曲線可知,不同大小的卷積核對應(yīng)的準確率差距明顯。對于本文的數(shù)據(jù)集,網(wǎng)絡(luò)模型在K=7 時準確率最高,但通過分組卷積的方法,則不再需要手動調(diào)參去交叉驗證,可以讓模型在訓練過程中自適應(yīng)地調(diào)節(jié)卷積核的大小,使K值始終在最合適的區(qū)間波動,從而讓模型的檢測精度達到最高值。
YOLOv7-tiny 中的置信度損失和類別損失采用的是二元交叉熵計算,而定位損失是用CIoU[23]進行計算的,公式如下:
式中:IoU表示預(yù)測框與真實框的重疊面積;p2(b,bgt)代表預(yù)測框和真實框中心點的歐氏距離;c表示包含預(yù)測框和真實框的最小矩形的對角線距離;a是一個平衡參數(shù);v是評判兩個框長寬比的參數(shù)。a與v的計算公式如下:
式中:wgt、hgt代表真實框的寬高大??;w、h代表預(yù)測框的寬高大小。
當公式(5)中的wgt=w,hgt=h時,v為0,這時CIoU就無法達到預(yù)定的效果,因此本文將其替換為SIoU[24],其由4 個部分組成:角度損失、距離損失、形狀損失和IoU 損失。
角度損失公式如下:
式中ch為真實框和預(yù)測框中心點的高度差;σ為真實框和預(yù)測框中心點的距離。
距離損失公式如下:
式中:γ為2 -Λ;cx、cy、cw、ch分別為真實框與預(yù)測框最小外接矩形的中心點坐標以及寬高。
形狀損失公式如下:
式中:w、h、wgt、hgt分別為預(yù)測框和真實框的寬高;參數(shù)θ的取值范圍為[2,6]。
綜上,最終的SIoU 損失函數(shù)表達式如下:
式中IoU 為預(yù)測框與真實框交并比;Δ為距離損失;Ω為形狀損失。SIoU 損失函數(shù)考慮到了真實框與預(yù)測框之間的方向,引入真實框和預(yù)測框之間的向量角度,使得收斂速度更快。因此,本文將原損失函數(shù)替換為了SIoU。
Ghost 卷積是文獻[25]提出的一種輕量級的卷積模塊,它使用較少的參數(shù)和計算量產(chǎn)生了更多的特征圖。圖5展示了普通卷積和Ghost卷積的工作原理。
圖5 普通卷積和Ghost 卷積
如圖5a)所示,普通卷積一般采用了大量卷積來形成特征圖,雖然這樣可以得到較為全面的特征信息,但同時也會形成大量的冗余信息,導致模型的檢測速度下降。與之對比的是,圖5b)中Ghost 卷積將卷積過程分為了兩個部分,首先采用少量卷積生成一部分的特征圖,然后采用不會產(chǎn)生大量冗余信息的線性運算高效地生成另一部分特征圖,最終將兩部分產(chǎn)生的特征圖堆疊得到Ghost特征圖。
假設(shè)卷積核數(shù)量為n,輸入特征圖的大小為h?w?c,輸出特征圖大小為h′?w′?n,卷積核大小為k?k,則普通卷積所需的計算量可表示為n?h?w?c?k?k。通道數(shù)c為256 時,卷積計算量將超過105,而Ghost 卷積所需的計算量可表示為n/s?h′?w′ ?c?k?k+ (s- 1) ?n/s?h′?w′ ?d?d。其中,d?d為線性運算核的大小,與k?k類似,s表示線性運算的數(shù)量,且s?c。
比較兩者的計算量,Ghost模塊的理論加速比為:
從式(10)可知,普通卷積的計算量約為Ghost 卷積的s倍,同樣參數(shù)量的計算也約為s倍,這充分展示了Ghost 卷積在計算量方面的優(yōu)勢。因此,在模型中使用Ghost 卷積替換普通卷積可以有效地降低計算成本,壓縮模型參數(shù)量。
本文首先將傳統(tǒng)注意力機制CBAM 模塊進行改進,并融合到Y(jié)OLOv7-tiny 模型的頸部層網(wǎng)絡(luò),讓模型可以更加準確地抓取到復(fù)雜的手語動作特征信息;其次,將頸部層中的普通卷積模塊替換為Ghost 模塊,減少了計算量,加快檢測速度。改進后的YOLOv7-tiny 網(wǎng)絡(luò)結(jié)構(gòu)模型如圖6 所示。
圖6 改進后的YOLOv-tiny 網(wǎng)絡(luò)結(jié)構(gòu)模型
實驗采取不同手語數(shù)據(jù)中的圖片進行訓練,包括Roboflow 的手語數(shù)據(jù)集和美國的ASL 手語數(shù)據(jù)集,此數(shù)據(jù)集共1 950 張圖像。為達到良好的實驗效果,本文在訓練時以9∶1 的比例劃分為訓練集和測試集。網(wǎng)絡(luò)測試環(huán)境為Pytorch 1.11,Python 3.8,具體的硬件配置與模型參數(shù)如表1 所示。
表1 硬件配置和模型參數(shù)
對于一個目標檢測模型的好壞,通常選取精準率、召回率和平均精準率(mAP)這3 個指標,計算公式如下:
式中:TTP表示預(yù)測值和真實值一樣,預(yù)測值為正樣本(真實值為正樣本);FFP表示預(yù)測值和真實值不一樣,預(yù)測值為正樣本(真實值為負樣本);FFN表示預(yù)測值和真實值不一樣,預(yù)測值為負樣本(真實值為正樣本);P為準確率;R為召回率;AAP稱為平均準確率,是對不同召回率點上的準確率進行平均;mAP 是平均精度均值,即對所有類別的AP 值取平均值,衡量的是訓練出的模型在所有類別上的好壞,是目標檢測中一個最為重要的指標,一般評估一個目標檢測模型都會看這個值,這個值在0~1 之間,越大越好。
在相同的實驗條件下,對YOLOv7-tiny 模型分別使用CIoU 和SIoU 兩種損失函數(shù)并進行對比,兩種函數(shù)的變化曲線如圖7 所示,迭代次數(shù)為300。其中,曲線代表的是平均邊界框損失。
圖7 損失函數(shù)迭代對比
分析圖7 可得,兩種損失函數(shù)隨著迭代次數(shù)的增加而逐漸平滑收斂。但是通過對比可以看出,SIoU 比CIoU 損失值更小,模型的穩(wěn)定性也得到一定的提高。由此可得,在本文數(shù)據(jù)集和實驗環(huán)境下,使用SIoU 損失函數(shù)作為模型的定位損失,可以有效地提升網(wǎng)絡(luò)模型的性能。
驗證添加的各模塊對YOLOv7-tiny 模型的提升效果,消融實驗結(jié)果如表2 所示。
表2 消融實驗測試結(jié)果
由表2 數(shù)據(jù)分析可得:首先在YOLOv7-tiny 的頸部層中融入已經(jīng)改進好的CBAM 模塊,而模型參數(shù)量幾乎沒有產(chǎn)生影響,mAP50 值升高了4.53%,網(wǎng)絡(luò)檢測的精準率有比較明顯的提升,降低了由于非線性環(huán)境下手語動作誤檢、漏檢的可能性;其次,將頸部層上的部分普通卷積替換為Ghost 卷積后,模型參數(shù)量減少了0.29×106,同時mAP 為96.54%,幾乎沒有影響,但模型的計算速度有所提高,降低了模型部署所需的硬件資源;最后,引入SIoU 損失函數(shù)得到本文算法,由表中數(shù)據(jù)可以看出,mAP50 值進一步又提升了0.79%,比原YOLOv7-tiny 模型的mAP50 值提高了5.31%,但模型參數(shù)量沒有影響,既提高了精度,又沒有影響到檢測速度。
在相同的實驗環(huán)境與訓練參數(shù)的條件下,本文將改進的YOLOv7-tiny 網(wǎng)絡(luò)模型與其他的網(wǎng)絡(luò)模型進行對比實驗,從而來體現(xiàn)改進網(wǎng)絡(luò)模型的提升之處。實驗結(jié)果如表3 所示。
表3 不同網(wǎng)絡(luò)的對比實驗
經(jīng)分析表3 數(shù)據(jù),可以得到本文算法網(wǎng)絡(luò)模型的參數(shù)規(guī)模要遠低于其他網(wǎng)絡(luò)模型,而mAP50 值為97.33%,要比同系列的YOLOv4、YOLOv5s 要高出4.92% 和2.57%,這也表明改進后的YOLOv7-tiny 算法模型在手語識別方面有著較高的準確率和檢測速度,實現(xiàn)了更好的檢測效果。
為了更好地分析檢測結(jié)果,本文算法訓練后的混淆矩陣如圖8 所示,從圖中可以看到,對角線上的數(shù)據(jù)普遍較高,說明模型的檢測效果較好。
圖8 混淆矩陣
圖8 中,不在對角線上的數(shù)據(jù)也較多,雖然數(shù)值很小,對檢測效果也產(chǎn)生了一定的影響,導致手語字母錯檢,如將C 檢測成O,M 檢測成N,這些主要都是由于手語字母動作相似而產(chǎn)生的誤測,后面會繼續(xù)對數(shù)據(jù)集和網(wǎng)絡(luò)進行優(yōu)化。
為了更好切合實際環(huán)境,也為了更好地體現(xiàn)出改進后網(wǎng)絡(luò)模型的檢測效果,本文拍攝了5 個字母的手語動作圖片進行測試,YOLOv7-tiny 網(wǎng)絡(luò)模型與改進YOLOv7-tiny 網(wǎng)絡(luò)模型的對比檢測結(jié)果如圖9 所示。
圖9 改進YOLOv7-tiny 與原YOLOv7-tiny 檢測結(jié)果對比
由圖9 中的圖片效果對比可以看到,YOLO-tiny 網(wǎng)絡(luò)模型出現(xiàn)了漏檢,沒有檢測出字母N 的手語動作,而改進后的YOLOv7-tiny 網(wǎng)絡(luò)模型則精準地識別出了對應(yīng)的字母手語動作。最后可以得到,改進后的YOLOv7-tiny 網(wǎng)絡(luò)模型針對復(fù)雜的真實環(huán)境有著良好的魯棒性,能夠準確地識別出正確的手語動作,在復(fù)雜的環(huán)境下也有良好的適應(yīng)性和泛化能力。
本文提出了一種改進YOLOv7-tiny 網(wǎng)絡(luò)模型的手語識別網(wǎng)絡(luò),以解決健全人士與聽障人士互相交流信息困難的問題。首先,將傳統(tǒng)注意力機制CBAM 模塊進行改進,并融合到Y(jié)OLOv7-tiny 模型的頸部層網(wǎng)絡(luò)以提高判斷準確度;其次,將頸部層中的普通卷積模塊替換為Ghost 模塊,減少計算量,加快檢測速度;隨后用SIoU 邊界框損失函數(shù)代替CIoU 邊界框損失函數(shù)以提高定位準確度。YOLOv7-tiny 網(wǎng)絡(luò)模型在消融實驗中測試了其性能,結(jié)果表明,相較于原模型,改進后的模型提高了5.31%的mAP,且具有更高的精準度。本文改進后的YOLOv7-tiny 模型能夠很好地適應(yīng)于手語識別應(yīng)用中,有效地避免了聽障人士無法融入主流社會以及被孤立的問題,解決了健全人士與聽障人士交流溝通的問題。