【语义分割】ICCV21_Self-Regulation for Semantic Segmentation
文章目錄
- 一、背景
- 二、動機
- 三、方法
- SR-F Loss:Shallow to Deep
- SR-L Loss:Deep to Shallow
- 四、效果
論文地址:https://arxiv.org/pdf/2108.09702.pdf
代碼地址:https://github.com/dongzhang89/SR-SS
一、背景
語義分割的目的是對圖中的每個像素進行分類,現有的效果較好的網絡基本可以解決 85% 的問題,然而其他15%的問題作者發現基本上是由于以下兩個原因:
- Failure-1:缺失了小目標或目標的某一部分(該問題的原因在于未充分利用細節部分,如圖1d的“馬腿”)
- Failure-2:錯誤預測大目標的某一部分的類別(該問題的原因在于未充分利用視覺上下文信息,如圖1h)
二、動機
緩解 Failure-1:
作者在圖 1 中表示了自己的觀點,作者發現如圖 1b 所示,在淺層的時候小目標的各個部分都可以很清楚的看到,所以,如果能較好的利用這些信息,則可以緩解 Failure-1,如圖1e所示。
現有的方法如 Hourglass、SegNet、U-Net、HRNet,基本上都通過reshape+combining feature 的方法來解決。共性實現方式大多是這樣的:pixel-wise addition, map-wise concatenation, pixel-wise transformation,但是這都會引入很多的參數量。
緩解 Failure-2:
作者發現如圖 1 中的“?!边@個目標,如果使用 image-level 的 classification loss 來訓練模型,則可以很好的緩解 Failure-2:即在 pixel-level 來混合 foreground objects (‘cow’) 和 local pixel cues (‘horse’)。直觀的原因在于 loss 會懲罰預測成沒有看到的 class-level 的上下文(如:牛不會有一個馬嘴)。
所以,本文中作者使用這樣的直觀想法并且提出了一個 loss function 來每個圖像提升上下文的編碼。
三、方法
作者提出了 Self-Regulation,其有三個不同種類的 loss 組成:
- Multi-Exit Architecture loss(MEA):對每個block 應用 image-level multi-label classification loss+ pixel-level segmentation loss
- Self-Regulation loss using Feature maps(SR-F):Teacher 和 Student block 輸出特征之間的蒸餾 loss
- Self-Regulation loss using classification Logits(SR-L):Teacher 和 Student block 的分類得分之間的蒸餾 loss
MEA Loss: Multiple-Exit Architecture(MEA),首次提出是在 [23] 中,為了提升模型的推理速度,本文中,使用 MEA 是為了在一個模型中同時訓練分類和分割任務。
SR-F && SR-L Loss:圖3展示了 conv 結構和 U-shape 結構的 pipline
- 在標準的 U-shape 結構中,Encoder 是由一系列卷積模塊組成,Decoder 是由相同數量的解卷積模塊組成。
- 在 Encoder 中,最淺層 block 輸出的特征圖被作為深層 block 的真值(在計算 SR-F loss時)
- 在 Decoder 中(或 conv 結構的Encoder),最深層輸出的 classification 概率被當做真值來指導淺層 block 的學習(在計算 SR-L loss時)
- 在反向傳播 loss 時,模型在每個 layer 同時被指導學習 pixel-level(被最淺層指導)和 semantic-level(被最深層指導)的信息,所以能夠生成較好的特征表達。
SR-F Loss:Shallow to Deep
如圖3所示:
- 每個卷積 block 或解卷積 block 可以被看做獨立的特征抽取器,ending block(最淺或最深block)可以在不同情況下被當做 teacher 或 student ,因為本文的self-regulation(自調節)是雙向的。
- middle blocks 永遠都是 student
- Teacher 和 Student 的轉換函數分別為:Tθ(x)T_{\theta}(x)Tθ?(x) 和 S?(x)S_{\phi}(x)S??(x),其中 θ、?\theta、\phiθ、? 分別為對應的網絡參數
SR-F Loss 的目標:讓網絡更多的保留淺層blocks保留下來的細節信息
實現方法: 使用最淺 block (即第一個)作為 Teacher(Shallow Teacher)來控制深層 blocks (Deep Students)
Loss 第一步: 交叉熵損失
使用 cross-entropy 來衡量 Shallow Teacher 的特征圖 Tθ[1]T_{\theta}^{[1]}Tθ[1]? 和第 i 個 Deep Student 特征圖 S?[i]S_{\phi}^{[i]}S?[i]? 之間的距離,得到如下 SR-F Loss:
- i∈[2,N]i\in[2,N]i∈[2,N],NNN 為 conv block 的個數
- tjt_jtj?:Tθ[1]T_{\theta}^{[1]}Tθ[1]? 的第 j 個位置的向量
- sjs_jsj?:S?[i]S_{\phi}^{[i]}S?[i]? 的第 j 個位置的向量
- MMM:特征圖大小
Loss 第二步: 使用知識蒸餾(KD)
為了提高效率,作者使用了知識蒸餾的溫度控制方法[17],Loss 如下:
- 每個特征圖的 tj1/τt_j^{1/ \tau}tj1/τ? 和 sj1/τs_j^{1/ \tau}sj1/τ? 都被歸一化了
- τ\tauτ 是溫度參數,能起到平滑空間的效果,值越大,對特征圖中的最大值和最小值的差距抑制越大
Loss 第三步: 對所有 Deep Students 求和
SR-L Loss:Deep to Shallow
SR-L 的目標:讓網絡的淺層 block 能夠捕捉更多的全局上下文信息,來更好的應對背景的噪聲
實現方法:
-
將最深層作為 Teacher(Deep Teacher),來指導所有的淺層(Shallow Students)
-
作者認為,最深層輸出的 classification 概率得分包含了高層的語義信息,所以將 Deep Teacher 的類別得分作為指導
-
給定 Deep Teacher 的類別得分 Tθ[N]T_{\theta}^{[N]}Tθ[N]?,和 Shallow Students 的得分概率 {S?[k]}k=1N?1\{S_{\phi}^{[k]}\}_{k=1}^{N-1}{S?[k]?}k=1N?1?,作者同樣使用公式1-3的方法,不同的是計算兩者的概率 cross-entropy 損失,所以 SR-L loss公式如下:
Overall Loss Function:
下面用 layer-wise 的形式展示了 SR Loss,該 loss 能同時進行分類和分割,如圖2所示,由多個分類器和分割器組成:
- LSR?segL_{SR-seg}LSR?seg? 和 LSR?clsL_{SR-cls}LSR?cls? 都是使用 one-hot 編碼為真值的 cross-entropy loss,這一對組成的 loss 叫做 MEA loss
- LSR?FL_{SR-F}LSR?F? 和 LSR?LL_{SR-L}LSR?L? 通過學習由其他層產生的 “soft knowledge” 來進一步提升網絡的效果
- λ1=0.2\lambda_1=0.2λ1?=0.2,λ2=0.8\lambda_2=0.8λ2?=0.8,λ3=1\lambda_3=1λ3?=1
四、效果
1、消融實驗:
2、weakly-supervised 方法的對比
3、fully-supervised 方法對比
4、可視化
- 上半部分為在 pascal voc 上的效果,可以看出在baseline中預測有誤的像素,在使用了 MEA loss 后都有所改善,這得益于模型中每層都學習了更多的語義和細節信息。
- 在使用 SR loss后可以看出,模型對一些小的目標部分的效果更好了(如 horse legs 和 horse tail)
- Pascal 中失敗的部分:所有方法都對顯示器的 neck 部分分割失敗了(綠色虛線框),也可能是因為分類器在訓練顯示器這個類的時候,很少關注 neck 部分
- Cityscapes 中失敗的部分:小的目標如遠處的交通信號沒有被分割出來
總結
以上是生活随笔為你收集整理的【语义分割】ICCV21_Self-Regulation for Semantic Segmentation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星电子第四季度净利润23.50万亿韩元
- 下一篇: 【知识蒸馏】ICCV21_Channel