# Mask2Former (CVPR 2022) * **論文:** https://arxiv.org/abs/2112.01527 * **主要特點:** 1. 主要是對於MaskFormer去做一些改良,占用記憶體太大,訓練太慢 3. 使用==Masked attention==只對前景區域計算attention就好,提升訓練速度 4. ==捨棄Dropout==提升訓練速度 5. 使用multi-scale的方法增加準確度 6. 在計算loss的時候只隨機採樣幾個點去計算,減少內存開銷 7. ==調換decoder中的self-attention和cross-attention的順序== * **方法:** 1. ++網路架構:++ 整體架構基本與MaskFormer相同,只是在一些細節上進行改進。從架構圖中最明顯的差異是==使用multi-scale的feature==輸入給transformer decoder,還有==增加了一個mask的機制==,並且==交換了decoder中的self-attention和cross-attention的順序==。  而mask要怎麼產生呢? 可以先回顧一下MaskFormer,==mask是由transformer decoder所輸出的$\epsilon_{mask}$和 $\epsilon_{pixel}$兩者內積出來後再經過Sigmoid的結果==,而這邊decoder 要輸入的mask其實就是這個mask。具體流程下面會講解  --- 2. ++整體流程:++ 先附上大致的維度和符號,並以第一層decode為例  1. 先將query送入MLP後產生$\epsilon_{mask}(B, N, C_\epsilon)$ 2. ==將$\epsilon_{mask}(B, N, C_\epsilon)$與$f_0(B,C_\epsilon, \cfrac{H}{32}, \cfrac{W}{32})$內積後得到$mask_{0} (B, N, \cfrac{H}{32}, \cfrac{W}{32})$,即要輸入給第一層decoder的mask== 3. 得到此mask後,還需要將其轉換為0和1,作者在這邊是設定threshold=0.5 4. 經過decoder的運算後就又會產生出一個新的query,再用這個query去生成一個新的mask即可 --- 3. ++細微調整:++ 1. 在計算loss時,每次都是隨機取某幾個點來去計算loss,減少內存的開銷 3. 作者調換了decoder中的self-attention和cross-attention的順序,是因為==第一層的decoder如果一開始就做self-attention其實沒有甚麼意義,因為一開始還沒有任何圖像的feature進來== * **結果:**  
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up