NIPS 2018:通過端到端幾何推理髮現潛在3D關鍵點
論文: ofollow,noindex"> https:// arxiv.org/pdf/1807.0314 6.pdf
編譯:Bot
編者按:關鍵點檢測是許多計算機視覺任務的基礎,如人臉識別、動作檢測和自動駕駛等。而在這屆NIPS上,來自Google AI的Supasorn Suwajanakorn等人帶來了關於3D關鍵點檢測的一種新方法:端到端幾何推理。如果你沒聽說過這位一作的名字,沒關係,你一定見過SIGGRAPH 2017上震驚世界的奧巴馬造假視訊,在那篇論文中,他也是一作。

摘要
本文提出KeypointNet,這是一個端到端的幾何推理框架,可用於學習一組優化類3D關鍵點,並對它們進行檢測。給定單個影象,KeypointNet能針對下游任務提取優化關鍵點集。我們通過提出一個可微的物件來展示這個關於3D姿態估計的框架,它的目的是恢復同一物件兩個檢視(2D)之間相對姿勢的最佳關鍵點集,跨視角、跨類發現幾何和語義一致的關鍵點。
重要的是,我們發現這種方法不需要任何基於ground-truth的關鍵點註釋標記,在使用同一神經網路架構的情況下,它的效果優於完全監督基線。關於汽車、椅子和飛機等物件的3D關鍵點視覺化,請看 keypointnet.github.io 。
簡介
卷積神經網路(CNN)的研究已經證實,特徵提取和分類管道的聯合優化可以顯著提升網路的物件識別效能。但話雖如此,目前一些解決幾何視覺問題的方法,比如3D重建和shape alignment,它們都包含一個單獨的關鍵點檢測模組,在檢測結果上再運用幾何推理。在本文中,我們探討了一個問題,即能否構建一個端到端的幾何推理模型,把關鍵點直接聯合優化為下游任務的一組潛在變數。
請設想這麼一個例子:影象中汽車的3D姿勢問題。按照常規做法,我們應該先檢測所有關鍵點,然後在幾何推理框架內應用這些點,恢復汽車的3D姿勢或某個角度的檢視。實現這一點的手段有很多,比如手動註釋關鍵點,然後進行監督學習,也可以開發一組關鍵點檢測器,儘管這容易出錯。
但這種方法成本太高了,而且關鍵點的選擇也缺乏一致性和明確性。為了獲得更合理的關鍵點集,我們應該根據下游任務的需要,直接優化下游任務需要的關鍵點,從中獲取獨特性、易於檢測和多樣性等目標關鍵點屬性。
KeypointNet的效果
首先,我們來看看KeypointNet的具體效果。總體來看,它預測的關鍵點非常精確,也非常穩定,能大大減輕手工標記的工作量,為今後的研究提供了一種低廉、快捷的方法。
下面是“飛機”的關鍵點預測情況,模型的總體表現是不錯的,但也出現了“失誤”——可以關注最後一行,尤其是最後兩個。它們的機翼朝向難辨,因此關鍵點總是變動:

下面是“汽車”:

模型的整體預測效果很好,但請注意最後一行。其中第二輛車是黑色的,和背景顏色一致,這顯然影響了KeypointNet的預測效果;而第三輛車之所以也會出現關鍵點變動,是因為它的車頭和車尾太相似了,讓模型感到迷惑。

上圖是用不同數量的關鍵點[3,5,8,10,15,20]訓練網路的結果,可以發現網路最先找到的關鍵點在飛機頭部和機翼,隨著數量增加,KeypointNet跟蹤的部分更多(顏色是獨立的,和預測結果無關)。
以上都是簡單旋轉的預測結果,那麼如果目標物件是個可形變的物體,KeypointNet的穩健性會如何?



如這些動圖所示,圖中汽車會動態扭曲,但還能保持原有形狀。對於這類目標,KeypointNet預測的關鍵點還是很穩定,效果也很好。
最後,也是最重要的,生成、檢測關鍵點的作用是用於人臉識別、姿態估計等任務,那麼KeypointNet在現實場景下是否也有上述效果:

上圖右側是成功預測關鍵點的示例,右側是失敗案例。總體而言,這個模型在大多數正常汽車影象上表現出色,但它很難處理自帶廣角畸變的影象、花紋複雜的汽車和包含鏡面高光的影象。
端到端優化3D關鍵點
這一節是對KeypointNet的簡要概述。
給定已知物件類別中的單個影象,這個模型可利用畫素座標和相關depth values,預測並生成3D關鍵點的有序列表。這些關鍵點需要在幾何上和語義上保持一致,如下圖所示,即便是外形不同的椅子,KeypointNet始終可以使用相同的關鍵點,而且它們不會隨視角變化發生變動,也能預測被遮擋的部分(椅子後腿)。

KeypointNet有N個頭,因此可以提取N個關鍵點,同一個頭在提取關鍵點時主要參考語義是否一致。
和完全監督學習方法相比,這種做法沒有事先定義關鍵點位置,相反地,它專注於訓練時的相對姿態估計,也就是對於同一目標的兩個2D不同檢視(變換T),找到圖一中的關鍵點P1和它在圖二中的對應關鍵點P2,用這兩個點構建3D關鍵點列表。如下圖所示:

把兩個關鍵點合併成一個3D關鍵點的目標函式是O(P1, P2),有了它,我們就能可以從影象到關鍵點列表的引數對映。這個目標函式由兩大關鍵構成:
- 多檢視一致性損失,用於在已知轉換T的情況下,衡量兩組點之間的差異。
- 相對姿態估計損失,用於懲罰真實旋轉R和P1、P2校正的旋轉Rˆ之間的差異。
實驗證明,它們能幫模型發現重要的關鍵點,其中有一些甚至和人工特別手動標註的點一致。需要注意的是,這些具有語義意義的關鍵點不會被直接優化,可以它們對於下游任務可能不是最佳的。
更多技術細節,請去原文檢視。
程式碼: github.com/tensorflow/models/tree/master/research/keypointnet