李 翔,張 濤,張 哲,魏宏楊,錢育蓉
新疆大學(xué) 軟件學(xué)院,烏魯木齊 830002
Transformer[1]是一種基于自注意力機(jī)制的模型,不僅在建模全局上下文方面表現(xiàn)強(qiáng)大,而且在大規(guī)模預(yù)訓(xùn)練下對下游任務(wù)表現(xiàn)出卓越的可轉(zhuǎn)移性。這種成功在機(jī)器翻譯和自然語言處理(NLP)領(lǐng)域上得到了廣泛的見證。2018年,Devlin等人[2]在Transformer的基礎(chǔ)上提出了基于掩碼機(jī)制雙向編碼結(jié)構(gòu)的Bert模型,在多種語言任務(wù)上達(dá)到了先進(jìn)水平。此外,包括Bert在內(nèi)許多基于Transformer的語言模型,如GPTv1-3[3-5]、Ro-BERTa[6]、T5[7]等都展現(xiàn)出了強(qiáng)大的性能。
在計(jì)算機(jī)視覺任務(wù)中,由于CNN固有的歸納偏好[8],如平移不變性、局部性等特性,一直占據(jù)著主導(dǎo)地位(CNN[9]、ResNet[10]等)。然而CNN有限的感受野使其難以捕獲全局上下文信息。受Transformer模型在語言任務(wù)上成功的啟發(fā),最近多項(xiàng)研究將Transformer應(yīng)用于計(jì)算機(jī)視覺任務(wù)中。Parmar等人[11]基于Transformer解碼器的自回歸序列生成或轉(zhuǎn)化問題提出了Image Transformer模型用于圖像生成任務(wù)。Carion等人[12]基于Transformer提出了DETR(一種端到端目標(biāo)檢測),其性能取得了與Faster-RCNN相當(dāng)?shù)乃?。最近Dosovitskiy等人[13]提出的另一個(gè)視覺Transformer模型ViT,在結(jié)構(gòu)完全采用Transformer的標(biāo)準(zhǔn)結(jié)構(gòu)。ViT在多個(gè)圖像識別基準(zhǔn)任務(wù)上取得了最先進(jìn)的水平。除了基本的圖像分類之外,Transformer還被用于解決各種其他計(jì)算機(jī)視覺問題,包括目標(biāo)檢測[14-15]、語義分割[16]、圖像處理和視頻任務(wù)[17]等等。由于其卓越的性能,越來越多的研究人員提出了基于Transformer的模型來改進(jìn)廣泛的視覺任務(wù)。
目前,基于Transformer的視覺模型數(shù)量迅速增加,迫切需要對現(xiàn)有研究進(jìn)行整體的概括。在本文中,重點(diǎn)對視覺Transformer的最新進(jìn)展進(jìn)行全面概述,并討論進(jìn)一步改進(jìn)的潛在方向。為了方便未來對不同結(jié)構(gòu)模型的研究,將Transformer模型按結(jié)構(gòu)分類,主要分為純Transformer、CNN+Transformer混合結(jié)構(gòu)以及利用Transformer改進(jìn)的CNN結(jié)構(gòu)。
雖然Transformer在計(jì)算機(jī)視覺領(lǐng)域上展現(xiàn)了其先進(jìn)的性能,但也面臨著參數(shù)量大、結(jié)構(gòu)復(fù)雜、尺寸大小不可調(diào)節(jié)等問題。本文分別從訓(xùn)練技巧、補(bǔ)丁嵌入、自注意力機(jī)制、金字塔架構(gòu)等多方面介紹了Transformer的各種改進(jìn)結(jié)構(gòu)。在本文最后一部分,給出了結(jié)論和面臨的一些問題,并對未來的發(fā)展方向進(jìn)行展望。
2017年,Vaswani等人[1]首次提出了Transformer模型(如圖1所示),它是由6個(gè)編碼器-解碼器模塊組成,每個(gè)編碼器模塊由一個(gè)多頭自注意層和一個(gè)前饋神經(jīng)網(wǎng)絡(luò)層組成;每個(gè)解碼器模塊由三層組成,第一層和第三層類似于編碼器模塊,中間是交叉注意力層,該注意力層k、v的輸入是由相應(yīng)編碼器模塊的輸出組成。本章主要對Transformer中各個(gè)模塊的特點(diǎn)進(jìn)行介紹。
圖1 Transformer整體結(jié)構(gòu)Fig.1 Transformer overall structure
由于Transformer的輸入是一種單詞(句子)特征序列(這種序列具有置換不變性),而Transformer中Attention模塊是無法捕捉輸入的順序,因此模型就無法區(qū)分輸入序列中不同位置的單詞。為了得到輸入序列的位置信息,Transformer將位置編碼添加到輸入序列中以捕獲序列中每個(gè)單詞的相對或絕對位置信息。
(1)絕對位置編碼
絕對位置編碼通過預(yù)定義的函數(shù)生成[1]或訓(xùn)練學(xué)習(xí)得到[2],具有與輸入序列相同的維度,采用相加操作將位置信息添加到輸入序列中。文獻(xiàn)[1]中使用交替正弦函數(shù)和余弦函數(shù)來定義絕對位置編碼,其公式如下:
其中pos是目標(biāo)在序列中的位置,i是維度,d是位置編碼維度。
(2)相對位置編碼。
相對位置編碼不同于絕對位置編碼直接在其輸入序列加入位置信息,而是通過擴(kuò)展自我注意機(jī)制,以有效地考慮相對位置或序列元素之間的距離。在計(jì)算Attention時(shí)考慮當(dāng)前位置與被Attention位置的相對距離。文獻(xiàn)[18]中考慮輸入元素之間的成對關(guān)系在注意力計(jì)算中加入了相對位置向量Ri,j,公式如下:
對Ri,j設(shè)置了截?cái)?、丟棄長遠(yuǎn)距離的無效信息,從而減少了計(jì)算量,可以使模型泛化到在訓(xùn)練過程中未見的序列長度。
其他方式的位置編碼。除了上述方法之外,還有一些其他類型的位置編碼,例如遞歸式的位置編碼[19]、CNN式位置編碼[20]、復(fù)數(shù)式位置編碼[21]、條件位置編碼CPVT[22]等。
注意力機(jī)制模仿了生物觀察行為的內(nèi)部過程,即一種將內(nèi)部經(jīng)驗(yàn)和外部感覺對齊從而增加部分區(qū)域的觀察精細(xì)度的機(jī)制。注意力機(jī)制可以快速提取稀疏數(shù)據(jù)的重要特征,因而被廣泛應(yīng)用于自然語言處理、語音和計(jì)算機(jī)視覺等領(lǐng)域。注意力機(jī)制現(xiàn)在已成為神經(jīng)網(wǎng)絡(luò)領(lǐng)域的一個(gè)重要概念。其快速發(fā)展的原因主要有3個(gè):首先,它是解決多任務(wù)較為先進(jìn)的算法;其次,被廣泛用于提高神經(jīng)網(wǎng)絡(luò)的可解釋性;第三,有助于克服RNN中的一些挑戰(zhàn),如隨著輸入長度的增加導(dǎo)致性能下降,以及輸入順序不合理導(dǎo)致的計(jì)算效率低下。
自注意力機(jī)制是注意力機(jī)制的改進(jìn),其減少了對外部信息的依賴,更擅長捕捉數(shù)據(jù)或特征的內(nèi)部相關(guān)性,通過對序列中元素之間的所有成對交互關(guān)系進(jìn)行建模,讓機(jī)器注意到整個(gè)輸入中不同部分之間的相關(guān)性。自注意力層通過定義3個(gè)可學(xué)習(xí)的權(quán)重矩陣{WQ,WK,WV},將輸入序列投影到這些權(quán)重矩陣上,得到三元組Q=XWQ,K=XWK,V=XWV。自注意力計(jì)算公式如下:
其中dk等于矩陣K的維度大小。
(1)多頭注意力
多頭注意力(如圖1左部分)是在單頭注意力的基礎(chǔ)上將輸入序列X在其通道維度上劃分成h個(gè)頭,即[B,dim]→[B,h,dim/h]。每個(gè)頭使用不同的可學(xué)習(xí)權(quán)重{WQi,WKi,WVi},對應(yīng)生成不同的{Qi,Ki,Vi}組。由于注意力在不同的子空間中分布不同,使用多頭注意力機(jī)制可以形成多個(gè)子空間,從而將輸入映射到不同的空間中,使模型學(xué)習(xí)到輸入數(shù)據(jù)之間不同角度的關(guān)聯(lián)關(guān)系。多頭注意力總的參數(shù)量不變只改變每個(gè)頭的維度,計(jì)算量和單頭自注意力相當(dāng)。
多頭自注意力機(jī)制中并行使用多個(gè)自注意力模塊,不同頭部關(guān)注不同的信息(如全局信息和局部信息)可以豐富注意力的多樣性,從而增加模型的表達(dá)能力。
(2)局部注意力
局部注意力僅在相鄰的部分區(qū)域內(nèi)執(zhí)行注意力,解決了全局注意力計(jì)算開銷過大的問題。對于視覺圖像平面空間上局部區(qū)域計(jì)算,Parmar等人[11]提出了2D局部注意力模塊,網(wǎng)絡(luò)可以更均勻地平衡水平和垂直方向相鄰空間上的局部上下文信息(如圖2所示),大大降低了計(jì)算復(fù)雜度。其中,圖2(a)是local attention整體結(jié)構(gòu)(由局部注意力和前饋網(wǎng)絡(luò)組成),輸入一個(gè)單通道像素q,預(yù)測生成像素q′。mi表示先前預(yù)測生成的像素塊,pq和pi是位置編碼。圖2(b)是2D local attention執(zhí)行過程圖。q表示最后預(yù)測生成的像素,白色網(wǎng)格表示對預(yù)測位置貢獻(xiàn)為0具有屏蔽作用,青色矩形為最后生成的所有像素區(qū)域。
圖2 局部注意力Fig.2 Local attention
(3)稀疏注意力機(jī)制
局部注意力雖然可以減少計(jì)算量,但其無法捕獲全局上下文信息。Child等人[23]提出了稀疏注意力機(jī)制,通過top-k選擇將全局注意退化為稀疏注意。這樣可以保留最有助于引起注意的部分,并刪除其他無關(guān)的信息。這種選擇性方法在保存重要信息和消除噪聲方面是有效的,可以使注意力更多地集中在最有貢獻(xiàn)的價(jià)值因素上。稀疏注意力有兩種方式,第一種步長注意力(如圖3(c)所示)是在局部注意力的基礎(chǔ)同時(shí)每隔N個(gè)位置取一個(gè)元素進(jìn)行注意力計(jì)算。但是對于一些沒有周期性結(jié)構(gòu)的數(shù)據(jù)(如文本),步長注意力關(guān)注的信息可能與該元素并不一定是最相關(guān)的信,可以采用固定式注意力(如圖3(d)所示)將先前預(yù)測的特定位置的信息傳播到未來所有需要預(yù)測的元素中,具體公式如下:
圖3 4種注意力方案Fig.3 Four attention schemes
其中c是超參數(shù)。
Transformer中除了注意力子層之外,每個(gè)編碼器和解碼器都包含一個(gè)完全連接的前饋神經(jīng)網(wǎng)絡(luò),該模塊由兩個(gè)線性層組成,中間包含一個(gè)ReLU激活層。前饋網(wǎng)絡(luò)對序列中不同位置的元素使用相同的處理方式,雖然不同位置的線性變換是相同的,但它們在層與層之間使用不同的參數(shù)。其計(jì)算公式如下:
其中,輸入輸出維度是512,內(nèi)層的維度是2 048。
隨著網(wǎng)絡(luò)深度的增加,數(shù)據(jù)的分布會不斷發(fā)生變化。為了保證數(shù)據(jù)特征分布的穩(wěn)定性,Transformer在注意力層和前饋網(wǎng)絡(luò)層之前加入layer normalization層,這樣可以加速模型的收斂速度,該過程也被稱為前歸一化,其計(jì)算公式如下:
然而每個(gè)殘差塊輸出的激活值被直接合并到主分支上。隨著層數(shù)的加深該激活值會逐層累積,使得主分支的振幅會越來越大。導(dǎo)致深層的振幅明顯大于淺層的振幅,而不同層中振幅的差異過大會導(dǎo)致訓(xùn)練不穩(wěn)定。為了緩解這個(gè)問題,Swin-Transformer v2[24]提出一種后歸一化處理,將layer normalization層從每個(gè)子層之前移到每個(gè)子層之后,這樣可以使得每個(gè)殘差塊的輸出在合并回主分支之前被歸一化。當(dāng)網(wǎng)絡(luò)層數(shù)增加時(shí),主分支的振幅不會累積,其激活幅度也比原始的前歸一化處理要溫和得多,可以大大提高大型視覺模型的穩(wěn)定性。
本節(jié)重點(diǎn)從圖像分類、目標(biāo)檢測兩個(gè)應(yīng)用場景出發(fā),介紹了Transformer在視覺任務(wù)上一些應(yīng)用以及相應(yīng)的改進(jìn)方法。
2.1.1 圖像分類ViT網(wǎng)絡(luò)及其改進(jìn)
Dosovitskiy等人[13]首次提出了ViT(如圖4所示),將原始的Transformer應(yīng)用于圖像分類任務(wù),是一種完全基于自注意力機(jī)制的純Transformer結(jié)構(gòu),網(wǎng)絡(luò)結(jié)構(gòu)中不包含CNN。
圖4 視覺Transformer(ViT)Fig.4 Vision Transformer(ViT)
對于輸入的2D(X∈RC×H×W)圖像數(shù)據(jù),ViT將其重新塑造成一系列扁平的2D圖像塊XP∈Rn×(p2×C),其中C是通道數(shù)。將輸入分辨率為(H,W)的原始圖像,劃分為每個(gè)分辨率為(p,p)的圖像塊(補(bǔ)?。?,其有效的輸入序列長度為n=HW/p2。ViT也采用了與Bert類似的[class]分類標(biāo)記,該標(biāo)記可以表示整個(gè)圖像的特征信息,被用于下游的分類任務(wù)中。ViT通常在大型數(shù)據(jù)集上預(yù)訓(xùn)練,針對較小的下游任務(wù)預(yù)訓(xùn)練。在ImageNet數(shù)據(jù)集上取得了88.55% Top-1的準(zhǔn)確率,超越了ResNet系列模型,打破了CNN在視覺任務(wù)上的壟斷,相較于CNN具有更強(qiáng)泛化能力。
ViT取得了突破性的進(jìn)展,但在機(jī)器視覺領(lǐng)域中也有其缺陷:(1)ViT輸入的token是固定長度的,然而圖像尺度變化非常大;(2)ViT的計(jì)算復(fù)雜度非常高,不利于具有高分辨率圖像的視覺應(yīng)用。針對這些問題,Liu等人[25]提出了Swin Transformer,通過應(yīng)用與CNN相似的分層結(jié)構(gòu)來處理圖像,使Transformer模型能夠靈活處理不同尺度的圖片。Swin Transformer采用了窗口注意力機(jī)制,只對窗口內(nèi)的像素區(qū)域執(zhí)行注意力計(jì)算,將ViT token數(shù)量平方關(guān)系的計(jì)算復(fù)雜度降低至線性關(guān)系。
2.1.2 目標(biāo)檢測DETR網(wǎng)絡(luò)及其改進(jìn)
Carion等人[12]提出的DETR,使用CNN主干網(wǎng)絡(luò)提取緊湊特征表示,然后利用Transformer編碼器-解碼器和簡單的前饋網(wǎng)絡(luò)(FFN)做出最終的目標(biāo)檢測任務(wù)(如圖5所示)。DETR將目標(biāo)檢測視為集合預(yù)測問題,簡化了目標(biāo)檢測的整體流程,將需要手動設(shè)計(jì)的技巧如非極大值抑制和錨框生成刪除,根據(jù)目標(biāo)和全局上下文之間的關(guān)系,直接并行輸出最終的預(yù)測集,實(shí)現(xiàn)了端到端的自動訓(xùn)練和學(xué)習(xí)。在COCO[26]數(shù)據(jù)集上,DETR的平均精確度AP為42%,在速度和精度上優(yōu)于Faster-RCNN。
圖5 DETR模型結(jié)構(gòu)Fig.5 DETR model structrue
DETR具有良好的性能,但與現(xiàn)有的CNN模型相比,它需要更長的訓(xùn)練周期才能收斂。在COCO基準(zhǔn)測試中,DETR需要迭代500次才能收斂,這比Faster R-CNN慢10到20倍。Zhu等人[14]提出的Deformable DETR模型,結(jié)合了形變卷積[27]稀疏空間采樣的優(yōu)點(diǎn)和Transformer長遠(yuǎn)關(guān)系建模提出了可變形注意模塊,該模塊只關(guān)注所有特征圖中突出的關(guān)鍵元素,可以自擴(kuò)展到聚合多尺度特征,而無需借助FPN(特征金字塔)模塊[28],取得了比DETR更好的結(jié)果且訓(xùn)練收斂速度也更快。Sun等人[29]表明導(dǎo)致DETR收斂緩慢的主要這些問題提出了兩種解決方案,即TSP-FCOS和TSP-RCNN。該方法不僅比原始DETR收斂速度快得多,而且在檢測精度和其他基線方面也明顯優(yōu)于DETR。
其次,DETR在檢測小物體的性能上相對較低。目前目標(biāo)檢測模型通常利用多尺度特征從高分辨率特征圖中檢測小物體,然而高分辨率特征圖會導(dǎo)致DETR不可接受的復(fù)雜性。Zheng等人[30]提出的ACT模型,一種自適應(yīng)聚類注意力,通過使用局部敏感哈希(LSH)自適應(yīng)地對查詢特征進(jìn)行聚類,并使用原型鍵在查詢鍵交互附件進(jìn)行聚類,降低了高分辨率圖像的計(jì)算成本,同時(shí)在準(zhǔn)確性上也取得了良好的性能。
2.1.3 其他應(yīng)用方面
其他基于Transformer在視覺各領(lǐng)域中的應(yīng)用:有Image Transformer模型用于圖像生成任務(wù);SETR用于圖像分割模型,使用Transformer編碼器替換基于堆疊卷積層的編碼器進(jìn)行特征提??;ViT-FRCNN[31]模型主要是將ViT與FRCNN的結(jié)合用于大型目標(biāo)檢測任務(wù)中。有基于掩模的視覺Transformer(MVT)[32]用于野外的面部表情識別任務(wù)。表1對Transformer不同的應(yīng)用場景進(jìn)行了分類。
表1 關(guān)于Transformer在視覺任務(wù)中的應(yīng)用Table 1 About application of Transformer in visual tasks
本節(jié)介紹了提高Transformer泛化性能的改進(jìn)方法。現(xiàn)有的工作主要在知識蒸餾、特征融合、樣本量以及泛化能力幾個(gè)方面Transformer提出各種改進(jìn)進(jìn)行研究。
2.2.1 基于知識蒸餾的改進(jìn)
知識蒸餾可以解釋為將教師網(wǎng)絡(luò)學(xué)到的信息壓縮到學(xué)生網(wǎng)絡(luò)中。Touvron等人[33]提出的DeiT(如圖6所示)在Transformer的輸入序列中加入了蒸餾token,該蒸餾token與分類token地位相當(dāng)都參與了整體信息的交互過程,蒸餾token通過使用Convnet教師網(wǎng)絡(luò)對比學(xué)習(xí),可以將卷積的歸納偏好和局部性等特性融合到網(wǎng)絡(luò)中使DeiT更好地學(xué)習(xí)。蒸餾學(xué)習(xí)的過程有兩種方式:一種是hard-label蒸餾,直接將教師網(wǎng)絡(luò)的輸出坐標(biāo)標(biāo)簽;另一種是使用KL散度衡量教師網(wǎng)絡(luò)和學(xué)生絡(luò)的輸出。實(shí)驗(yàn)結(jié)果表明,Transformer通過蒸餾策略可以取得更好的性能。
圖6 DeiT模型結(jié)構(gòu)Fig.6 DeiT model structure
2.2.2 針對訓(xùn)練樣本不足的改進(jìn)
最近的研究發(fā)現(xiàn)[13,33],基于Transformer的網(wǎng)絡(luò)模型參數(shù)量很大,如果訓(xùn)練樣本不足,很容易造成過擬合。為了解決這一問題,可以在訓(xùn)練過程中應(yīng)用數(shù)據(jù)增強(qiáng)和正則化技術(shù),例如Mixup[51]和CutMix等基于混合的數(shù)據(jù)增強(qiáng)方法能夠明顯提高視覺Transformer的泛化能力[33]。CutMix混合標(biāo)簽公式如下:
其中λ是混合標(biāo)簽后的裁剪面積比。如圖7為上述幾種數(shù)據(jù)增強(qiáng)方法的效果對比圖。
圖7 數(shù)據(jù)增強(qiáng)方法Fig.7 Data augmentation methods
然而基于混合生成圖像中可能沒有有效對象,但標(biāo)簽空間仍有響應(yīng)。Chen等人[52]提出了TransMix方法,該方法基于Transformer中的注意力圖生成混合標(biāo)簽。TransMix網(wǎng)絡(luò)根據(jù)每個(gè)數(shù)據(jù)點(diǎn)在注意圖中的響應(yīng)動態(tài)地重新分配標(biāo)簽權(quán)重,標(biāo)簽的分配不再是裁剪到輸入圖像的顯著區(qū)域而是從更準(zhǔn)確的標(biāo)簽空間中分配標(biāo)簽,可以改進(jìn)各種ViT模型性能,對下游密集預(yù)測任務(wù)(圖像分割、目標(biāo)檢測等)表現(xiàn)出了較好的可移植性。其權(quán)重分配計(jì)算公式如下:
其中,·↓為最近鄰下采樣,M是圖像覆蓋區(qū)域的位置。
2.2.3 針對提高泛化能力的改進(jìn)
泛化能力是指網(wǎng)絡(luò)對新樣本的可擴(kuò)展能力。對于泛化能力的改進(jìn)可以從兩個(gè)方面進(jìn)行:一方面由于網(wǎng)絡(luò)對數(shù)據(jù)學(xué)習(xí)的不充分,導(dǎo)致泛化能力不足,Jiang等人[53]提出了補(bǔ)丁標(biāo)記MixToken,將除了分類token以外的所有補(bǔ)丁token生成一個(gè)軟標(biāo)簽計(jì)算loss,通過多監(jiān)督的方式學(xué)習(xí)提高模型的性能,該方法有利于具有密集預(yù)測的下游任務(wù),例如語義分割。另一方面由于高容量的ViT模型容易對訓(xùn)練樣本過擬合,對新樣本表現(xiàn)欠擬合,通過自監(jiān)督學(xué)習(xí)圖像重要的表征信息,可以提高模型的泛化能力,Chen等人[54]提出的MoCoV3,通過將同一圖像不同變換作為正例,不同圖像作為負(fù)例,使用雙分支網(wǎng)絡(luò)對比學(xué)習(xí)圖像的表征信息。
此外,基于Transformer自監(jiān)督學(xué)習(xí)在自然語言處理中的成功啟發(fā)(如BERT掩碼自編碼等),He等人[48]提出了一種簡單、有效且可擴(kuò)展的掩碼自編碼器MAE,從輸入序列中隨機(jī)屏蔽掉75%的圖像塊,然后在像素空間中重建被屏蔽的圖像塊。MAE是一種非對稱的編碼器-解碼器結(jié)構(gòu)(如圖8所示),其中編碼器僅作用于無掩碼標(biāo)記塊,而解碼器通過隱表達(dá)與掩碼標(biāo)記信息進(jìn)行原始圖像重建.該結(jié)構(gòu)采用小型解碼器大幅度減少了計(jì)算量,同時(shí)也能很容易地將MAE擴(kuò)展到一些大型視覺模型中。在ViT-Huge模型上使用MAE自監(jiān)督預(yù)訓(xùn)練后,僅在ImageNet上微調(diào)就可以達(dá)到87.8%的準(zhǔn)確率。在對象檢測、實(shí)例分割和語義分割的遷移學(xué)習(xí)中,使用MAE預(yù)訓(xùn)練要優(yōu)于有監(jiān)督的預(yù)訓(xùn)練。
圖8 非對稱編碼器-解碼器結(jié)構(gòu)(MAE)Fig.8 Asymmetric encoder-decoder structure(MAE)
目前遵循ViT的范式,已經(jīng)提出了一系列Transformer變體來提高視覺任務(wù)的性能。主要的改進(jìn)結(jié)構(gòu)包括補(bǔ)丁嵌入、自注意力改進(jìn)和金字塔架構(gòu)等,本節(jié)主要從這幾個(gè)方面介紹[35]了最新的一些研究方法。
2.3.1 針對補(bǔ)丁嵌入的改進(jìn)方法
(1)基于提高特征提取能力的補(bǔ)丁嵌入方法
Han等人[35]提出的TNT(如圖9所示),將補(bǔ)丁劃分為多個(gè)更小的子補(bǔ)?。ɡ纾瑢?7×27的補(bǔ)丁再細(xì)分為9個(gè)3×3的塊,并計(jì)算這些塊之間的注意),引入了一種新穎的Transformer in Transformer架構(gòu),用于對patch級和pixel級的表征建模。該架構(gòu)利用Inner Transformer block塊從pixel中提取局部特征,Outer Transformer block聚合全局的特征,通過線性變換成將pixel級特征投影到patch空間中將補(bǔ)丁和子補(bǔ)丁的特征進(jìn)行聚合以增強(qiáng)表示能力。
圖9 TNT網(wǎng)絡(luò)結(jié)構(gòu)Fig.9 TNT network structure
Yuan等人[42]提出的CeiT,結(jié)合CNN提取low-level特征的能力設(shè)計(jì)了一個(gè)image-to-token(I2T)模塊,該模塊從生成的low-level特征中提取patch。
Wang等人[55]提出的CrossFormer,利用跨尺度嵌入層CEL為每個(gè)階段生成補(bǔ)丁嵌入,在第一個(gè)CEL層利用4個(gè)不同大小的卷積核提取特征,將卷積得到的結(jié)果拼接起來作為補(bǔ)丁嵌入。
(2)基于長度受限的補(bǔ)丁嵌入
許多視覺Transformer模型面臨的主要挑戰(zhàn)是需要更多的補(bǔ)丁數(shù)才能獲得合理的結(jié)果,而隨著補(bǔ)丁數(shù)的增加其計(jì)算量平方增加。Ryoo等人[56]提出了一種新的視覺特征學(xué)習(xí)器TokenLearner(如圖10所示),對于輸入x,通過s個(gè)ai函數(shù)(該函數(shù)由一系列卷積組成)學(xué)到一個(gè)空間權(quán)重(H×W×1)去乘以x然后通過全局池化,最終得到一個(gè)長度為s的token序列。TokenLearner可以基于圖像自適應(yīng)地生成更少數(shù)量的補(bǔ)丁,而不是依賴于圖像均勻分配補(bǔ)丁。實(shí)驗(yàn)表明使用TokenLearner可以節(jié)省一半或更多的內(nèi)存和計(jì)算量,而且分類性能并不會下降甚至可以提高準(zhǔn)確率。
圖10 TokenLearner模塊Fig.10 TokenLearner module
PSViT[57]采用補(bǔ)丁池化在空間維度上減少補(bǔ)丁的數(shù)量。T2T-ViT[40]通過T2T模塊遞歸地將相鄰的補(bǔ)丁組合成為單個(gè)補(bǔ)丁,這樣可以對相鄰的補(bǔ)丁表示進(jìn)行跨局部建模同時(shí)減少了一半的補(bǔ)丁數(shù)。
2.3.2 針對自注意力機(jī)制的改進(jìn)方法
(1)基于注意力機(jī)制的改進(jìn)方法
PSViT]將相鄰的Transformer層之間建立注意力共享[57,以重用相鄰層之間具有強(qiáng)相關(guān)性的注意力圖。Shazeer等人[58]提出了一種交談注意力機(jī)制,在softmax操作前引入對多頭注意力之間的線性映射,以增加多個(gè)注意力機(jī)制間的信息交流。文獻(xiàn)[59]探索了高維空間中的注意力擴(kuò)展,并應(yīng)用卷積來增強(qiáng)注意力圖。Zhou等人[60]提出了DeepViT模型,通過重新生成注意力圖以增加不同層的多樣性。CaiT將補(bǔ)丁之間的自注意力層與類注意力層分離[61],使類標(biāo)記專注于抽取圖片的信息。XCiT利用互協(xié)方差注意力(XCA)跨特征通道執(zhí)行自注意力計(jì)算[62],其操作具有線性復(fù)雜性,可以對高分辨率圖像進(jìn)行有效處理。表2總結(jié)了上述幾種方法的參數(shù)量和計(jì)算量的一些情況。
表2 模型的參數(shù)量和計(jì)算量對比Table 2 Comparison of model params and FLOPS
(2)針對局部區(qū)域改進(jìn)的局部注意力機(jī)制
Swin Transformer[25]在局部窗口內(nèi)執(zhí)行注意力計(jì)算。RegionViT提出了區(qū)域到局部的注意力計(jì)算[43]。Multi-scale vision Longformer[63]利用Longformer[64]設(shè)計(jì)了自注意力模塊,加入了局部上下文信息。KVT引入了KNN注意力[65]利用圖像塊的局部性通過僅計(jì)算具有前k個(gè)相似標(biāo)記的注意力來忽略不相關(guān)的標(biāo)記。CSWin Transformer提出了一種新穎的十字形窗口自注意力[45],在其基礎(chǔ)上Pale Transformer提出了一種改進(jìn)的自注意力機(jī)制PS-attention[47],在一個(gè)Pale-shaped的區(qū)域內(nèi)進(jìn)行自注意力的計(jì)算(圖11中介紹了Transformer不同注意力機(jī)制的效果圖),可以在與其他的局部自注意力機(jī)制相似的計(jì)算復(fù)雜度下捕獲更豐富的上下文信息。DAT提出了一種新的可變形的局部自注意力模塊[66],該模塊以數(shù)據(jù)依賴的方式選擇自注意力中key和value對的位置。這種更靈活的自注意力模塊能夠聚焦于更相關(guān)的區(qū)域信息。Han等人[67]從稀疏連接、權(quán)重共享和動態(tài)權(quán)重等方面揭示了局部視覺Transformer的網(wǎng)絡(luò)特征。
圖11 Transformer中不同自注意力機(jī)制Fig.11 Different self-attention mechanisms in Transformer
(3)基于局部注意力與全局注意力相結(jié)合的改進(jìn)方法
盡管局部窗口[25]的自注意力機(jī)制是計(jì)算友好的,但缺少豐富的上下文信息。為了捕獲更豐富的上下文信息。Twins將每個(gè)子窗口概括為一個(gè)代表元素執(zhí)行全局子采樣注意力(GSA)[36]。CAT將每個(gè)通道的特征圖分離并使用自注意力來獲取整個(gè)特征圖中的全局信息[68]。Focal Transformer引入了焦點(diǎn)自我注意以捕獲全局和局部關(guān)系[44]。CrossFormer引入了長短距離注意力(LSDA)[55],以捕捉局部和全局視覺信息。TransCNN設(shè)計(jì)一種分層多頭注意力模塊(H-MHSA)[46]可以更有效地對全局關(guān)系進(jìn)行建模。
2.3.3 針對提高計(jì)算效率的改進(jìn)結(jié)構(gòu)——金字塔結(jié)構(gòu)
金字塔結(jié)構(gòu)一般常用于卷積網(wǎng)絡(luò)中,通過縮減空間尺度以增大感受野,同時(shí)也能減少計(jì)算量。但是對于Transformer其本身就是全局感受野,可以直接堆疊相同的Transformer encoder層。而對于密集預(yù)測任務(wù)中當(dāng)輸入圖像增大時(shí),ViT計(jì)算量會急劇上升,如果直接增大patch size(如16×16)得到粗粒度的特征,這對于密集任務(wù)來會有較大的損失。
Wang等人[34]提出的PVT是第一個(gè)采用特征金字塔的Transformer結(jié)構(gòu),包含了漸進(jìn)式收縮金字塔和空間縮減注意力模塊SRA(如圖12所示),SRA通過reshape恢復(fù)3-D(H×W×C)特征圖,重新均分為大小R×R的補(bǔ)丁塊將K、V的補(bǔ)丁數(shù)量縮小R倍,相較于ViT其漸進(jìn)式收縮金字塔能大大減少大型特征圖的計(jì)算量,可以替代視覺任務(wù)中CNN骨干網(wǎng)絡(luò)。
圖12 空間縮減注意力模塊Fig.12 Spatial-reduction attention module
PVTv2[37]和SegFormer[50]通過引入重疊補(bǔ)丁嵌入、深度卷積來改進(jìn)原始PVT,PVTv2在空間縮減注意力模塊中利用具有線性復(fù)雜度的平均池化操作代替了PVT中的卷積操作。這種特征金字塔的設(shè)計(jì)思想使Transformer成為了視覺任務(wù)骨干網(wǎng)絡(luò)的一個(gè)替代方案,諸如Focal Transformer[44]、CrossFormer[55]、RegionViT[43]、Multiscale vision Longformer[63]等都采用了金字塔結(jié)構(gòu)的設(shè)計(jì)方案。
除了上述方法之外,還有一些其他方向可以進(jìn)一步改進(jìn)視覺Transformer,例如位置編碼CPVT[22]、iRPE[69]、殘差連接優(yōu)化策略LayerScale[61]、快捷連接[70]和去除注意力[51,71]、ResMLP[72]、FF Only[73]。
基于深度學(xué)習(xí)的方法在計(jì)算機(jī)視覺領(lǐng)域最典型的應(yīng)用便是CNN,通過共享卷積核來提取特征,一方面可以極大地降低參數(shù)量來避免更多冗余的計(jì)算從而提高網(wǎng)絡(luò)模型計(jì)算的效率,另一方面又結(jié)合卷積和池化使網(wǎng)絡(luò)具備一定的平移不變性和平移等變性。而Transformer依賴于更靈活的自注意力層,在提取全局語義信息和性能上限等方面的表現(xiàn)要優(yōu)于CNN。目前新的研究方向是將這兩種網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢結(jié)合起來。本章從架構(gòu)拼接、內(nèi)部改進(jìn)、特征融合幾個(gè)方面介紹了CNN+Transformer的混合模型。
Carion等人[12]提出的DETR,利用ResNet主干網(wǎng)絡(luò)提取圖像緊湊特征表示生成一個(gè)低分辨率高質(zhì)量的特征圖,有效地減少了輸入前Transformer圖像尺度大小,提高模型速度與性能。
Chen等人[74]提出的Trans-UNet,將Transformer與UNet相結(jié)合,利用Transformer從卷積網(wǎng)絡(luò)輸出的特征圖中提取全局上下文信息,然后結(jié)合Unet網(wǎng)絡(luò)的U型結(jié)構(gòu)將其與高分辨率的CNN特征圖通過跳躍連結(jié)組合以實(shí)現(xiàn)精確的定位。在包括多器官分割和心臟分割在內(nèi)的不同醫(yī)學(xué)應(yīng)用中取得了優(yōu)于各種競爭方法的性能。
Xiao等 人[75]提出的ViTc,將Transformer中Patch Embedding模塊替換成Convolution,使得替換后的Transformer更穩(wěn)定收斂更快,在ImageNet數(shù)據(jù)集上效果更好。
Wu等人[38]提出的CvT結(jié)合了卷積投影來捕獲空間結(jié)構(gòu)和低級細(xì)節(jié)。Refiner應(yīng)用卷積來增強(qiáng)自注意力的局部特征提取能力[59]。CoaT通過引入卷積來增強(qiáng)自注意力設(shè)計(jì)了一種卷積注意力模塊該模塊[39],可以作為一種有效的自注意力替代方案。Uni-Former將卷積與自注意力的優(yōu)點(diǎn)通過Transformer進(jìn)行無縫集成[76],在淺層與深層分別聚合局部與全局特征,解決了高效表達(dá)學(xué)習(xí)的冗余與依賴問題。Liu等人[46]提出的TransCNN網(wǎng)絡(luò),通過在自注意力塊后引入CNN層使網(wǎng)絡(luò)可以繼承Transformer和CNN的優(yōu)點(diǎn)。CeiT將前饋網(wǎng)絡(luò)(FFN)與一個(gè)CNN層相結(jié)合[42],以促進(jìn)相鄰補(bǔ)丁之間的相關(guān)性。Le-ViT[77]在non-local[78]的基礎(chǔ)上提出了一種用于快速推理圖像分類的混合神經(jīng)網(wǎng)絡(luò)。PiT利用卷積池化層實(shí)現(xiàn)Transformer架構(gòu)的空間降維[41]。ConViT引入了一個(gè)新的門控位置自注意力層(GPSA)[79]以模擬卷積層的局部性。
CNN與Transformer結(jié)合的另一形式是通過特征融合,采用一種并行的分支結(jié)構(gòu)將中間特征進(jìn)行融合。
(1)模型層特征融合
Peng等人[80]提出了Conformer(如圖13),通過并行結(jié)構(gòu)將Transformer與CNN各自的特征通過橋架相互結(jié)合實(shí)現(xiàn)特征融合,使CNN的局部特征和Transformer的全局特征得到最大程度的保留。
圖13 DETR模型結(jié)構(gòu)Fig.13 DETR model structrue
(2)交叉注意力特征融合
Chen等人[81]提出了MobileFormer,將MobileNet和Transformer并行化,使用雙向交叉注意力將兩者連接起來即mobile-former塊,與標(biāo)準(zhǔn)注意力相比k和v通過局部特征直接投影得到,節(jié)省了計(jì)算量使注意力更多樣化。實(shí)驗(yàn)結(jié)果表明,該方法在準(zhǔn)確性和計(jì)算效率都取得了顯著效果。
Wang等人[78]提出了Non-local模塊(如圖14的A)旨在通過全局注意力捕獲長距離依賴關(guān)系,將某個(gè)位置的輸出等于特征圖中所有位置的特征加權(quán)和,使局部CNN網(wǎng)絡(luò)得到了全局的感受野和更豐富的特征信息。
此外為了減少全局注意力計(jì)算的負(fù)擔(dān),Huang等人[82]提出了十字交叉注意模塊,該模塊僅在十字交叉路徑上生成稀疏注意圖(如圖14的B),通過反復(fù)應(yīng)用交叉注意力,每個(gè)像素位置都可以從所有其他像素中捕獲全局上下文信息。與Non-local塊相比,十字交叉注意力減少了11倍GPU顯存,具有O(√N(yùn))的復(fù)雜度。Srinivas等人[83]提出的BoTNet,將多頭注意力模塊multihead self-attention(MHSA)替代ResNet bottleneck中的3×3卷積,其他沒有任何改變,形成新的網(wǎng)絡(luò)結(jié)構(gòu),稱為bottleneck Transformer,相比于ResNet等網(wǎng)絡(luò)提高了再分類,目標(biāo)檢測等任務(wù)中的表現(xiàn),并且比EfficientNet快1.64倍。
圖14 Non-local塊Fig.14 Non-local blocks
動態(tài)權(quán)重是指為每個(gè)實(shí)例學(xué)習(xí)專門的連接權(quán)重,以增加模型的容量。文獻(xiàn)[67]中利用動態(tài)權(quán)重來增加網(wǎng)絡(luò)容量,在不增加模型復(fù)雜度和訓(xùn)練數(shù)據(jù)的情況下提高了模型性能。
Hu等人[84]提出了LR-Net,根據(jù)局部窗口內(nèi)像素與特征之間的組合關(guān)系重新聚合其權(quán)重。這種自適應(yīng)權(quán)重聚合將幾何先驗(yàn)引入網(wǎng)絡(luò)中,實(shí)驗(yàn)表明該方法可以改進(jìn)圖像識別任務(wù)。
大體上,動態(tài)權(quán)重在卷積網(wǎng)絡(luò)中應(yīng)用可以分為兩類:一類是學(xué)習(xí)同構(gòu)連接權(quán)重,如SENet[85]、動態(tài)卷積[86];另一類是學(xué)習(xí)每個(gè)區(qū)域或每個(gè)位置的權(quán)重(GENet[87]、Lite-HRNet[88]、Involution[89])。
Trockman等人[90]提出的ConvMixer模型,僅使用的標(biāo)準(zhǔn)卷積直接將補(bǔ)丁作為輸入,其性能要優(yōu)于ViT、MLP-Mixer以及ResNet等視覺模型。這種補(bǔ)丁嵌入結(jié)構(gòu)允許所有下采樣同時(shí)發(fā)生,并立即降低內(nèi)部分辨率,從而增加視覺感受野大小,使其更容易混合遠(yuǎn)處的空間信息。如表3展示了ConvMixer與幾種方法的對比情況。
表3 ConvMixer對比實(shí)驗(yàn)Table 3 ConvMixer comparative experiment
本文介紹了視覺Transformer模型基本原理和結(jié)構(gòu),分別從面向性能優(yōu)化和面向結(jié)構(gòu)改進(jìn)兩個(gè)方面對視覺Transformer的關(guān)鍵研究問題和最新進(jìn)展進(jìn)行了概述和總結(jié),同時(shí)以圖像分類和目標(biāo)檢測為例介紹了Transformer在視覺任務(wù)上的應(yīng)用情況。視覺Transformer作為一種新的視覺特征學(xué)習(xí)網(wǎng)絡(luò),文中結(jié)合CNN對比總結(jié)了兩種網(wǎng)絡(luò)結(jié)構(gòu)的差異性和優(yōu)缺點(diǎn),并提出了Transformer+CNN的混合結(jié)構(gòu)。CNN和Transformer相結(jié)合具有比直接使用純Transformer更好的性能。然而兩者結(jié)合的方式有很多不同的方法,如文獻(xiàn)[7]中應(yīng)用CNN提取緊湊特征,文獻(xiàn)[50]中重疊補(bǔ)丁生成等。兩者如何相結(jié)合才能更有效?對此,開發(fā)一個(gè)更強(qiáng)大通用的卷積ViT模型還需要進(jìn)行更多研究。
目前,大多數(shù)Transformer變體模型計(jì)算成本很高,需要大量的硬件和計(jì)算資源[91-94]。未來一個(gè)新的研究方向是應(yīng)用CNN剪枝原理對Transformer的可學(xué)習(xí)特征進(jìn)行剪枝,降低資源成本,使模型可以更容易地部署在一些實(shí)時(shí)設(shè)備中(如智能手機(jī)、監(jiān)控系統(tǒng)等)。自監(jiān)督學(xué)習(xí)的方式可以在無標(biāo)注數(shù)據(jù)上對模型進(jìn)行表征學(xué)習(xí),基于Transformer的自監(jiān)督學(xué)習(xí)可以解決模型對數(shù)據(jù)的依賴性從而有望實(shí)現(xiàn)更強(qiáng)大的性能。此外,視覺Transformer采用了標(biāo)準(zhǔn)的感知器數(shù)據(jù)流方式,為時(shí)序數(shù)據(jù)、多模態(tài)數(shù)據(jù)融合和多任務(wù)學(xué)習(xí)提供了一種統(tǒng)一的建模方法,基于Transformer模型有望實(shí)現(xiàn)更好的信息融合和任務(wù)融合。