寫在前面的話:本文來自于本人的一次課程作業(yè)綜述靖榕,當時還是寫了很久的,不想交上去就完了捂蕴,所以發(fā)上來留個紀念譬涡。
摘要
將注意力機制用在計算機視覺任務(wù)上,可以有效捕捉圖片中有用的區(qū)域啥辨,從而提升整體網(wǎng)絡(luò)性能涡匀。計算機視覺領(lǐng)域的注意力機制主要分為兩類:(1) self-attention;(2) scale attention溉知。這兩類注意力從不同的角度進行圖片內(nèi)容理陨瘩。本文將分別就這兩種注意力機制進行說明,并列舉相關(guān)的文獻级乍。
引言
注意力是人類大腦固有的一種信號處理機制舌劳。人類大腦通過快速從視覺信號中選擇出需要重點關(guān)注的區(qū)域,也就是通常所說的注意力焦點玫荣,然后重點處理這些區(qū)域的細節(jié)信息甚淡。通過注意力機制可以利用有限的大腦資源從大量的信息中篩選出有價值的信息。注意力機制最初被用在深度學(xué)習(xí)任務(wù)上是在機器語言翻譯領(lǐng)域崇决,將源語言翻譯成目標語言材诽,目標語言中的詞并非與源語言的所有詞都同等相關(guān),而是僅與特定的幾個詞有相關(guān)性恒傻。因此脸侥,注意力機制可以將這個詞的注意力分配到這些最相關(guān)的詞上。之后盈厘,[1]中提出自注意力機制 (self-attention)睁枕,并將其用于Transformer模塊中,極大提升了翻譯模型的精度和并行性沸手。與傳統(tǒng)的注意力機制不同外遇,self-attention的查詢(query)和鍵(key)屬于同一個域,計算的是同一條語句(或同一張圖片)中不同位置之間的注意力分配契吉,從而提取該語句(或圖片)的特征跳仿。
[2]首先將self-attention用于視覺任務(wù)中,提出了non-local network捐晶,來捕獲圖片(或視頻)中的長程依賴(long-range dependency)菲语。Self-attention機制在視覺任務(wù)妄辩,如語義分割[3],生成對抗網(wǎng)絡(luò)[4]中取得了巨大的成功山上。它解決了卷積神經(jīng)網(wǎng)絡(luò)的局部視野域問題眼耀,使得每個位置都可以獲得全局的視野域。不過佩憾,由于在視覺任務(wù)中哮伟,像素數(shù)極多,利用所有位置來計算每個位置的attention會導(dǎo)致巨大的計算和顯存開銷妄帘;另一方面楞黄,由于self-attention簡單將圖像當成一個序列進行處理,沒有考慮不同位置之間的相對位置關(guān)系抡驼,使得所得到的attention喪失了圖像的結(jié)構(gòu)信息谅辣。之后對于self-attention的一個改進方向就是,在self-attention中加入相對位置信息或絕對位置信息編碼婶恼。
除了self-attention桑阶,視覺任務(wù)中另一類注意力機制為scale attention。與self-attention不同勾邦,scale attention基于每個位置本身的響應(yīng)蚣录。就分類任務(wù)而言,每個位置的響應(yīng)越大眷篇,則其對于最終的分類結(jié)果影響越大萎河,那么這個位置本身的重要性就越強。根據(jù)響應(yīng)大小有選擇地對特征圖進行強化或抑制蕉饼,就可以在空間(或其他維度)上達到分配attention的目的虐杯。[5]所提出的SENet,就相當于channel-wise的attention昧港。類似的還有GENet[6]擎椰,CBAM[7]等,GENet將SENet中的channel-wise attention擴展到了spatial上创肥,CBAM設(shè)計了串行的兩個模塊达舒,分別進行channel-wise attention和spatial-wise attention的計算。另一篇工作residual attention network[8]也屬于這一類attention叹侄,與SENet系列不同之處在于巩搏,本文采用bottom-up top-down形式得到spatial attention,再將其以殘差的形式作用回原來的特征趾代。這一類注意力機制僅僅基于圖像中每個位置本身贯底,對顯著區(qū)域進行增強,非顯著區(qū)域進行抑制撒强,比self-attention機制更接近與人類視覺系統(tǒng)的注意力機制禽捆。
一糯俗、self-attention
1. self-attention簡介
普通卷積將特征圖的每個位置作為中心點,對該位置及其周圍的位置進行加權(quán)求和睦擂,得到新的特征圖上該位置對應(yīng)的濾波結(jié)果,對于邊緣杖玲,必要時可以用0進行填充顿仇。這一操作可以有效提取圖片的局部信息。隨著網(wǎng)絡(luò)加深摆马,卷積層不斷堆疊臼闻,每個位置的視野域也越來越大,網(wǎng)絡(luò)提取到的特征也逐漸由一些low-level的特征囤采,如顏色述呐、紋理,轉(zhuǎn)變到一些high-level的結(jié)構(gòu)信息蕉毯。但是乓搬,簡單通過加深網(wǎng)絡(luò)來獲取全局視野域,所帶來的計算開銷是很大的代虾,并且进肯,更深的網(wǎng)絡(luò)會帶來更大的優(yōu)化難度。
Self-attention操作[2]可以有效地捕獲不同位置之間的long-range dependency棉磨,每個位置的特征都由所有位置的加權(quán)求和得到江掩,這里的權(quán)重就是attention weight。由此乘瓤,每個位置都可以獲取全局的視野域环形,并且不會造成特征圖的退化(分辨率降低),這對于一些密集的預(yù)測任務(wù)衙傀,如語義分割抬吟、目標檢測等,具有很大的優(yōu)勢统抬。
圖1展示了self-attention的網(wǎng)絡(luò)結(jié)構(gòu)拗军。給定輸入X,將兩個1x1卷積分別作用于X上蓄喇,得到的兩個特征利用f(?)得到相關(guān)性矩陣发侵,圖中展示的f(?)為矩陣乘法。最后將相關(guān)性矩陣作用在原特征經(jīng)過1x1卷積變換后的特征上妆偏。
公式(1)展示了第i個位置的相應(yīng)的計算方法刃鳄,其中f(?)為相關(guān)性函數(shù),g(?)為變換函數(shù)钱骂,x_i為輸入第i個位置的特征叔锐,y_i為第i個位置的輸出特征挪鹏,C(x)為歸一化因子,一般采用總位置的個數(shù)愉烙。
2. self-attention的應(yīng)用
由于self-attention可以有效捕獲圖片(或視頻)中的長距離依賴讨盒,從而在不影響特征分辨率的同時獲取全局的視野域,在視覺任務(wù)上引入self-attention步责,可以帶來較大的性能提升返顺。
論文[2]將self-attention用在視頻動作識別任務(wù)上,如圖2蔓肯,對于視頻中動作的識別遂鹊,可能會跨越多幀,需要建立多幀視頻之間的聯(lián)系蔗包,self-attention的這種長距離依賴的特征就能有效建立多幀不同位置之間的聯(lián)系秉扑。
論文[2]將self-attention用在分割任務(wù)上。由于孤立預(yù)測每個位置的類別很容易導(dǎo)致分錯调限,分割任務(wù)需要結(jié)合每個位置的上下文對該位置進行分類舟陆。文章定義了所謂物體上下文(object context),即每個位置所屬于的類別構(gòu)成的集合耻矮,即為這個位置所屬于的object context吨娜。 Object context是由不同位置的特征相似度來定義的,也就是self-attention過程中的相似度矩陣淘钟,將相似度矩陣與原特征進行相乘宦赠,即可將object context作用于該特征圖。由此米母,文章提出了Object Context Network(OCNet)勾扭,如圖3。其中铁瞒,base-OC為基本的self-attention模塊妙色,pyramid-OC和ASP-OC分別將self-attention與PSP模塊和ASPP模塊結(jié)合,在提取object context的同時慧耍,利用不同倍率的pooling操作或不同ratio的dilated convolution獲取多尺度的特征身辨,最大程度的利用context信息對原圖進行分割。不過芍碧,本文雖然提出object context為每個像素及所有其他與其屬于同一類的像素構(gòu)成的集合煌珊,在實際操作的時候卻并不是這樣計算每個位置的object context的,特征上的相似性并不一定代表屬于同一位置泌豆。因此定庵,用object context來給self-attention新的解釋,在說服力上還是存在一定問題的。
論文[4]將self-attention用在了圖像生成任務(wù)上蔬浙,提出了self-attention general adversarial network(SAGAN)猪落。 SAGAN在此前最優(yōu)的結(jié)構(gòu)SNGAN的基礎(chǔ)上,加入了self-attention模塊畴博,使得每個位置的生成不再是僅僅依賴這個位置臨近的其他位置笨忌,而是引入了距離更遠且具有更大信息量的位置,有助于模擬跨越圖像區(qū)域的長距離多級別的依賴關(guān)系俱病;將self-attention用在判別器中官疲,也可以更好的對全局圖像結(jié)構(gòu)執(zhí)行更復(fù)雜的結(jié)構(gòu)約束。如圖4所示庶艾,對于最左邊圖像的生成,每個位置所利用的其他位置信息不僅分布在該位置附近擎勘,還有距離雖然很遠的其他位置咱揍。通過self-attention的利用,SAGAN達到了現(xiàn)有的圖像生成領(lǐng)域的最好效果棚饵,在ImageNet上的生成結(jié)果可以將inception score從之前的36.8提高到52.5煤裙,生成更逼真的圖像。
二噪漾、scale attention
Scale attention是另一種注意力機制硼砰,與self-attention不同,scale attention是只基于key context的欣硼,對圖像中的顯著性區(qū)域進行增強题翰,其他區(qū)域相應(yīng)的進行抑制,從而使得輸出的特征具有更強的區(qū)分性诈胜。這一類注意力機制的代表工作包括豹障,residual attention network[8],squeeze-and-excite network[5]焦匈,gather-and-excite network[6]以及CBAM[7]血公。
1. Bottom-up and top-down形式的scale attention
[8]提出,在分類網(wǎng)絡(luò)中缓熟,網(wǎng)絡(luò)深層比淺層更關(guān)注于被分類的物體累魔,也就是圖片的主體內(nèi)容,這是因為够滑,深層網(wǎng)絡(luò)具有更大的視野域垦写,可以看到更廣的范圍;而淺層網(wǎng)絡(luò)只能看到每個位置及其鄰域彰触。因此梯澜,如果將網(wǎng)絡(luò)較深層的信息作為一種mask,作用在較淺層的特征上,就能更好的增強淺層特征中對于最終分類結(jié)果有幫助的特征晚伙,抑制不相關(guān)的特征吮龄。如圖5所示,將attention作為mask作用在原來特征上咆疗,得到的輸出就會更加集中在對分類有幫助的區(qū)域上漓帚。
因此,文章提出一種bottom-up top-down的前向傳播方法來得到圖片的attention map午磁,并且將其作用在原來的特征上尝抖,使得輸出的特征有更強的區(qū)分度。圖6展示了這種attention的計算方式迅皇。由于更大的視野域可以看到更多的內(nèi)容昧辽,從而獲得更多的attention信息,因此登颓,作者設(shè)計了一條支路搅荞,通過快速下采樣和上采樣來提前獲得更大的視野域,將輸出的特征進行歸一化后作用在原有的特征上框咙,將作用后的特征以殘差的形式加到原來的特征上咕痛,就完成了一次對原有特征的注意力增強。文章還提出了一個堆疊的網(wǎng)絡(luò)結(jié)構(gòu)喇嘱,即residual attention network茉贡,中間多次采用這種attention模塊進行快速下采樣和上采樣。
這篇文章在視覺領(lǐng)域開前向傳播的注意力機制的先河者铜,之后的注意力機制都是采用這種前向傳播過程中得到的attention進行增強腔丧,并且一般為了優(yōu)化方便,都會以殘差的方式進行作烟。
2. Squeeze-and-excite形式的注意力
Squeeze-and-excite是另一類scale attention悔据。與residual attention不同,squeeze-and-excite通過global pooling來獲得全局的視野域俗壹,并將其作為一種指導(dǎo)的信息科汗,也就是attention信息,作用到原來的特征上绷雏。
[5]提出了squeeze-and-excite network(SENet)头滔,提出了channel-wise的scale attention。特征圖的每個通道對應(yīng)一種濾波器的濾波結(jié)果涎显,即圖片的某種特定模式的特征坤检。對于最終的分類結(jié)果,這些模式的重要性是不同的期吓,有些模式更重要早歇,因此其全局的響應(yīng)更大;有些模式不相關(guān),其全局的響應(yīng)較小箭跳。通過對不同通道的特征根據(jù)其全局響應(yīng)值晨另,進行響應(yīng)的增強或抑制,就可以起到在channel上進行注意力分配的作用谱姓。其網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示借尿,首先對輸入特征進行g(shù)lobal pooling,即為squeeze階段屉来,對得到的特征進行線性變換路翻,即為excite階段,最后將變換后的向量通過廣播茄靠,乘到原來的特征圖上茂契,就完成了對不同通道的增強或抑制。SENet在2017年的ImageNet2017的分類比賽上獲得了冠軍慨绳,比之前的工作有了較大的性能提升掉冶。
[6]進一步探索了squeeze-and-excite在更細的粒度上的表現(xiàn),提出了gather-excite操作儡蔓。SENet將每個通道的特征圖通過global pooling得到一個值郭蕉,本文采用了不同步長的pooling(2x疼邀,4x喂江,8x,global)旁振,然后利用上采樣將pooling后的特征插值恢復(fù)到原來大小获询,最后作用在原來特征圖上,具體操作如圖8所示拐袜。不過吉嚣,實驗結(jié)果顯示,global pooling的性能最好蹬铺,將特征區(qū)間劃分得更細致雖然增加了參數(shù)尝哆,但是反而會帶來性能的下降。
[7]也是SENet的一個延續(xù)甜攀,它提出了convolutional block attention module (CBAM)秋泄,將SENet中提出的channel attention擴展到了spatial attention上,通過一個串行的支路规阀,將channel attention和spatial attention連接起來恒序,對原特征進行增強。其網(wǎng)絡(luò)結(jié)構(gòu)如圖9所示谁撼,首先進行channel attention歧胁,對通道進行增強和抑制,這一過程與SENet的操作完全相同,然后在每個位置上進行通道的squeeze和excite操作喊巍,得到與原特征圖一樣分辨率的1通道spatial attention屠缭,再作用到原特征圖上,即為spatial attention操作玄糟。最終的輸出即為spatial attention module的輸出勿她。相比SENet,CBAM帶來的性能提升有限阵翎,在該模塊中其主要作用的還是channel attention模塊逢并。
參考文獻
[1] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
[2] Wang X, Girshick R, Gupta A, et al. Non-local neural networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 7794-7803.
[3] Yuan Y, Wang J. Ocnet: Object context network for scene parsing[J]. arXiv preprint arXiv:1809.00916, 2018.
[4] Zhang H, Goodfellow I, Metaxas D, et al. Self-attention generative adversarial networks[J]. arXiv preprint arXiv:1805.08318, 2018.
[5] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.
[6] Hu J, Shen L, Albanie S, et al. Gather-Excite: Exploiting feature context in convolutional neural networks[C]//Advances in Neural Information Processing Systems. 2018: 9401-9411.
[7] Woo S, Park J, Lee J Y, et al. Cbam: Convolutional block attention module[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 3-19.
[8] Wang F, Jiang M, Qian C, et al. Residual attention network for image classification[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 3156-3164.