天天看點

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

四月份很快就過去了,其實做了不少事,也看了不少論文,但是因為種種原因,一直沒有做記錄,這是個特别糟糕的事情,寫自白書與悔過書。重開一個專欄,QDD檢測系列,這個系列裡面打算着重介紹一些關于檢測,執行個體分割,語義分割常用的架構。

今天給大家介紹一篇最近使用的執行個體分割架構,稱為mmdetection,翻譯過來又可以稱為用于執行個體分割的級聯任務架構。

執行個體分割(Instance Segmentation)是一個和物體檢測(detection)非常相關,但是難度更大的問題。執行個體分割是物體檢測的更新版本,他要求像素級對目标進行檢測,這無疑大大增加了難度。

關于著名的detection架構RCNN系列大家肯定會有所耳聞,那麼之後又有人提出來,我能不能通過對RCNN的輸出結果進行多層級聯,這樣就等于對于輸出bbox的架構進行了多級的回歸,實驗證明,這種串聯的RCNN效果是出現了明顯的提高的。

詳情可以參考CVPR2018的這篇文章Cascade R-CNN: Delving into High Quality Object Detection。

那麼本文的作者就思考了,那我可不可以在mask rcnn的基礎上,通過級聯來實作提高性能的效果呢?當然可以,那怎麼做呢?别急,讓我慢慢給你來講:

一  Cascade Mask R-CNN

這一步做的工作可以說是特别的簡單,作者這樣想,哎,你RCNN可以通過串聯獲得比較好的結果,那我就直接copy,(像海瀾之家)一樣,我就講了,copy是一種文化,也不過是上了一回熱搜,多好。

到底有多簡單呢?各位看下面這張圖

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

在這種實作裡,每一個 stage 和 Mask R-CNN 相似,都有一個 mask 分支 和 box 分支。目前 stage 會接受 RPN 或者 上一個 stage 回歸過的框作為輸入,然後預測新的框和 mask。

試驗結果表示,這種架構已經達到了超越mask rcnn的效果,但是還存在一個比較明顯的弊端,就是在box AP 上提高了 3.5 個點,但是在 mask AP 上隻提高了 1.2 個點。這是為什麼呢,我們發現直接參與級聯的隻有box的結果,而且在這個結果的過程中,box和mask的結果并沒有資訊互動這樣的過程。

二 Interleaved Execution

那麼,就讓他們互動呗,怎麼互動又是一個比較直接的問題,我們也許會有這種各樣的想法,文章中作者給出的是下面這個結構:

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

如上圖所示,所謂的互動展現在了,每個stage的mask分支連接配接在這個分支的box分支通過一個pool之後,這樣看來mask的産生就直接關聯于box的結果。這樣既增加了每個 stage 内不同分支之間的互動,也消除了訓練和測試流程的 gap。作者發現這種設計對 Mask R-CNN 和 Cascade Mask R-CNN 的 mask 分支都有一定提升。

那麼,能不能更好呢?

三  Mask Information Flow

我們回顧上面兩種結構,我們發現不同stage之間的資訊流主要隻有一種,就是通過bbox這條支路傳遞的資訊。讓下一個 stage 的特征和學習目标和目前 stage 有關。在 cascade 的結構中這種資訊流是很重要的,讓不同 stage 之間在逐漸調整而不是類似于一種 ensemble。

然而不同 stage 之間的 mask 分支是沒有任何直接的資訊互動的,它隻和目前 Bi  通過 RoI Align 有關聯而與以一個stage的mask沒有任何聯系。作者就想,那麼我們為什麼不讓他們聯系起來呢?

于是有了下面這種結構:

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

那有人也許會有疑問了,mask層的資訊該如何的融合呢?看下面這個結構:

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

我們将 Mi 的特征經過一個 1x1 的卷積做 feature embedding,然後輸入到  Mi+1,這樣 Mi+1  既能得到 backbone 的特征,也能得到上一個 stage 的特征。

四 Semantic Feature Fusion

如果,我再加入直接的語義資訊呢?

這一步是作者嘗試在第三步的基礎上,再次引入語義分割的資訊,目的是為了獲得更好的 spatial context(位置資訊)。因為語義分割需要對全圖進行精細的像素級的分類,是以它的特征是具有很強的空間位置資訊,同時對前景和背景有很強的辨識能力。通過将這個分支的語義資訊再融合到 box 和 mask 分支中,這兩個分支的性能可以得到較大提升。結構如下所示:

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

在具體設計上,為了最大限度和執行個體分割模型複用 backbone,減少額外參數,作者在 FPN 的基礎上增加了一個簡單的全卷積網絡用來做語義分割。首先将 FPN 的 5 個 level 的特征圖 resize 到相同大小并相加,然後經過一系列卷積,再分别預測出語義分割結果和語義分割特征。

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

結果:

通過上面的幾步,在使用 ResNet-50 的 backbone 下,相對 Cascade Mask R-CNN 可以有 1.5 個點的 mask AP 提升,相對 Mask R-CNN 可以有 2.9 個點的提升。具體的實驗對比結果如下所示:

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

論文位址:https://arxiv.org/pdf/1901.07518.pdf

實驗代碼:https://github.com/open-mmlab/mmdetection

好了,今天的這篇部落格就到此結束了,謝謝大家

學術交流可以關注我的公衆号,背景留言,粉絲不多,看到必回。卑微小錢線上祈求

QDD檢測架構系列(1)——Hybrid Task Cascade for Instance Segmentation(mmdetecton)

繼續閱讀