Transformer再下一城!Swin-Unet:首个纯Transformer的医学图像分割网络
OpenCV學(xué)堂今天
以下文章來源于集智書童,作者ChaucerG
集智書童
機器學(xué)習(xí)知識點總結(jié)、深度學(xué)習(xí)知識點總結(jié)以及相關(guān)垂直領(lǐng)域的跟進,比如CV,NLP等方面的知識。
Swin-Unet: Unet-like Pure Transformer for Medical Image Segmentation
論文:https://arxiv.org/abs/2105.05537
代碼:https://github.com/HuCaoFighting/Swin-Unet
首個基于純Transformer的U-Net形的醫(yī)學(xué)圖像分割網(wǎng)絡(luò),其中利用Swin Transformer構(gòu)建encoder、bottleneck和decoder,表現(xiàn)SOTA!性能優(yōu)于TransUnet、Att-UNet等,代碼即將開源!
作者單位:慕尼黑工業(yè)大學(xué), 復(fù)旦大學(xué), 華為(田奇等人)
摘要
在過去的幾年中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)在醫(yī)學(xué)圖像分析中取得了里程碑式的進展。尤其是,基于U形結(jié)構(gòu)和skip-connections的深度神經(jīng)網(wǎng)絡(luò)已廣泛應(yīng)用于各種醫(yī)學(xué)圖像任務(wù)中。但是,盡管CNN取得了出色的性能,但是由于卷積操作的局限性,它無法很好地學(xué)習(xí)全局和遠程語義信息交互。
在本文中,作者提出了Swin-Unet,它是用于醫(yī)學(xué)圖像分割的類似Unet的純Transformer模型。標(biāo)記化的圖像塊通過跳躍連接被送到基于Transformer的U形Encoder-Decoder架構(gòu)中,以進行局部和全局語義特征學(xué)習(xí)。
具體來說,使用帶有偏移窗口的分層Swin Transformer作為編碼器來提取上下文特征。并設(shè)計了一個symmetric Swin Transformer-based decoder with patch expanding layer來執(zhí)行上采樣操作,以恢復(fù)特征圖的空間分辨率。在對輸入和輸出進行4倍的下采樣和上采樣的情況下,對多器官和心臟分割任務(wù)進行的實驗表明,基于純Transformer的U-shaped Encoder-Decoder優(yōu)于那些全卷積或者Transformer和卷積的組合。
框架結(jié)構(gòu)
圖1 Swin-Unet架構(gòu):由Encoder, Bottleneck, Decoder和Skip Connections組成。
Encoder, Bottleneck以及Decoder都是基于Swin-Transformer block構(gòu)造的實現(xiàn)。
2.1 Swin Transformer block
圖2 Swin Transformer block
與傳統(tǒng)的multi-head self attention(MSA)模塊不同,Swin Transformer是基于平移窗口構(gòu)造的。在圖2中,給出了2個連續(xù)的Swin Transformer Block。每個Swin Transformer由LayerNorm(LN)層、multi-head self attention、residual connection和2個具有GELU的MLP組成。在2個連續(xù)的Transformer模塊中分別采用了windowbased multi-head self attention(W-MSA)模塊和 shifted window-based multi-head self attention (SW-MSA)模塊?;谶@種窗口劃分機制的連續(xù)Swin Transformer Block可表示為:
其中,和分別表示(S)W-MSA模塊和第塊的MLP模塊的輸出。
與前面的研究ViT類似,self attention的計算方法如下:
其中,表示query、key和value矩陣。和分別表示窗口中patch的數(shù)量和query或key的維度。value來自偏置矩陣
。
2.2 Encoder
在Encoder中,將分辨率為的維tokenized inputs輸入到連續(xù)的2個Swin Transformer塊中進行表示學(xué)習(xí),特征維度和分辨率保持不變。同時,patch merge layer會減少Token的數(shù)量(2×downsampling),將特征維數(shù)增加到2×原始維數(shù)。此過程將在Encoder中重復(fù)3次。
Patch merging layer
輸入patch分為4部分,通過Patch merging layer連接在一起。這樣的處理會使特征分辨率下降2倍。并且,由于拼接操作的結(jié)果是特征維數(shù)增加了4倍,因此在拼接的特征上加一個線性層,將特征維數(shù)統(tǒng)一為原始維數(shù)的2倍。
2.3 Decoder
與Encoder相對應(yīng)的是基于Swin Transformer block的Symmetric Decoder。為此,與編碼器中使用的patch merge層不同,我們在解碼器中使用patch expand層對提取的深度特征進行上采樣。patch expansion layer將相鄰維度的特征圖重塑為更高分辨率的特征圖(2×上采樣),并相應(yīng)地將特征維數(shù)減半。
Patch expanding layer
以第1個Patch expanding layer為例,在上采樣之前,對輸入特征加一個線性層,將特征維數(shù)增加到原始維數(shù)的2倍。然后,利用rearrange operation將輸入特征的分辨率擴大到輸入分辨率的2倍,將特征維數(shù)降低到輸入維數(shù)的1/4,即。
Up-Sampling會帶來什么影響?
針對Encoder中的patch merge層,作者在Decoder中專門設(shè)計了Patch expanding layer,用于上采樣和特征維數(shù)增加。為了探索所提出Patch expanding layer的有效性,作者在Synapse數(shù)據(jù)集上進行了雙線性插值、轉(zhuǎn)置卷積和Patch expanding layer的Swin-Unet實驗。實驗結(jié)果表明,本文提出的Swin-Unet結(jié)合Patch expanding layer可以獲得更好的分割精度。
2.4 Bottleneck
由于Transformer太深導(dǎo)致收斂比較困難,因此使用2個連續(xù)Swin Transformer blocks來構(gòu)造Bottleneck以學(xué)習(xí)深度特征表示。在Bottleneck處,特征維度和分辨率保持不變。
2.5 Skip connection
與U-Net類似,Skip connection用于融合來自Encoder的多尺度特征與上采樣特征。這里將淺層特征和深層特征連接在一起,以減少降采樣帶來的空間信息損失。然后是一個線性層,連接特征尺寸保持與上采樣特征的尺寸相同。
skip connections數(shù)量的影響?
Swin-UNet在1/4,1/8和1/16的降采樣尺度上添加了skip connections。通過將skip connections數(shù)分別更改為0、1、2和3,實驗了不同skip connections數(shù)量對模型分割性能的影響。從下表中可以看出,模型的性能隨著skip connections數(shù)的增加而提高。因此,為了使模型更加魯棒,本工作中設(shè)置skip connections數(shù)為3。
實驗結(jié)果
3.1 Synapse數(shù)據(jù)集
3.2 ACDC數(shù)據(jù)集
就很多基于Transformer的文章和已經(jīng)開源的代碼來看,模型的預(yù)訓(xùn)練會嚴(yán)重影響基于Transformer模型的性能。其實作者在文章的最后也提到了他們也是直接使用Swin-Transformer在ImageNet上的預(yù)訓(xùn)練權(quán)值來初始化網(wǎng)絡(luò)的Encoder和Decoder的,這可能是一個次優(yōu)方案。不過作者也在努力嘗試實現(xiàn)完全端到端的實驗了(此處點贊)。
總結(jié)
以上是生活随笔為你收集整理的Transformer再下一城!Swin-Unet:首个纯Transformer的医学图像分割网络的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AT指令之 TCP/IP 命令
- 下一篇: 身份证最后一位按照ISO7064:198