當前位置:
首頁 > 新聞 > 讓「盲人能摸象」:港中文博士用無監督學習去遮擋,論文一年多終於入選CVPR 2020

讓「盲人能摸象」:港中文博士用無監督學習去遮擋,論文一年多終於入選CVPR 2020

新智元報道

編輯:元子

本文《Self-Supervised Scene De-occlusion》由香港中文大學和南洋理工大學團隊合作完成,被接收為CVPR2020的oral presentation。

作者坦言,從2018年底就開始思考無監督的去遮擋和場景分解這個問題,因為並沒有之前的工作很好地定義場景去遮擋這個問題,更別說解決,更別說用無監督的方法解決,所以前期踩了不少坑。

作者打了一個非常形象的比喻:有一群長相各異的大象排隊經過。有監督學習,相當於正常人每看到一頭大象,就把大象畫下來。無監督學習,則是盲人摸象,這位盲人可以這隻大象摸一下鼻子,那隻大象摸一下腿,最後把每頭大象完整的樣子想像出來。

場景去遮擋分解為3大步驟

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

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

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

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

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

我們現在有的數據包括RGB的圖片,modal mask和物體類別。modal mask是指物體可見部分的mask,其實就是一般意義的instance segmentation的mask。

這些其實正好構成了一個instance segmentation的數據集,例如COCO,KITTI,LVIS這些。注意這樣的數據集里並沒有遮擋關係和amodal mask的標註,所以用有監督學習的思路是無法解決上述問題的。

自監督的部分補全機制

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

如果有amodal標註,可以使用完整補全來訓練和預測 完整補全是指給定被遮擋的物體和它的遮擋物,一次性將物體完整的amodal mask補全,當然它的前提是需要有ground truth amodal mask作為監督。我們發現一次完整補全等價於一系列的部分補全。

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

接下來則是最關鍵的操作。如下圖,我們將M0再「切一刀」,即從數據集中隨機選一個物體,用它的modal mask來蓋住M0,得到M-1,然後我們訓練部分補全,從M-1恢復M0。這個過程是可訓練的。自監督的部分補全機制:

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

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

部分補全網路的訓練

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

順序恢復的推理過程

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

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

基於遮擋順序的Amodal Completion

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

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

使用一階祖先節點和包括高階祖先的所有祖先節點的對比 下面是amodal completion的結果。同樣,我們在amodal completion這個子任務上也達到了和有監督方案非常接近的結果。

內容補全網路訓練方式

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

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

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

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

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

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

應用1:amodal mask自動生成

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

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

應用2: 場景編輯和重組

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

我們也做了一個圖片編輯的GUI,demo如下(完整高清demo見文末鏈接):

其他潛在應用

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

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

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

內容總結

可以解決兩個物體互相遮擋嗎?不能。

因為如下圖中的互相遮擋的情況中,無法定義ordering graph。ordering graph是object level的,而互相遮擋則需要boundary-level de-occlusion。也相當於留下了一個open question供大家思考。

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

作者介紹

本文的作者叫詹曉航,本科畢業於清華大學,目前是香港中文大學多媒體實驗室三年級博士生,指導老師是Chen Change Loy、林達華和湯曉鷗教授。

曾在CVPR、ECCV等計算機視覺頂級會議上發表論文十餘篇,包括五篇第一作者論文。另外曾獲國家獎學金、清華大學本科優秀畢業生、Hong Kong PhD Fellowship、Facebook自監督學習挑戰賽冠軍等榮譽。

他的博士期間主要研究方向為無監督學習,具體工作涵蓋人臉聚類、自監督場景理解、無監督表徵學習等。

項目主頁:

https://xiaohangzhan.github.io/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

你的可視化ML模型可以用顯微鏡來看了!OpenAI發布Microscope
愛因斯坦70年前就預言了新冠爆發?這段AI復活視頻火爆Reddit