論文:SEAFORMER: SQUEEZE-ENHANCED AXIAL TRANSFORMER FOR MOBILE SEMANTIC SEGMENTATION
代碼:https://github.com/fudan-zvg/SeaFormer
seafomrer是一種實時語義分割算法,主要對標的是topfomer和segformer,seafomer之后百度也出了一個實時語義分割算法叫做pp_mobileseg,但是pp_mobileseg筆者本人實際測試下來,不管是精度和速度都沒有seaformer好,跟論文的數據有較大的差距。
seaformer主要解決的是transformer的復雜度與分辨率呈二次方的問題,這對于高分辨率輸入任務非常不友好,從從下圖可以看到,seaformer的對于分辨率不怎么敏感,所以速度也比較快。
數據對比.png
seaformer整體是非對稱編解碼結構,特征提取用的是topformer的STEM,其實就是幾層倒置殘差塊,后邊接了3層特征融合塊,吸收了bisenet的雙路分支思想,粗粒度和細粒度特征融合,seafromer是漸進式融合法啊,而topformer是一口氣將所有細粒度特征提取出來,再分別跟不同層級的粗粒度特征融合。
seaformer.png
seafromer的核心是壓縮軸注意力,這個是對傳統多頭自注意力的改進,首先看下邊的Squeeze Axial attention,這個是使用了池化對QKV進行X軸和Y軸分別壓縮,然后再進行自注意力操作,這么做可以大大降低傳統自注意力的計算量,當然直接使用池化暴力壓縮固然會導致信息損失,所以作者增加了一條Detail enhancement kernel用于增強細節信息,就是將QKV拼接一起然后卷積特征提取,最后細節增強分支產生卷積注意力權重更下面的分支相乘,悄悄有做了一步卷積注意力,估計參考了segnext的方法。
seaformer整體還是非常簡潔的比較容易懂,實際項目使用也非常高效。我這邊使用電芯數據集測試下來的結果如下,最后一列是耗時ms,分辨率是512x512:
實際比較.png