【Transformer】DPT: Vision Transformer for Dense Prediction
文章目錄
- 一、背景和動機
- 二、方法
- 2.1 Transformer encoder
- 2.2 Convolutional decoder
- 2.3 處理不同輸入大小
- 三、效果
- 3.1 單目深度估計
- 3.2 語義分割
論文鏈接: https://arxiv.org/pdf/2103.13413.pdf
代碼鏈接: https://github.com/intel-isl/DPT
一、背景和動機
現有的密集預測模型大都是基于卷積神經網絡的模型,基本上都把網絡分為兩部分:
- encoder:也就是 backbone
- decoder:也就是 head
關于密集預測的研究,很多都集中在對解碼頭的改進中,backbone的結構沒有大的突破,如果 encoder 中丟了很多信息,那么 decoder 再好也無法將其恢復。
卷積網絡會通過下采樣的方式來增大感受野并提取多尺度的圖像特征,但是下采樣會丟失掉圖像的一些信息,decoder 也難以恢復。這些信息對分類等粗粒度的任務可能沒那么重要,但對密集預測任務比較重要。
當然也有一些方法對這種信息丟失的問題做了改進,如使用高分辨率的輸入,使用膨脹卷積來增大感受野,在 encoder 和 decoder 之間使用跳連等。但這些方法或者需要很多的卷積堆疊,或者需要很大的計算量。
所以,本文中,作者提出了一種 dense prediction transformer(DPT),是一種基于 transformer 的 encoder-decoder 結構的密集預測結構。本文中,作者基于深度預測和語義分割來進行實驗對比。
二、方法
DPT 的總體結構如圖1左側所示,作者使用 ViT 作為 backbone。
2.1 Transformer encoder
作者使用 ViT 作為 encoder 結構,把原圖切分為不重疊的 token,然后使用 MHSA 獲得這些經過編碼的 token 之間的 attention。
transformer 處理后,token 的數量是不變的,且它們之間的 attention 是一對一的,每個 token 都可以獲得和其他 token 的關系,能夠獲得全局感受野下的特征,空間分辨率也不會改變。
作者使用三種 ViT 變體進行實驗:
- base:每個 patch 被拉平為 768 維
- large:每個 patch 被拉平為 1024 維,
- hybrid:將 ResNet50 的輸出特征作為輸入
- patch size p=16p=16p=16
由于patch embedding 會將每個patch拉平至比其像素維度大的維度,這就表示 embedding 過程能夠學習到一下有益于任務的特征。
2.2 Convolutional decoder
Decoder 過程是為了把這一系列的 token 轉換成不同分辨率的 image-like 特征表達,然后將這些特征聚合起來進行最終的密集預測。
作者提出了一個 three-stage Reassemble operation 來從 transformer encoder 的任意層恢復 image-like 的特征表達:
- sss:是恢復的特征表達相對于原始輸入圖像的比率
- D^\hat{D}D^:輸出特征維度
主要過程:
① 首先,將 token 從 Np+1N_p+1Np?+1 映射為 NpN_pNp?
該操作是為了處理 readout token(類似于 ViT 中的 cls token)
該 token 是為了分類而用的,能夠提取全局信息,作者驗證了三種不同的處理方式:
- 直接忽略該 readout token
- 將 readout token 加在其他token上
- 將 readout token 直接 concat 到其他 token 上,然后再將其影射到 D 維
結果如表 7 所示:
② 之后,根據初始 patch 的position,將其分別放到對應的位置上,得到 image-like 的特征表達
③ 最后,使用 1x1的卷積改變通道,后面接一個 3x3 的卷積進行 resize
如何提取多尺度:
作者從 4 個不同的 stage 提取得到了 4 種不同分辨率的特征圖。淺層的 stage 映射到大分辨率的特征圖。
- ViT Large:從 {5, 12, 18, 24} stage 來提取 token
- ViT Base:從 {3, 6, 9 ,12} stage 來提取 token
- ViT Hybrid:從 {9, 12} stage 來提取 token
- D^=256\hat{D}=256D^=256
如何聚合多尺度的特征:
作者使用 RefineNet-based 特征融合block(圖1右側),然后在每個 fusion stage 逐漸進行2倍上采樣,最終的分辨率為原始分辨率的 1/2,不同任務的 head 是不同的,如圖 1 所示。
2.3 處理不同輸入大小
類似于全卷積網絡,DPT 能夠接受不同大小的輸入。
假設圖像大小除以 p,embedding 過程會產生 NpN_pNp? 個 tokens,NpN_pNp? 會根據圖像大小的不同而變化。transformer 可以處理不同尺寸的輸入序列,但position是與圖像大小有關的,作者參照 ViT 的方法,即使用插值的方法,將 position embedding 線性影射到需要的大小。
三、效果
3.1 單目深度估計
3.2 語義分割
總結
以上是生活随笔為你收集整理的【Transformer】DPT: Vision Transformer for Dense Prediction的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Transformer】HRForme
- 下一篇: 河南出台数字经济发展方案:设立卫星产业基