YOLO改進系列之注意力機制(GlobalContext模型介紹)

模型結(jié)構(gòu)
通過捕獲long-range dependency提取全局信息,對各種視覺任務(wù)都是很有幫助的,典型的方法是Non-local Network自注意力機制。對于每個查詢位置(query position),Non-local network首先計算該位置和所有位置之間一個兩兩成對的關(guān)系,得到一個attention map。然后對attention map所有位置的權(quán)重加權(quán)求和得到匯總特征,每一個查詢位置都得到一個匯總特征,將匯總特征與原始特征相加得到最終輸出。對于某個query position,nNon-local network計算的另一個位置與該位置的關(guān)系即一個權(quán)重值表示這個位置對query位置的重要程度。但現(xiàn)有研究發(fā)現(xiàn)不同的query位置其對應(yīng)的attention map幾乎一樣,如下圖所示。

GlobalContext作者觀察發(fā)現(xiàn)non-local block針對每個query position計算的attention map最終結(jié)果是獨立于查詢位置的,那么就沒有必要針對每個查詢位置計算了,因此提出計算一個通用的attention map并應(yīng)用于輸入feature map上的所有位置,大大減少了計算量的同時又沒有導(dǎo)致性能的降低。此外,結(jié)合SE block,設(shè)計得到GlobalContext,既輕量又可以有效地建模全局上下文。GC Block結(jié)合了Non-local block和SE block的優(yōu)點,多個任務(wù)上均超過了NLNet和SENet。GlobalContext的整體結(jié)構(gòu)并不復(fù)雜,如下圖所示。

論文地址:https://arxiv.org/pdf/1904.11492.pdf
代碼倉庫:https://github.com/xvjiarui/GCNet
實現(xiàn)代碼
GlobalContext的實現(xiàn)代碼如下所示:

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


在Head部分


總結(jié)
GlobalContext計算一個通用的attention map并應(yīng)用于輸入feature map上的所有位置,大大減少了計算量的同時又沒有導(dǎo)致性能的降低,既輕量又可以有效地建模全局上下文。此外,GlobalContext可進一步應(yīng)用于YOLOv7、YOLOv8等模型中,歡迎大家關(guān)注本博主的微信公眾號 BestSongC,后續(xù)更多的資源如模型改進、可視化界面等都會在此發(fā)布。另外,本博主最近也在MS COCO數(shù)據(jù)集上跑了一些YOLOv5的改進模型,實驗表明改進后的模型能在MS COCO 2017驗證集上分別漲點1-3%,感興趣的朋友關(guān)注后回復(fù)YOLOv5改進。
?