自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

杜佳豪發表於2020-04-17

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

本文實現的場景去遮擋的應用之一:場景編輯。

1. 問題定義

進入正題。先來看看研究者希望達到什麼效果,如下圖:

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

研究者希望將一張真實場景圖片分解為完整的物體和背景,物體間根據遮擋關係組成一個有向圖。他們將場景去遮擋這個問題分解為如下步驟:

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

  1. 兩兩鄰接的物體之間的順序恢復。有了 pair-wise ordering 之後,就可以得到一個描述場景遮擋關係的有向圖,稱之為遮擋關係圖(occlusion graph)。

  2. Amodal completion。在遮擋關係圖中,可以檢索到任意一個物體被哪些物體遮擋了,這樣就可以進行 amodal completion 步驟,把物體完整的 mask 恢復出來。

  3. Content completion。有了 amodal mask 之後,就知道了物體的被遮擋區域(不可見部分),那麼下一步就可以想辦法在不可見部分填充 RGB 內容,使得這個物體完整的樣子被恢復出來。


現有的資料包括 RGB 的圖片、modal mask 和物體類別。modal mask 是指物體可見部分的 mask,其實就是一般意義的 instance segmentation 的 mask。這些其實正好構成了一個 instance segmentation 的資料集,例如 COCO、KITTI、LVIS 這些。注意,這樣的資料集裡並沒有遮擋關係和 amodal mask 的標註,所以用有監督學習的思路是無法解決上述問題的。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

2. 自監督的部分補全機制

下面來介紹一個重要的概念,部分補全。在此之前,先來介紹完整補全。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral


如果有 amodal 標註,可以使用完整補全來訓練和預測

完整補全是指給定被遮擋的物體和它的遮擋物,一次性將物體完整的 amodal mask 補全,當然它的前提是需要有 ground truth amodal mask 作為監督。研究者發現一次完整補全等價於一系列的部分補全。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

完整補全可以轉化為一系列的部分補全

這裡的部分補全(partial completion)是指:給定某一個遮擋物,只補全目標物體被當前遮擋物遮擋的部分。例如給定上圖中的圓形遮擋物,把 M_0 補全為 M_1。然而,這些部分補全過程還是無法訓練的,因為補全的中間狀態(如 M_1)和最終狀態(如 M_2)都是未知的。

接下來則是最關鍵的操作。如下圖,將 M_0 再「切一刀」,即從資料集中隨機選一個物體,用它的 modal mask 來蓋住 M_0,得到 M_{-1},然後訓練部分補全,從 M_{-1} 恢復 M_0。這個過程是可訓練的。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

自監督的部分補全機制

有了部分補全機制之後,為了方便後續的步驟,還需要引入一個正則機制,即下圖 case 2。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

部分補全的正則化

Case 1 是之前介紹的用隨機選擇的 surrogate object 來遮擋住目標物體。用 case 1 來訓練的部分補全會永遠增加物體的面積。研究者又引入了 case 2,將 surrogate object 放在目標物體下面,然後要求在部分補全過程中保持目標物體不變。訓練過程在 case 1 和 2 之間隨機切換,那麼網路在訓練過程中需要從輸入中挖掘資訊來判斷目標物體是否被 surrogate object 遮擋,只有在目標物體被遮擋的時候,它才會被部分地補全,否則就會保持不變。

3. 部分補全網路的訓練

研究者用一個神經網路來模擬這個部分補全過程。部分補全網路(Partial Completion Network - Mask,簡稱 PCNet-M)的訓練過程如下,其中 A 物體為目標物體,B 為 surrogate object,對於 case 1 和 2,PCNet-M 都需要恢復出 A 的初始 modal mask。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

訓練部分補全網路(PCNet-M)

4. 順序恢復的推理過程

如下圖,有了訓練好的 PCNet-M 之後,他們設計瞭如下推理過程來恢復遮擋順序。給定 A1 和 A2 兩個鄰接的物體,分別以 A1 為目標物體,A2 為 surrogate object,研究者發現 PCNet-M 並沒有增加 A1 的面積;反過來,他們以 A2 為目標物體,A1 為 surrogate object,結果發現 A2 的面積增加了。由此可以判斷出來,A1 遮擋了 A2。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

Dual-completion for Ordering Recovery

這個策略看似簡單,實際上很巧妙地利用了正則化後的部分補全機制的選擇性補全的特性,獲得了很好的效果,在 COCOA 和 KINS 兩個資料集上獲得了和有監督方案非常接近的結果。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

Ordering recovery 定量測試結果

5. 基於遮擋順序的 Amodal Completion

如下圖,有了遮擋順序之後,可以構建出一個遮擋順序圖。圖中的邊從遮擋物指向被遮擋物,這樣一來,從圖中對於任意一個物體,可以得到它的所有祖先節點,即為它的所有遮擋物。其中一階祖先節點為直接遮擋物,高階祖先節點為間接遮擋物。例如下圖例子中可以得到,物體 3 有兩個直接遮擋物,分別為 2 和 4。判斷出遮擋物之後,就可以再次利用部分補全網路(PCNet-M)來恢復出 amodal mask。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

基於遮擋順序的 Amodal Completion 推理過程

