于 瓅, 馬天祥
(安徽理工大學(xué)計算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
手勢識別可分為基于可穿戴設(shè)備的手勢識別和基于計算機(jī)視覺的手勢識別。前者需要讓被識別對象穿戴上手勢數(shù)據(jù)采集設(shè)備,再進(jìn)行手勢的捕獲和識別[1],該方法可識別在時空中運(yùn)動較為復(fù)雜的手勢動作,同時識別的精度和速度也十分可觀。后者則通過攝像頭采集到的動作圖像,并通過設(shè)計算法提取畫面中的手勢特征信息和分析不同特征對應(yīng)的含義,從而實現(xiàn)手勢的識別。
在當(dāng)前的研究背景下,為了保障數(shù)據(jù)的共享性和使用的便攜性,大多數(shù)研究者選擇使用基于計算機(jī)視覺和機(jī)器學(xué)習(xí)的研究方法。機(jī)器學(xué)習(xí)在容錯性、魯棒性和抗干擾性上表現(xiàn)優(yōu)秀,并且在自組織性和自學(xué)習(xí)性上也具備優(yōu)勢。當(dāng)訓(xùn)練樣本足夠豐富時,模型所學(xué)到的“知識”具有一定的語義特征,在目標(biāo)和行為識別的方面更加適合。
在使用計算機(jī)視覺的方式下已有了許多研究成果[2-7]。王玄[8]提出了一種結(jié)合時空運(yùn)動分布和運(yùn)動軌跡的多特征提取、特征融合并結(jié)合SVM而實現(xiàn)的交警手勢識別方法。羅昆等[9]通過分析交警手勢深度圖片中像素點的變化實現(xiàn)了交警手勢的識別。趙思蕊等[10]采用DTW搭配關(guān)鍵幀中的人體抽象骨架實現(xiàn)了交警手勢的識別。方路平等[11]提出了一種通過骨架化特征模板匹配的交警手勢識別方案,首先通過算法將交警的手勢進(jìn)行抽象和骨架化,并得到骨架化后的特征模板,再將獲取的交警的骨架手勢與模板庫進(jìn)行比較以實現(xiàn)手勢的識別。周天彤等[12]使用Kinect提取出人物抽象的骨架,再利用unity構(gòu)建出模擬現(xiàn)實的道路環(huán)境實現(xiàn)對交警手勢識別和測試的方法。王新等[13]將改進(jìn)后的YOLOv5應(yīng)用到交警手勢的識別中,得到平均精度為98.54的識別效果。劉陽等[14]提出了一種基于Kinect的骨架信息的交通警察手勢識別方案,該方案將Kinect中提取到人體關(guān)鍵點的運(yùn)動軌跡作為手勢特征進(jìn)行訓(xùn)練和測試,結(jié)合距離加權(quán)動態(tài)時間規(guī)劃算法和K最鄰近分類器進(jìn)行識別。張備偉[15]等提出了一種基于DTW的交警指揮手勢識別方法,首先使用Kinect設(shè)備提取出人體關(guān)鍵點,并通過進(jìn)一步的預(yù)處理來建立手勢的模板,最后通過分析對別比同類手勢和不同類手勢中的特性實現(xiàn)交警手勢的識別。
綜上,盡管前人對交警手勢識別已有了不少的研究,但仍存在以下問題:(1)識別情景單一,無法在人群中定位交警;(2)運(yùn)行效率及速度較低,無法較好滿足實時的識別效果。針對以上待解決問題,擬通過改進(jìn)輕量級目標(biāo)檢測網(wǎng)絡(luò)NanoDet以及門控單元GRU,實現(xiàn)近實時的多人物場景下的交警手勢識別。
FCOS全卷積單階段目標(biāo)檢測算法,該算法不同于著名的SSD和YOLOv5系列目標(biāo)檢測算法,FCOS采用無錨框的方式,剔除了錨框的預(yù)定義,使其避免了和錨框有關(guān)的一些復(fù)雜計算:(1)對于不同的數(shù)據(jù)需要使用聚類方法得到適用于該數(shù)據(jù)集的預(yù)定義錨框尺寸;(2)在使用預(yù)定義錨框時,還需要設(shè)置大量的超參數(shù),在對其進(jìn)行設(shè)置時費時費力;(3)在圖像中設(shè)置的大量錨框中,正負(fù)樣本分布十分不均,使得在訓(xùn)練過程中的正負(fù)樣本不平衡問題加劇。FCOS采用無錨框的方式,其將特征圖上的每個點映射回原圖,判斷映射回的點對應(yīng)原圖中物體的類別,以及是否在原圖的目標(biāo)框內(nèi),并通過訓(xùn)練逐漸更新網(wǎng)絡(luò)參數(shù)。
如圖1所示,標(biāo)準(zhǔn)的NanoDet是一種啟發(fā)自FCOS的單階段目標(biāo)檢測算法,其主要由三部分構(gòu)成:Head、Neck和Backbone。在主干網(wǎng)絡(luò)上的選擇上,原作者使用ShuffleNetV2作為特征提取網(wǎng)。為了在保證精度的前提下去提高推理速度,其作者刪除了ShuffleNetV2中的最后一個卷積層,并將8,16,32倍下采樣得到的特征圖輸入到 PAN 中進(jìn)行多尺度的特征融合。在損失函數(shù)的選擇上,該網(wǎng)絡(luò)使用的是由李翔等人提出的Generalized Focal Loss,使檢測頭中的計算開銷得以減少,提高檢測速率。邊界框損失函數(shù)的選擇上,NanoDet使用的是GIoU,相較于使用IoU而言最終的得到目標(biāo)框更加準(zhǔn)確。
圖1 NanoDet的結(jié)構(gòu)圖
1.2.1 通道注意力
通道注意力機(jī)制最先在SeNet網(wǎng)絡(luò)中提出,顧名思義該機(jī)制是為特征圖的每個通道賦給一定的權(quán)值,從而達(dá)到加強(qiáng)有效特征,削弱無用特征的效果,結(jié)構(gòu)見圖2。該機(jī)制分為Squeeze和Excitation兩個操作,前者是使用全局平局池化(GAP) 來壓縮特征圖的維度,如輸入的C×H×W維度的特征圖經(jīng)過處理后將會變?yōu)镃×1×1。后者的操作包含兩個部分:其一是使用一個全連接層將輸入的C×1×1維數(shù)據(jù)降維成C/r×1×1,其二仍是使用一個全連接層將C/r×1×1維的數(shù)據(jù)重新映射回C×1×1。最后再通過一個sigmoid函數(shù)得到各個通道的權(quán)值信息。
圖2 通道注意力機(jī)制
1.2.2 Attention
注意力機(jī)制(Attention)最早由Bahdanau提出,并在機(jī)器翻譯上取得了成功。隨著該技術(shù)的發(fā)展,如今在圖像處理、文本分析等多個領(lǐng)域都將其應(yīng)用其中。Attention從其概念上可以理解為,有選擇地把少量重要的信息從大量的信息中抽取出來,并增加對這些重要信息的關(guān)注度,對大多數(shù)不重要的信息進(jìn)行忽略處理。該機(jī)制的體現(xiàn)主要就在“權(quán)重”的概念上,權(quán)重對信息的重要程度進(jìn)行衡量,當(dāng)某值對應(yīng)的權(quán)重越大時,其重要程度也就越高,對后續(xù)分類任務(wù)的影響也就越大。
注意力機(jī)制Attention主要分為三個階段,分別為:階段一,根據(jù)query(交警手勢類型)和key(人體關(guān)鍵點序列)計算兩者的相似性,獲得原始的注意力得分。其中計算相似度的方式有多種,常用的有計算兩者的余弦相似性、或者計算兩者間的相似點積、也可以通過使用另外的神經(jīng)網(wǎng)絡(luò)進(jìn)行求解;階段二,使用歸一化的方式對階段一中得到的注意力得分進(jìn)行處理,處理方式可是使用softmax函數(shù)將結(jié)果映射到0~1上得到權(quán)重系數(shù);階段三,將階段二中得到的權(quán)重系數(shù)對Value(等同于key,即人體關(guān)鍵點序列)進(jìn)行加權(quán)求和。Attention結(jié)構(gòu)如圖3所示。
圖3 Attention結(jié)構(gòu)圖
圖4是門控單元中一個單元的結(jié)構(gòu)。GRU(Gate Recurrent Unit)和LSTM都是RNN的改進(jìn)型,是為解決在處理長序列的反向傳遞中梯度消失和梯度爆炸等問題提出的。
圖4 GRU結(jié)構(gòu)圖
GRU和LSTM在很多情況下實際表現(xiàn)上相差無幾,只有更新門和重置門兩個控制門,相較于LSTM而言 GRU的參數(shù)較少,訓(xùn)練速度更快,GRU能降低過擬合的風(fēng)險。
2.1.1 交警和行人數(shù)據(jù)集構(gòu)建
由于網(wǎng)絡(luò)上不存在可供使用的公開交警和行人數(shù)據(jù)集,因此,通過編寫網(wǎng)絡(luò)爬蟲的方式進(jìn)行爬取和構(gòu)建。首先編寫爬蟲從主流圖片網(wǎng)站爬取交警和行人的圖片兩千多張,經(jīng)過篩選后得到共計兩千張圖片。在爬取少量圖片時,編寫的爬蟲腳本可正常執(zhí)行獲取圖片,但由于訪問速度過快且隨著訪問次數(shù)的增加,爬蟲程序開始觸發(fā)網(wǎng)站的反爬蟲機(jī)制,即本機(jī)的IP暫時被網(wǎng)站封鎖無法正常對其訪問。為解決上述問題,使得爬蟲程序能夠獲取到指定數(shù)量的圖片,因此,為爬蟲程序添加兩個機(jī)制,使其盡量避免被偵測。首先,在爬取一頁圖片后會進(jìn)行若干秒的暫停,模仿正常的瀏覽,避免觸發(fā)反爬蟲機(jī)制;之后,使用幾十條可用的IP創(chuàng)建IP代理池,當(dāng)爬蟲程序每次進(jìn)行訪問操作時,都會隨機(jī)地從代理池中選擇一個可用IP進(jìn)行替換,盡量減少同一IP連續(xù)多次訪問同一站點的情況,降低爬蟲程序被偵測的可能性,以實現(xiàn)正常的圖片爬取操作。
2.1.2 交警行人數(shù)據(jù)集的擴(kuò)充
由于NanoDet是輕量級目標(biāo)檢測網(wǎng)絡(luò),自身并不帶有數(shù)據(jù)集增強(qiáng)功能,因此無法向YOLOv5一樣通過較少的數(shù)據(jù)集就可進(jìn)行訓(xùn)練并得到不錯的效果。使用Mosaic、色彩變換、平移反轉(zhuǎn)以及縮放等方式對數(shù)據(jù)集進(jìn)行增強(qiáng),效果如圖5所示。
圖5 數(shù)據(jù)集增強(qiáng)
2.1.3 交警手勢數(shù)據(jù)集構(gòu)建
為了便于后期的處理,采用自行錄制的方式構(gòu)建交警手勢數(shù)據(jù)集。首先規(guī)定動作采集人員站在固定的動作采集點處,使得人員的頭部和腳部盡量接近畫面的邊界部分進(jìn)行錄制。之后讓測試人員按照如下的順序做出相應(yīng)的交警指揮手勢:左轉(zhuǎn)彎信號、左轉(zhuǎn)彎待轉(zhuǎn)信號、停止信號、減速慢行信號、變道信號、示意車輛靠邊停車信號、右轉(zhuǎn)彎信號、直行信號。為便于后期的數(shù)據(jù)處理,對于每個動作會固定采集50幀的畫面,重復(fù)上述流程100次,得到整套交警指揮手勢視頻片段集合。
原始NanoDet具有很高的運(yùn)行速度,在本機(jī)上可達(dá)每秒50幀,但在實際訓(xùn)練和測試過程中的識別錯誤情況也較為明顯。為了在保障識別速度的前提下提高識別精度,對該目標(biāo)檢測網(wǎng)絡(luò)進(jìn)行了如下改進(jìn)。
修改主干特征提取網(wǎng)減少非必要參數(shù):首先,經(jīng)分析在主干網(wǎng)ShuffleNet的Block中的branch2分支上使用了兩次1×1卷積,而該卷積僅僅是為了融合DW卷積上的通道間信息,因此,刪除DW卷積后的1×1卷積,減少不必要的參數(shù)堆疊;分析ShuffleNetV2網(wǎng)絡(luò)中的參數(shù)分布,在實際中DW卷積相較于1×1卷積而言,其所占的運(yùn)算量相對較小,增加卷積核大小,將其由原來的3×3改進(jìn)為5×5,同時將特征圖的邊緣填充由1增加為2,保障輸出特征圖的尺度不變。修改前后的ShuffleBlock見圖6。
圖6 修改前后的ShuffleBlock模塊對比
增添通道注意力機(jī)制進(jìn)一步提高精度:在NanoDet的主干特征提取網(wǎng)中融合了通道注意力機(jī)制,使得在提取特征時能夠更加專注于有區(qū)分度的部分。經(jīng)過上述在DW卷積中使用大卷積核,擴(kuò)大感受野,融合通道注意力機(jī)制,提高網(wǎng)絡(luò)信息獲取和特征抽取能力,同時去除一層1×1卷積降低參數(shù)量,使得NanoDet在保證檢測實時性的情況下盡可能地提高識別的精度。
為進(jìn)一步提高GRU捕捉序列中特征的能力,將Attention模塊融合進(jìn)GRU網(wǎng)絡(luò)的末端,使得其在訓(xùn)練過程中能夠動態(tài)地為特征賦予不同的權(quán)重提高識別精度,融合進(jìn)Attention機(jī)制后的網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
圖7 改進(jìn)后的GRU架構(gòu)
使用傳統(tǒng)的串行運(yùn)行方式雖可達(dá)到識別的效果,但運(yùn)行速度大打折扣,無法充分發(fā)揮計算機(jī)的多核優(yōu)勢。因此,設(shè)計并行的運(yùn)行方式,提高計算機(jī)資源的利用率和算法的運(yùn)行速度。重新設(shè)計的并行運(yùn)行架構(gòu)如圖8所示。
圖8 并行化的運(yùn)行架構(gòu)
NanoDet目標(biāo)檢測網(wǎng)絡(luò)改進(jìn)前后的訓(xùn)練過程如圖9所示,可見經(jīng)過改進(jìn)的NanoDet相較于原始網(wǎng)絡(luò),在使用的數(shù)據(jù)集以及訓(xùn)練輪次相同的情況下,訓(xùn)練損失更低。在實際測試中原來的識別錯誤情況也有所改善,同時識別的速度也得到了保證,接近每秒50幀。
圖9 改進(jìn)前后NanoDet的訓(xùn)練過程對比
相較于原始網(wǎng)絡(luò),在使用的數(shù)據(jù)集以及訓(xùn)練輪次相同的情況下,經(jīng)過改進(jìn)的NanoDet訓(xùn)練損失更低。在實際測試中,原來的識別錯誤情況也有所改善,同時識別速度也得到了保證,將注意力機(jī)制和GRU相結(jié)合,提高了該網(wǎng)絡(luò)對交警手勢的識別精度。設(shè)計并行的運(yùn)行架構(gòu),提高了交警手勢智能識別系統(tǒng)的整體執(zhí)行效率。