點擊下方“AI算法與圖像處理”,一起進步!
重磅干貨,第一時間送達
寫在前面
目前,Transformer在計算機視覺方面取得了巨大的成功,但是如何在圖像中更加有效的分割patch仍然是一個問題?,F(xiàn)有的方法通常是將圖片分成多個固定大小的patch,然后進行embedding,但這可能會破壞圖像中的語義。
為了解決這個問題,作者提出了一個可變形的分patch(DePatch)模塊,它以數(shù)據(jù)驅(qū)動的方式將圖像自適應地分割成具有不同位置和大小的patch,而不是使用預定義的固定patch分割方式。通過這個方法,就可以避免原來方法對語義信息的破壞,很好地保留patch中的語義信息。
DePatch模塊可以作為一個即插即用的模塊,嵌入到不同的Transformer結構中,以實現(xiàn)端到端訓練。作者將DePatch模塊嵌入到Pyramid Vision Transformer (PVT)中,得到一個新的Transformer結構,Deformable Patch-based Transformer (DPT) 。
最后作者在分類和檢測任務上進行了實驗,結果表明,DPT在ImageNet分類上的準確率為81.9%;在MSCOCO數(shù)據(jù)集上,使用RetinaNet進行目標檢測的準確率為43.7% box mAP,使用MaskR-CNN的準確率為44.3%。
論文和代碼地址

DPT: Deformable Patch-based Transformer for Visual Recognition
論文:https://arxiv.org/abs/2107.14467
代碼:https://github.com/CASIA-IVA-Lab/DPT
Motivation
近年來,Transformer在自然語言處理和語音識別方面取得了重大進展,逐漸成為序列建模任務的主流方法。受此啟發(fā),一些研究者成功地將Transformer應用于計算機視覺領域,并在圖像分類、目標檢測和語義分割等方面取得了良好的性能。
與NLP任務類似,Transformer通常將輸入圖像分成一系列固定大小的patch,然后通過Multi-head Self-Attention來建模不同patch之間的上下文關系。與卷積神經(jīng)網(wǎng)絡相比,Transformer可以有效地捕獲序列內(nèi)的長距離依賴關系,提取的特征包含更多的語義信息。雖然目前Vision Transformer在CV任務中達到了比較不錯的效果,但依舊存在一些問題。目前的工作大多都沒有考慮圖像的內(nèi)容信息,使用了一個固定大小的patch embedding。這種“hard” patch分割方法可能會帶來兩個問題:
1)圖像中對象的局部結構被拆分 。(一個固定的patch很難捕獲完整的與對象相關的局部結構,因為對象在不同的圖像中具有不同的尺度。如上圖a所示,老鷹的尾巴、頭等局部結構都被拆分到了不同patch中)2)不同圖像之間的語義不一致性 。(不同圖像中的同一對象可能有不同的幾何變化(縮放、旋轉等)。分割圖像patch的固定方法忽略了這種變化,可能將不同圖片中的同一對象處理成不同的信息。)因此,這些固定的patch分割方法可能會破壞語義信息,從而導致性能下降。為了解決上述問題,本文提出了一個新的模塊(DePatch),以一種可變形的方式對圖像進行分割,從而在一個patch中保留語義信息,減少圖像分割造成的語義破壞。具體實現(xiàn)上,DePatch模塊能夠根據(jù)輸入的視覺特征,學習每個patch的偏移(offset)和大?。╯cale),從而生成可變形的patch(如上圖b所示)。此外這是一個輕量級的即插即用模塊,能夠被用于各種Transformer結構中。在本文,作者將DePatch模塊嵌入到了Pyramid Vision Transformer (PVT)中,形成Deformable Patch-based Transformer(DPT)。通過自適應調(diào)整的可變形patch,DPT能夠基于局部的上下文信息為每個patch生成完整、魯棒、有辨別性的特征。
方法
3.1. 回顧Vision Transformer
Vision Transformer由三部分組成,分別是:patch embedding層、Multi-head Self-Attention(MSA)層和feed-forward multi-layer perceptrons(MLP)層。網(wǎng)絡從patch embedding層開始,該模塊將輸入圖像轉換為一系列token序列,然后通過MSA和MLP,獲得最終的特征表示。patch embedding層將圖像劃分為固定大小和位置的patch,然后將他們通過一個線性的embedding層轉換到token。我們用一個的張量表示輸入的圖像特征,先前的工作就是將特征轉換到固定大小的N個patch,每個patch的大小為:現(xiàn)在我們將分Patch的過程,仔細的展開講一下,第i個patch可以被看做是一個矩形區(qū)域,這個矩形的中心坐標可以表示為:因為Patch的大小和位置是固定的,所以就能夠計算出這個patch左上角和右下角的坐標:
每個patch中有個像素,這些像素的坐標可以表示為:
將這些特征鋪平,并由線性層處理,就能夠獲得當前patch的embedding的表示:
MSA聚合了整個輸入序列上的相對信息,給每個token都能有全局感知。首先將這些token embedding到三個不同的空間Q、K、V,然后Q和K相乘得到attention map,再將attention map與V相乘得到新的特征:
3.2. DePatch模塊

