論文筆記-OCR-Object-Contextual Representations for Semantic Segmentation


paper: Object-Contextual Representations for Semantic Segmentation

code: PyTorch

Abstract

  1. OCR是MSRA和中科院的一篇語義分割工作,結合每一類的類別語義信息給每個像素加權,再和原始的pixel特征concat組成最終每個像素的特征表示,個人理解其是一個類似coarse-to-fine的語義分割過程。
  2. 目前cityscape的分割任務中,排名最高的還是HRNetv2+OCR,參考paperswithcode
  3. OCR的整體方法流程圖如下

Details

  1. OCR的motivation是為了將每個pixel和其對應的類別信息結合起來,構造更加魯棒的像素的特征表達。下圖和ASPP的對比能夠比較明顯看出來。
  2. 每一個像素最終的特征表達方式如下面的公式及處理流程如下所示:
    • step1: 計算一個coarse的segmentation結果,即文中說的soft object region
      • 實現過程:從backbone(ResNet或HRNet)最后的輸出的FM,再接上一組conv操作,然后計算cross-entropy loss
    • step2: 結合圖像中的所有像素計算每個object region representation,即公式中的\( f_k \)
      • 實現過程:對上一步計算的soft object region求softmax,得到每個像素的類別信息,然后再和原始的pixel representation相乘
    • step3: 利用object region representation和原始的pixel representation計算得到pixel-region relation,即得到公式中的\( w_ik \)
      • 實現過程:將object region representation和pixel representation矩陣相乘,再求softmax
    • step4: 計算最終每個像素的特征表示
      • 實現過程:將step3的結果object region representation矩陣相乘,得到帶有權重的每個像素的特征表示,並和原始的pixel representation連接到一起
  3. 代碼
    • 論文讀完,暈暈乎乎的,沒想明白按文中的表述怎么實現,看代碼發現還是比較清晰的,文中提到的多種轉換全部是通過不同size的conv實現的
    • OCR的整體流程
    • step2對應的代碼
    • step3對應的代碼
    • 如下的OCR流程圖,更為清晰的表示整體流程,以及和文中公式之間的對應關系(截圖來自這里
  4. 性能
    • OCR和其他類似功能模塊的速度對比
    • mIoU對比見文中表格(太長了...)

寫在后面

  1. 本文也引入了一個auxiliary loss,PSPNet中也有引入。如果將網絡分成多個stage,而后一個stage依賴與前一個stage的話,對前一個stage引入一個auxiliary loss來監督訓練(loss設置一個權重,PSP中和本文都是0.4),對性能提升是有幫助的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM