YOLO改進(jìn)系列之注意力機制(CloAttention模型介紹)

CloAttention來自清華大學(xué)的團(tuán)隊提出的一篇論文CloFormer,作者從頻域編碼的角度認(rèn)為現(xiàn)有的輕量級視覺Transformer中,大多數(shù)方法都只關(guān)注設(shè)計稀疏注意力,來有效地處理低頻全局信息,而使用相對簡單的方法處理高頻局部信息。很少有方法嘗試結(jié)合共享和上下文感知權(quán)重的優(yōu)勢來處理高頻局部信息。模型引入了AttnConv,將普通卷積運算中的全局共享權(quán)重和注意力操作中的上下文感知權(quán)重結(jié)合起來,相比于Transformer能夠更好地捕捉高頻的局部信息,相比于傳統(tǒng)卷積操作能夠更好地處理圖像中不同位置的關(guān)系。
論文地址:https://arxiv.org/pdf/2303.17803.pdf
代碼倉庫:https://github.com/qhfan/CloFormer
模型結(jié)構(gòu)
CloFormer整體結(jié)構(gòu)如下圖所示,本文關(guān)注于CloAttention,即下圖的Clo block模塊。

CloFormer采用兩分支的結(jié)構(gòu)。在局部分支中,AttnConv利用深度可分離卷積(depth-wise Convolution),其具有共享權(quán)重來提取局部特征。然后,利用上下文感知權(quán)重來增強局部特征。與以前通過局部自注意力生成上下文感知權(quán)重的方法不同,AttnConv使用門控機制生成上下文感知權(quán)重,引入了更強的非線性。在全局分支中,使用傳統(tǒng)的注意力操作幫助模型捕捉低頻的全局信息,但對K和V進(jìn)行了下采樣來減少參數(shù)量。最后使用一種簡單的方法來融合局部分支和全局分支的輸出。
CloFormer包含四個stage,每個stage由Clo Block和ConvFFN組成。首先將輸入圖像通過conv stem得到token,stem由四個卷積層組成,每個卷積層的步距分別是2,2,1,1。然后通過四個stage提取分層特征。最后利用全局平均池化和全連接層來生成預(yù)測。
ConvFFN
用ConvFFN取代普通的FFN,將局部信息融入到FFN過程中。ConvFFN與普通的FFN之間的主要區(qū)別在于,ConvFFN在GeLU激活之后采用深度可分離卷積(Depth-wise Conv),這使ConvFFN能夠聚合局部信息。由于使用了深度可分離卷積,ConvFFN可以直接下采樣,而不需要引入PatchMerge模塊。
CloFormer使用兩種類型的ConvFFN。第一種是直接利用跳躍連接的In-Stage ConvFFN。另一種是兩個stage的ConvFFN,在其跳躍連接中,分別利用DWConv和Full-Connected Layer對輸入信息進(jìn)行下采樣和升維。
Clo block
Clo block由一個局部分支和一個全局分支組成。在全局分支中,首先對K和V進(jìn)行下采樣,然后對Q、K、V執(zhí)行傳統(tǒng)注意力過程,以提取低頻全局信息。全局分支有效減少了計算注意力所需的Flop的數(shù)量,并且還使模型具有全局感受野。然而,盡管它有效地捕獲了低頻全局信息,但它對于高頻局部信息的處理有所欠缺。因此在局部分支中提出AttnConv克服這一缺點,AttnConv的結(jié)構(gòu)如下圖所示。

卷積:傳統(tǒng)的殘差塊僅依靠卷積算子來收集高頻局部信息,如上圖(a)示,每個token,卷積算子使用卷積核中國的權(quán)重對其相鄰token進(jìn)行加權(quán)求和。卷積核中的權(quán)重是全局共享的,并且對于不同的token保持不變。
局部自注意力:如上圖(b)示。與卷積相比,局部自注意力使每個token能夠通過特定于token的權(quán)重從其相鄰token中收集信息。這種方法利用上下文感知權(quán)重來提取高頻局部表示,其中不同位置的token與其相鄰token計算相似度分?jǐn)?shù),根據(jù)相似度分?jǐn)?shù)收集信息。
AttnConv:如上圖(c)示。Q、K和V是通過線性變換得到的,首先使用共享權(quán)重(DWConv)對V進(jìn)行信息聚合。然后,通過比傳統(tǒng)注意力操作更強的非線性方法來生成上下文感知權(quán)重。然后使用這些權(quán)重來增強局部特征。同時利用了共享權(quán)重和上下文感知權(quán)重。與傳統(tǒng)卷積相比,AttnConv中上下文感知權(quán)重的使用時模型在局部感知過程中能夠更好地適應(yīng)輸入內(nèi)容。與局部自注意力相比,共享權(quán)重的引入使模型能夠更好地處理高頻信息,從而提高了性能。此外,我們的生成上下文感知權(quán)重的方法引入了比局部自我注意更強的非線性,獲得了更好的性能。需要注意的是,AttnConv中使用的所有運算都是基于卷積的,保留了卷積的平移等變特性。
實現(xiàn)代碼
CloAttention Block的實現(xiàn)代碼如下所示:

YOLOv5模型改進(jìn)
本文在YOLOv5目標(biāo)檢測算法的Backbone和Head部分分別加入CloAttention來增強目標(biāo)提取能力,以下分別是在Backbone以及Head中改進(jìn)的模型結(jié)構(gòu)和參數(shù)(以YOLOv5s為例)。
在Backbone部分


在Head部分


總結(jié)
CloAttention模塊引入了AttnConv,將普通卷積運算中的全局共享權(quán)重和注意力操作中的上下文感知權(quán)重結(jié)合起來,相比于Transformer能夠更好地捕捉高頻的局部信息,相比于傳統(tǒng)卷積操作能夠更好地處理圖像中不同位置的關(guān)系。此外,CloAttention可進(jìn)一步應(yīng)用于YOLOv7、YOLOv8等模型中,歡迎大家關(guān)注本博主的微信公眾號 BestSongC,后續(xù)更多的資源如模型改進(jìn)、可視化界面等都會在此發(fā)布。另外,本博主最近也在MS COCO數(shù)據(jù)集上跑了一些YOLOv5的改進(jìn)模型,實驗表明改進(jìn)后的模型能在MS COCO 2017驗證集上分別漲點1-3%,感興趣的朋友關(guān)注后回復(fù)YOLOv5改進(jìn)。
?