上面描述的patch embedding過程是固定不變的。位置和大小??是固定的,因此每個patch的矩形區(qū)域不可更改。為了更好地定位重要的結構和處理幾何變形,作者提出了一個可變形的patch embedding。
首先,作者將每個patch的位置和大小轉換為基于輸入內(nèi)容的預測參數(shù)。對于每一個位置,模型預測了一個偏移量,允許patch圍繞著原始中心移動。至于大小,模型只需用預測的和替換固定的patch大小的??。這樣就可以得到一個新的矩形區(qū)域,將其左上角表示為,右下角表示為。根據(jù)預測的,和可以表示為:如上圖所示,作者添加了一個新的分支來預測這些參數(shù)。基于輸入特征圖,模型首先預測所有patch的參數(shù),然后將其預測區(qū)域的特征進行embedding。
其中,是一個線性層。在訓練的開始,初始化為s,其他所有的參數(shù)都被初始化為0(為了保證最開始優(yōu)化的時候,就是以前ViT的patch embedding方法)。
在確定矩形區(qū)域后,就可以提取每個patch的特征?,F(xiàn)在主要的問題是區(qū)域具有不同的大小,并且預測的坐標通常是小數(shù)的。作者采用采樣和插值的方式解決了這個問題。給定區(qū)域的左上角和右下角坐標(??_1,??_1)(??_2,??_2)k \times kk是一個超參數(shù)。embedding的過程為將采樣點的特征用FC進行embedding,得到patch embedding:
采樣點的坐標大多是小數(shù)的,在計算采樣點的特征是,作者采用了雙線性插值,用周圍點的特征,通過雙線性插值得到當前點的特征:
3.3. Overall Architecture

上圖展示了VPT和DPT的結構,左邊為VPT的結構,右邊為DPT的結構。
DePatch是一個自適應的模塊,可以改變patch的位置和大小。由于DePatch可以作為一個即插即用模塊,因此很容易地可以將DePatch合并到各種Vision Transformer中。作者基于PVT實現(xiàn)了DPT,PVT有四個stage,因此就有四個不同尺度的特征(上圖左)。作者將PVT中stage2、stage3、stage4的patch embedding模塊換成了DePatch,其他設置保持不變(上圖右)。
實驗
4.1. Image Classification

如上表所示,最小的DPT-Tiny獲得了77.4%的top-1精度,比相應的baseline PVT模型高出2.3%。DPT-Medium實現(xiàn)了81.9%的top-1精度,甚至優(yōu)于具有更多參數(shù)和計算量的模型,如PVT-Large和DeiT-Base。
4.2. Object Detection

上表比較了DPT與PVT、ResNe(X)t的結果。在相似的計算量下,DPTSmall的性能比PVT-Small好2.1% mAP、比Resnet50好6.2% mAP。
Mask-RCNN上的結果相似。DPT-Small模型在1×schedule下,實現(xiàn)了43.1%的box mAP和39.9%的mask mAP,比PVT-Small高出2.7%和2.1%。
在DETR上,DPT-Small實現(xiàn)了37.7%的box mAP,比PVT-Small高3.0%,比ResNet50高5.4%。
4.3. Ablation Studies
Effect of module position

在PVT中,有四個patch embedding模塊,第一個直接操作輸入圖像,其余的操作上一個stage輸出的特征。由于原始圖像包含的語義信息很少,因此第一個模塊很難預測其自身區(qū)域之外的偏移量和大小。因此,作者只嘗試替換其余的三個patch embedding模塊。結果見上表。第2階段、第3階段和第4階段獲得的提升分別為0.3%、1.0%和1.5%。替換的patch embedding模塊越多,得到的提升就越多。
Effect of number of sampling points

作者通過實驗來探究應該在一個預測區(qū)域采樣多少點。采樣更多的點會略微增加FLOPs,但也能根據(jù)更大的區(qū)域獲取特征。將采樣點從2×2增加到3×3又提高了0.8%,而進一步增加到4×4僅提高了0.2%。由于采樣4×4點只得到很少改善。在實驗中,作者將??=3作為默認配置。

采樣更多的點將有利于DPT與更強的能力,從更大的區(qū)域提取特征。從上圖可以看出,隨著采樣點數(shù)量的增加,模型預測的scale也會增大。
Decouple offsets and scales

DePatch學習了每個patch的偏移量和大小。作者解耦了這兩個因素,以探究每個因素如何影模型,結果如上表所示。只有預測偏移量能比baseline提高1.5%,再預測scale得到0.8%的提升。
Analysis for fast convergence

從上圖可以看出,加入DePatch之后,模型的收斂速度加快。
Effect of parameter initialization

4.4. 可視化

上圖說明了DePatch預測的patch位置和大小良好,可以捕獲重要特征。
總結
本文介紹了一種用于Patch分割的可變形模塊DePatch,避免了以前方法分Patch時對模型性能造成的損失。它促使模型從對象相關區(qū)域提取Patch信息,使模型對幾何變形更加魯棒。該模塊可作為即插即用模塊,改進各種Vision Transformer結構,因此作者在PVT上加入了DePatch模塊,得到DPT。大量的圖像分類和目標檢測實驗表明,DPT可以提取更好的特征,其性能優(yōu)于基于CNN的模型和其他Vision Transformer結構。
努力分享優(yōu)質(zhì)的計算機視覺相關內(nèi)容,歡迎關注:請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復:c++,即可下載。歷經(jīng)十年考驗,最權威的編程規(guī)范!
在「AI算法與圖像處理」公眾號后臺回復:CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文