
摘要:Transformer這種具有強力全局編碼能力的網(wǎng)絡最近被應用于計算機視覺任務,例如ViT直接使用了一個Transformer來解決圖像分類任務。為了處理二維圖像數(shù)據(jù),ViT簡單地將圖像分割,并映射成一個一維的序列。這種簡單的分割使得圖像固有的結構信息丟失,使得網(wǎng)絡很難關注到重要的物體區(qū)域。為了解決這個問題,本文提出了一種迭代漸進采樣策略來定位重要區(qū)域。具體來說,本文提出的progressive sampling模塊,在每次迭代都會利用全局信息對采樣位置進行更新,從而使得網(wǎng)絡可以逐漸關注到感興趣的信息。

論文鏈接:https://arxiv.org/pdf/2108.01684.pdf
作者:岳曉宇(博智感知交互研究中心);孫書洋(牛津大學);曠章輝(商湯科技);魏萌(清華大學);Philip Torr(牛津大學);張偉(商湯科技、上海交通大學清源研究院);林達華(香港中文大學、博智感知交互研究中心)。
在最近的研究中,具有強大全局編碼能力的Transformer結構開始被用于諸如圖像分類、目標檢測等視覺任務。
我們知道Transformer的計算復雜度與輸入序列長度的平方成正比,直接使用圖像作為輸入是不現(xiàn)實的。因而ViT使用了一種簡單的方法對輸入圖像進行處理,如圖一(a), ViT直接將圖像進行規(guī)則的劃分,每一部分圖像(patch)直接映射成一個token。雖然這種簡單的劃分極大的減少了運算量并取得了很好的效果,但是它的缺點也是顯而易見的,首先這種劃分可能會將關鍵的部分劃分到不同的patch,例如圖一(a)中的貓頭被強行分割成了不同的部分,其次這種劃分是與圖像的內容無關的,大部分patch的內容都是背景。在本文中,我們提出了一種progressive sampling(PS)模塊,來解決直接劃分patch帶來的問題。PS模塊通過一種迭代的方式對圖像進行采樣,它是基于transformer的,我們直接將它用于ViT中,得到了PS-ViT。如圖一(b),我們的PS模塊對輸入進行點采樣,并在每次迭代中,為每個采樣點預測一個偏移量,對采樣位置進行更新,由此每個采樣點可以逐步地逼近圖像中的關鍵區(qū)域。PS模塊的結構如圖二所示。整個網(wǎng)絡中PS模塊一共進行N次迭代,F(xiàn)是輸入的圖像特征圖,pt是當前迭代次數(shù)t的采樣位置,每個采樣點在F中單獨采樣,由于采樣點的坐標是非整數(shù),因而我們采用了雙線性插值來進行點采樣。采樣出的特征與采樣點的位置編碼和上一次迭代的輸出進行相加,并將結果送入一層Transformer encoder,得到本次迭代的輸出Tt。值得注意的是,由于我們的采樣位置是非整數(shù),因而這里不能用ViT中基于patch index的位置編碼,我們直接使用了一層全連接層來得到采樣點的位置編碼。當前迭代的輸出Tt經(jīng)過一層全連接層,預測得到了ot為每個采樣位置對應的偏移量,與pt相加得到了下一次迭代的采樣位置。對于第一次迭代,初始的采樣位置如圖一(b)所示,為平均劃分的每個patch的中心點。PS-ViT的整體結構如圖三所示。網(wǎng)絡主要包括四個部分:1)特征提取模塊;2)PS模塊;3)ViT;4)分類模塊。其中特征提取模塊是用來生成特征圖F的,這個模塊是幾層卷積,因而F中的每個像素可以對應到原圖中的一個patch,對F中的點采樣可以近似為對原圖中的patch進行采樣。ViT保持了原版設計,我們同樣在輸入上添加了一個classification token,但是這里并未使用位置編碼,因為位置信息在PS模塊中已經(jīng)被添加了。不同的PS-ViT配置如表一所示,N是PS模塊迭代的次數(shù),Nv是ViT的層數(shù),我們保持兩者相加等于一個固定數(shù)值來限制整個網(wǎng)絡中transformer的層數(shù)。C是特征的維度,M是multi-head self-attention的head數(shù)量??紤]到PS模塊中的每次迭代都具有相同的輸入F,我們嘗試在PS模塊中共享參數(shù),即不同的迭代中使用相同的encoder和全連接層,以此來減少網(wǎng)絡的參數(shù)量,表一中的十字標識表示在PS模塊中共享參數(shù),可以看到大約25%的參數(shù)量可以被節(jié)省。我們在網(wǎng)絡結構后添加數(shù)字表示橫向和縱向采樣點數(shù)量,例如PS-ViT-B/14表示使用了14*14個采樣點。PS-ViT在ImageNet上的效果如表二所示,PS-ViT-Ti/14與ResNet-18相比,在減少了6.9M參數(shù)量和0.2B FLOPs的同時獲得了5.8%的top-1精度提升。PS-ViT-B/10與ResNet-50相比也有較大提升。與基于Transformer的方法相比,PS-ViT同樣具有優(yōu)勢。PS-ViT-B/18取得了82.3%的top-1精度,在高于DeiT-B的同時,只需要21M參數(shù)量和8.8B FLOPs。在本文中我們設計了實驗來驗證PS模塊的有效性。在表三中我們驗證了不同的采樣點數(shù)量對效果的影響,在表四中驗證了PS模塊迭代次數(shù)的影響。表三中的n表示沿著x方向和y方向分別的采樣點數(shù)量,可以看到,隨著采樣點數(shù)量增加PS-ViT的效果和FLOPs都逐漸提高,當n>16時提高變得不明顯,我們選擇了14作為默認值。表四中的N表示PS模塊迭代次數(shù),在這個實驗中我們保持整個模型中總的transformer層數(shù)不變。當N=1時,表示只使用平均分布的初始點進行采樣,并未對采樣位置進行更新??梢钥吹诫S著迭代次數(shù)增加,PS-ViT效果逐漸提高。當N=8時效果最好,當N大于8時效果開始下降。由于我們保持整個網(wǎng)絡的transformer層數(shù)為14,增加迭代次數(shù)會導致ViT模塊層數(shù)減少,從而影響效果。表五顯示了PS模塊不同的迭代中共享參數(shù)的結果。可以看到在PS模塊中共享參數(shù)可以在效果只下降很少的情況下,極大的減少參數(shù)量。這種特性使得PS-ViT更適合在嵌入式設備中使用。圖四中我們對PS模塊預測出的偏移量進行了可視化。圖中每個箭頭的起點為初始化的采樣點,可以看到它們是平均分布的。箭頭的終點是PS模塊結束時,最后一次迭代的采樣位置??梢钥吹讲蓸游恢么篌w上是向著圖像中的前景部分移動,并最終收斂到關鍵部分(例如雞頭)附近??梢暬f明了我們PS模塊的有效性。PS-ViT的代碼已經(jīng)開源: https://github.com/yuexy/PS-ViT ,歡迎大家一起交流。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)特約稿件,未經(jīng)授權禁止轉載。詳情見轉載須知。