這裡還需要解釋一下為何要選取所有祖先節點作為遮擋物,而非僅僅直接遮擋的一階祖先節點。如下圖,這裡需要補全物體 1。從遮擋關係圖中,它的一階祖先節點(即直接遮擋物)是 2 和 4,高階祖先節點(間接遮擋物)是 3。研究者發現,只考慮一階遮擋物,無法完整地補全物體 1 被物體 3 間接遮擋的部分。只有考慮所有祖先節點,才可以獲得正確的補全結果。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

使用一階祖先節點和包括高階祖先的所有祖先節點的對比。

下面是 amodal completion 的結果。同樣,本文提出的方法在 amodal completion 這個子任務上也達到了和有監督方案非常接近的結果。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

Amodal completion 定量測試結果

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

Amodal completion 視覺化結果

6. 內容補全

內容補全網路(Partial Completion Network - Content,縮寫 PCNet-C)的訓練方式和 PCNet-M 類似。同樣地,此處無法在訓練的時候用完整內容補全的結果來監督,研究者設計瞭如下的部分內容補全的訓練策略。給定目標物體 A 和 surrogate object B,用 A∩B 來擦除圖片的 RGB,作為缺失的需要填充的內容,然後用 A\B 來代表缺失的內容屬於哪個物體。訓練的目標是恢復原圖。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

訓練內容部分補全網路 PCNet-C

測試的時候,有了遮擋物(occluders)和目標物體的 amodal mask,取交集,就得到了需要填充內容的區域(即被遮擋的區域)。同時目標物體的 modal mask 也作為輸入,用來表示缺失的區域屬於該目標物體而非其他物體。最後 PCNet-C 將物體完整的樣子補全了出來。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

(說得這麼花裡胡哨,這不就是 image inpainting 嗎?

還真不太一樣,我們往下看。

如下圖,關鍵的不同之處在於,image inpainting 沒有 modal mask 這個輸入,因為 image inpainting 並不 care 缺失的部分屬於哪個物體,只要結果看起來合理就行。那麼如果直接使用 image inpainting,缺失的區域就會被填充為其他物體的 RGB,例如下面的咖啡杯。這個結果對於 image inpainting 是非常合理的,但是對於物體的內容補全來說,則是不正確的。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

當然 PCNet-C 的其他訓練方式,包括網路結構、loss 等,都跟 image inpainting 大同小異。所以以後 image inpainting 做得更好了,也能幫助提升內容補全的效果。

7. 應用 1: amodal mask 自動生成

給一個普通的 instance segmentation dataset,例如下圖中的 KITTI training set,研究者訓練了 PCNet-M 並且仍舊在 training set 上應用 amodal completion 方法,就可以得到 pseudo amodal masks。這樣相當於在 training set 上免費拿到了一批 amodal mask。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

然後來看看這些 amodal mask 質量和人工標註的 amodal mask 的對比。研究者使用不同來源的 amodal mask 作為監督,用 Mask R-CNN 在 KITTI 上訓練了 amodal instance segmentation 任務,並在人工標註的測試集上測試。結果發現本文所提方法獲得的 amodal mask 和人工標註獲得了正好一樣的結果。這意味著以後可能再也不需要標 amodal mask 了。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

8. 應用 2: 場景編輯和重組

既然現在能將場景分解開,那麼就可以對場景進行編輯和重組。如下圖,其中的 baseline modal-based manipulation 是基於普通的 image inpainting 做的,只有 modal mask,沒有 ordering 和 amodal mask。本文提出的方法基於 ordering 和 amodal mask,能做更加自然的場景編輯。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

高畫質版見文末影片


9. 其他潛在應用

  1. Instance segmentation 的 data augmentation。還記得去年有一篇很棒的工作(InstaBoost [2], ICCV2019),透過移動物體來做 data augmentation,但是不能解決移動物體過程中的遮擋問題。現在配合 scene de-occlusion,也許可以做得更好。

  2. 幫助 panoptic segmentation 後處理中的 mask fusion 步驟。

  3. 應用到擴增實境(AR)中。例如下圖,對真實場景做 de-occlusion 之後,就可以將虛擬的物體放在真實物體的後面。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral


10. 討論

1. 可以解決兩個物體互相遮擋嗎?不能。因為如下圖中的互相遮擋的情況中,無法定義 ordering graph。ordering graph 是 object level 的,而互相遮擋則需要 boundary-level de-occlusion。也相當於留下了一個 open question 供大家思考。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

互相遮擋例子

2. 可以解決多個物體迴圈遮擋嗎?可以。因為該方法是按照 pairwise 來恢復順序的,所以迴圈遮擋不會有問題。如下圖(因為迴圈遮擋例子比較少見,作者用剪刀剪了幾張紙片來擺了這麼一張圖,然後跑了一下測試),預測出來的 ordering graph 也是一個環。

自監督媲美全監督,港中文、商湯場景去遮擋方法入選 CVPR 2020 Oral

迴圈遮擋例子

論文:Self-Supervised Scene De-occlusion



  • 論文連結:https://link.zhihu.com/?target=https://arxiv.org/abs/2004.02788

  • 程式碼:https://link.zhihu.com/?target=https://github.com/XiaohangZhan/deocclusion

相關文章