陸靜芳,智 敏
(內蒙古師范大學 計算機科學技術學院,內蒙古 呼和浩特 010022)
自Vision Transformer(ViT)[1]適應圖像分類任務以來,以其為基礎的后續改進,在各種計算機視覺任務中實現了更高的性能[2-4]。ViT(圖1)的成功歸因于基于注意力這一思想。但是多頭注意力模塊過高的參數量以及計算復雜度不容忽視。因此,后續開發了許多注意力模塊變體[5-8]以改進ViT。然而,文獻[9]將注意力模塊完全替換為空間MLP,并發現導出的類似MLP 模型可以很容易地在圖像分類任務上獲得良好性能。文獻[10-12]通過提高數據訓練速度和特定MLP 模塊設計進一步對MLP 類模型進行改進,逐漸縮小與ViT 的性能差距,為替代ViT 模型中的注意力模塊提供數據支持。
圖1 ViT 結構圖Fig.1 The structure diagram of ViT
為了降低ViT 的參數量以及計算復雜度,本文對ViT 進行兩步改進,并將其應用到人體動作識別任務。首先,僅使用簡單的并行池化層替代ViT 的注意力模塊,模型仍然可以實現極具競爭力的性能;其次,將網絡中patch embedding 模塊的常規卷積替換為深度可分離卷積,繼而構建MAPFormer,并將其引入人體動作識別研究領域,提高人體動作識別任務的準確性;最后,提出MAPFormer在Miniimagnet 和MS COCO 數據集進行實驗,相比ViT 實驗精度分別提高4.3% 和2.1%,參數量減少65.2 M 和58.3 M,以此驗證了MAPFormer 與人體動作識別任務結合的可行性。
受Transformer[13]在NLP 中的成功啟發,許多研究人員將注意力機制和Transformer 應用于視覺任務[14-17]。文獻[18]提出將Transformer 訓練為自動回歸預測圖像上的像素以進行自監督學習。文獻[1]提出將patch 嵌入作為ViT的輸入,通過實驗結果表明,在有監督的圖像分類任務中,由3 億張圖像的大型專有數據集上預訓練的ViT 可以獲得優異的性能。DeiT[3]和T2T ViT[4]進一步證明,約130 萬張圖像的ImageNet-1K 數據集上,從頭開始預訓練的ViT 也可以實現很好的效果。
本文將注意力模塊抽象為token 混合器,如圖2 所示。輸入I首先通過輸入嵌入來處理,如式(1)
圖2 ViT(token 混合器)結構圖Fig.2 The structure diagram of ViT(token mixer)
其中,X∈RN×C表示具有序列長度為N和維度為C的嵌入token。然后,token序列被輸入到重復的Transformer 塊,每個塊包括兩個殘差連接。其中,第一部分主要包含token 混合器以在token 之間傳遞信息,并且該子塊可以表示為
其中,Norm(·) 表示歸一化,歸一化有多種形式,例如層歸一化[19]或批量歸一化[20],TokenMixer(·) 表示主要用于混合token 信息的模塊,由最近ViT 模型[1,4,8]中的各種注意力機制或類似MLP 模型中的空間MLP[9,12]來實現。盡管一些token 混合器用注意力來混合通道信息,但是token 混合器的主要功能是傳遞token 信息。第二部分主要由具有非線性激活的雙層MLP 組成,用來維度變換,如式(3)
其中,W1∈RC×rC和W2∈RrC×C具有MLP 擴展比為r的可學習參數,σ(·)是一個非線性激活函數,可以為GELU[21]或ReLU[22]。
為了降低ViT 中多頭注意力模塊的計算量,同時提高模型性能,目前很多方法都集中在通過移動窗口[2]、相對位置編碼[23]、細化注意力圖[8]或合并卷積[24-26]等對token 混合器進行改進。文獻[2]提出移位窗口方案,通過自注意計算限制在非重疊的局部窗口,同時允許跨窗口交互,從而以更少的計算復雜度實現更高的精度。文獻[22]提出分段函數將相對位置映射到編碼,相對位置編碼對輸入token 之間的相對距離進行編碼,并通過具有與自注意力模塊中的query 和key 交互的可學習參數的查詢表來學習token 之間的成對關系。該方案允許模塊捕獲token 之間長距離依賴關系,將計算成本從原始O(n2d)降低到O(nkd)。文獻[8]提出Refiner 方案對自注意力的擴展進行了探索,將多頭注意力圖映射到一個更高的維度空間,以促進其多樣性,同時應用卷積來增強注意力圖的局部特征,相當于在局部用可學習的內核聚合分布式的局部注意力特征,再用自注意力進行全局聚合,使改進后的ViT 在ImageNet 數據集上僅用81 M的參數達到86% 的分類精度。為平衡ViT 和現有的卷積神經網絡在性能和計算成本上的差距,文獻[24]提出一種新的基于ViT 的混合網絡,利用ViT 來捕獲遠程依賴關系,利用卷積神經網絡對局部特征進行建模,并對該網絡進行縮放獲得CMT 模型,與以前的基于卷積和ViT 的模型相比,獲得更好的準確性和效率。文獻[25]與上述方法不同,而是在網絡中每個階段的開始位置引入一個卷積token 編碼,通過重疊的卷積操作在圖片上進行卷積,即將token 序列變回原來的圖片,該操作可以捕捉局部信息并且減少序列的長度,增加token 的維度,同時用卷積投影層替換之間的線性投影層,減少計算復雜度。
最近一些方法[27-30]探索ViT 體系結構中其他類型的token 混合器,并展示出很好的性能。其中,文獻[27]用傅里葉變換代替注意力,實驗結果仍然達到97% 的精度。文獻[28]引入連續域注意力機制,推導了相關的有效梯度反向傳播算法。為讓模型具備更長的長期依賴關系,文獻[29]以文獻[28]的方法為基礎,擴展了具有無界長期記憶的ViT,通過利用連續空間注意力機制來捕獲長期依賴關系,提出∞-former 模型中的注意力復雜度與上下文長度無關,更精確選擇模型的記憶長度。為掌握影響精度最重要的部分,∞-former保持了“黏性記憶”,能夠對任意長的上下文進行建模,同時保持較少的計算開銷。文獻[30]指出在傅里葉變換中,計算變換后某一位置的信息時可能會計算變換前多個位置的信息,有綜合考慮整個圖像的趨勢,這一點與ViT 側重于關注圖像的全局性類似,于是提出在傅里葉變換之后的圖像上用可學習的全局濾波器進行處理,更好地處理圖像信息。文獻[31]提出Poolformer 模型,簡單利用池化層作為基本token 混合器來降低ViT 的參數量。
除了以上對token 混合器的改進外,文獻[9]和文獻[12]發現僅采用MLP 作為token 混合器仍然可以獲得相當好的效果。此外,還有一些方法通過改變ViT 的其他架構來探索各個分支的作用以及證明模型的可變性。文獻[32]證明在沒有殘差連接或MLP 的情況下,輸出以雙指數收斂到一階矩陣。文獻[33]比較了ViT 和之間的特征差異,發現注意力允許早期收集全局信息,而殘差連接將特征從較低層傳播到較高層,并通過改變損失函數來提高模型的準確性和泛化能力。
本文整體網絡框架如圖3 所示,其基本思想將ViT 模型的多頭注意力模塊用MAPFormer 模塊替換,將patch embedding 模塊中的常規卷積替換為深度可分離卷積。整個網絡結構包含4 個階段,每個階段由改進的patch embedding 模塊和MAPFormer 組成,在4 個階段分別得到不同分辨率的特征圖,以獲得不同尺度的特征。整個網絡總共有12 個MAPFormer 塊,4 個階段將分別包含2、2、6、2 個MAPFormer 塊。在MAPFormer 塊內部,引入最大池化層與平均池化層并行處理數據,同時在2、3、4 階段使用改進的patch embedding 模塊。
圖3 整體框架圖Fig.3 The diagram of overall framework
對于輸入的圖像,其中H和W表示輸入圖像的寬度和高度。首先輸入圖像進入patch embedding 進行卷積操作,之后轉換成序列進入MAPFormer,經過并行池化層進行特征提取,平均池化用于提取全局上下文信息,最大池化用來提取局部信息,將得到的特征進行融合,以此對輸入圖像進行特征提取。最后與原始輸入相加,進行特征增強,得到的特征輸入到下一個殘差塊進行維度轉換,輸出到下一階段,經過四個階段處理后,通過MLP Head 獲得最終的分類結果。
自Transformer[13]問世以來,注意力成為研究者關注的重點,并專注于設計各種基于注意力的token 混合器機制。眾所周知,注意力機制和空間MLP 通常只能處理數百個token,但是注意力機制和空間MLP的計算復雜性與要混合的token 數量成二次計算復雜度。此外,空間MLP 在處理較長序列時會帶來更多的參數。相比之下,池化與序列長度成線性計算復雜度,而不需要任何可學習參數。本文使用并行的兩個池化層作為token 混合器代替注意力模塊,在此過程中沒有可學習參數,僅是使每個token 平均以及最大程度地聚合其附近的token 特征,消除多頭注意力帶來的大量參數以及過高的計算復雜度。并行池化層由平均池化層和最大池化層組成,下面將對這兩個池化層進行介紹。
2.1.1 平均池化 平均池化可以保留背景信息,進行平均池化時,池化窗口類似于卷積的窗口滑動方式在特征圖上進行滑動,取窗口內的平均值作為結果,其過程為
其中,ykij表示第k個特征圖有關矩形區域Rij的平均池化層的輸出值,xkpq表示第k個特征圖有關矩形區域Rij中位于位置(p,q)的元素值。平均池化對特征圖進行采樣的同時防止模型過擬合。平均池化的反向傳播過程是把某個元素的梯度等分為n份分配給前一層,以保證池化前后的梯度之和保持不變,其過程為
其中,gkpq表示第k個特征圖位于位置(p,q) 經過反向傳播后的輸出值,xkpq表示第k個特征圖位于位置(p,q)的元素值,n為xkpq表示在區域的元素個數。即假設進行平均池化反向傳播的元素值為2,經過反向傳播后的結果為[0.5 0.5;0.5 0.5]。
當需要綜合特征圖上的所有信息做相應決策時,通常會用平均池化。執行人體動作識別任務時,首先要對圖像數據進行特征提取,從單一像素的角度觀察很難分辨圖像中的人體動作,此時需要考慮全局信息的影響,全局信息不但可以提供周圍的環境因素,還可以更好地協助描述局部語義信息。因此,本文選用平均池化提取全局信息,從而幫助分類器進行分類。
2.1.2 最大池化 最大池化用來提取局部紋理特征,減少無用信息的影響。最大池化通過前向傳播將patch 中最大的像素值傳遞給后一層,而其他的像素值直接被舍棄掉,其過程為
其中,fkij表示第k個特征圖有關矩形區域Rij的最大池化層的輸出值,xkpq表示第k個特征圖矩形區域中位于位置(p,q)的元素值。
最大池化的反向傳播直接將梯度傳給前一層某一個像素,而其他像素不接受梯度,其值保持為0。假設進行最大池化反向傳播的元素值為3,經過反向傳播后的結果為[0 3;0 0]。
最大池化和平均池化的不同點在于反向傳播時是否需要記錄下原始像素值的位置,平均池化關注全局信息,最大池化重視局部信息。由于人體關鍵節點的變化對人體動作識別任務會產生很大的影響,還會影響最后的識別結果,而僅使用平均池化并不能對局部特征加以描述。因此,本文使用最大池化對人體行為進行局部特征提取,提高模型的識別精度。鑒于平均池化與最大池化的特性,利用平均池化來獲取全局信息,利用最大池化來獲取局部信息,將二者得到的信息進行融合,以此提取輸入圖像中所包含的人體行為較為全面的特征。
人體動作識別任務中的圖像數據與ViT 的輸入要求不匹配,因此需要通過patch embedding 模塊對圖像數據的三維矩陣進行數據變換。該模塊通過卷積操作將圖像劃分為一系列的patch,再將patch 轉換成一維向量送入ViT 進行處理。整個流程包含多個patch embedding 模塊,卷積層參數不斷累積,降低了識別效率。鑒于此,本文提出在2、3、4 階段的該模塊中使用深度可分離卷積替換常規卷積,降低參數量,提高識別效率。
深度可分離卷積網絡包含兩部分,分別為深度卷積和逐點卷積,主要用來降低卷積運算參數量。深度卷積在二維平面內進行,是指每個卷積核對應輸入圖像的每一個通道;逐點卷積將深度卷積得到的各自獨立的特征圖進行組合生成新的特征圖。深度卷積將不同的卷積核獨立應用在輸入圖像的每個通道,在卷積過程中,一個卷積核負責一個通道。深度卷積完成后得到的特征圖數量與輸入層的通道數相同,無法擴展特征圖。而且該運算對輸入層的每個通道獨立進行卷積,每個層的特征都被分開,沒有有效利用不同通道在相同空間位置上的特征信息。因此需要逐點卷積將這些各自獨立的特征圖進行組合生成新的特征圖。逐點卷積運算與常規卷積運算相似,卷積核尺寸為1×1×M,M為上一層的通道數,同時將深度卷積得到的特征圖在深度方向上進行加權組合生成新特征圖,新特征圖的數量與卷積核個數相同。
例如,對于一張5×5 像素、3 通道彩色輸入圖片(shape 為5×5×3)進行深度可分離卷積,首先經過深度卷積運算,卷積核的數量與通道數相同(通道和卷積核一一對應)。所以一個3 通道的圖像經過運算后生成3 個特征圖,如果每個卷積核的填充步長相同,則得到的特征圖尺寸與輸入層相同,均為5×5,如圖4 所示。其中Filter包含一個大小為3×3 的卷積核,卷積部分的參數個數計算為:N_depthwise=3×3×3=27。
圖4 深度卷積Fig.4 Deep convolution
逐點卷積過程如圖5 所示。由于逐點卷積采用的是1×1 的卷積方式,經過逐點卷積之后,輸出4 張特征圖,與常規卷積的輸出維度相同。此過程中卷積涉及參數個數可以計算為:N_pointwise=1×1×3×4=12;因此,深度可分離卷積的參數由兩部分相加得到N_separable=N_depthwise+N_pointwise=39,而常規卷積的參數個數為:N=4×3×3×3=108。經過計算可以觀察到相同的輸入,同樣是得到4 張特征圖,深度可分離卷積的參數個數約是常規卷積的1/3。因此,在參數量相同的前提下,采用深度可分離卷積的神經網絡層數可以做的更深。在卷積層數相同的前提下,深度可分離卷積相比常規卷積具備更少的參數。鑒于此,在patch embedding模塊中使用深度可分離卷積替換常規卷積,以降低整體模型的參數量。
實驗環境提出算法使用的硬件為NVIDIA Tesla 4 GPU,Pytorch 作為基礎,保證實驗運行。實驗數據選用三個人體動作識別數據集:Miniimagenet 數據集和MS COCO 數據集。Miniimagenet 是從ImageNet 分出來的數據集,包括100 類不同的動作類別,每一類至少包含600 張圖片,具有豐富的類別和多樣化的圖像內容。MS COCO 數據集是人體動作識別領域常用的數據集之一,包含約40 000 張圖片數據。該數據集具有規模大、多樣化、背景復雜、遮擋問題等特點,圖像來源真實場景,覆蓋了廣泛的環境、場景和情境,并涵蓋不同尺度和角度。其中,一些圖像中的目標可能非常小,而其他圖像中的目標可能占據整個圖像。此外,該數據集還包含多種場景和動作,例如人在室內或室外運動等,選用該數據集可評估模型對不同場景和動作的泛化能力。
本文采用四個階段的嵌入尺寸為64、128、320、512 的模型,MLP 膨脹比設置為4(表1)。第一階段patch embedding 的大小步長為4,卷積核大小為7×7 的常規卷積,其余三個階段步長為2,卷積核大小為3×3 的深度可分離卷積,以此對上一階段得到的特征圖進行特征提取,同時降低參數量。平均池化與最大池化均采用步長為1,池化窗口大小為3×3 的池化層,提取全局上下文信息以及局部特征。
表1 MAPFormer 實驗參數Tab.1 The experimental parameters of MAPFormer
本文將MAPFormer 與ViT、典型模型Swin Transformer、人體動作識別任務中較為先進的模型TSNTransformer[34]以及池化模型PoolFormer 進行比較。由表2 所示,ViT 模型具有對全局上下文信息建模的優勢,但是由于多頭注意力過高的參數量,使其在實際應用中受到限制;Swin Transformer 對多頭注意力進行改進,提高了識別精度,但由于注意力模塊自身的復雜性,參數量和計算復雜度并沒有下降到理想狀態;PoolFormer 通過將注意力機制替換為無參數量的平均池化層,大大降低模型的參數量,提高模型的實驗精度,由此也驗證了在一定程度上注意力機制不是影響ViT 性能的主要因素。TSN-Transformer 通過有效地捕捉視頻中的時空關系,使用自注意力機制在時間和空間維度上對特征進行建模,而自注意力機制更適合捕捉長期時序依賴和全局上下文,因此其對局部特征的表達能力較弱。MAPFormer 通過引入并行的最大池化與平均池化以及將常規卷積替換為深度可分離卷積,使模型參數在兩個數據集上相比ViT 均降低60 M左右,實驗精度分別提高4.3% 和2.1%,因此驗證了ViT 模型基礎上改進部分的有效性。
表2 方法對比Tab.2 The comparison of different method
在Miniimagenet 數據集上加入不同模塊融合的實驗結果見表3。其中ViT-a代表去除ViT 中的多頭注意力模塊剩余的基本架構。首先,ViT 的實驗結果,但是參數量較大;其次,將單一的平均池化、最大池化、串行的平均池化與最大池化、并行的平均池化與最大池化填入其基本架構中,實驗結果表明并行的效果最好;最后,將改進后的ViT 與深度可分離卷積進行消融實驗,準確度的提升和參數量的下降有效證明了對patch embedding 改進的有效性。因此,將池化層與深度可分離卷積引入ViT 架構中,與人體動作識別任務相結合可以顯著提高動作識別的準確度,充分證明MAPFormer 的優越性。
表3 消融實驗Tab.3 The ablation experiment
本文通過MAPFormer 模型對圖像數據進行人體動作識別,利用并行的平均池化和最大池化提取全局上下文信息和局部信息,引入深度可分離卷積提取局部特征并降低參數量。該算法在兩個常用的數據集上取得較好的實驗結果,證明改進ViT 與人體動作識別任務相結合的可行性,提高了人體動作識別精度。同時,經過消融實驗對比發現,識別精度隨著模塊的增加而提升。但是,本文僅在ViT 內部的token 混合器進行改進,忽略了對輸入端改進的可能性。由于ViT 對全局信息建模能力較強,對局部關系建模能力不足。因此,可以在輸入端添加對重點區域進行局部標記的模塊,然后通過卷積層對已標記的重點區域進行特征提取,再送入ViT 中以減少冗余信息的影響,從而提高實驗精度。