目的
- 輸入一張圖片,得到圖片上爲平面的部分,並給出平面的三維信息(單位法向)。
大致過程
這是一個二階段的學習。第一階段爲從單張圖片中得到不同平面的分割,第二階段爲對不同的分割估計平面方程。但兩個階段是一起訓練的,因此也是end-to-end manner。訓練時,需要包含每張圖片每個像素所屬平面區域和像素單位法向信息。
分割
- 統一encode到embedding的特徵。
- 判斷每一像素是否爲平面。採用了segmentation decoder(第一個decoder)模型,對每個像素估計一個概率,判斷它是不是平面。
- 對同一平面像素進行聚類。採用了embedding decoder(第二個decoder)模型,對同一平面點的embedding feature進行吸引,對不同平面點的embedding feature進行排斥。
- 綜合上述兩步,對通過第一個decoder像素的embedding feature進行聚類(由於像素點非常多,因此使用了Efficient Mean Shift Clustering的算法,得到圖片到不同平面的分割。
估計
- 對每一像素上的法向和Ground Truth進行擬合。採用了parameter decoder(第三個decoder)模型,對每個像素估計概率,然後計算和Ground Truth之間的L1損失。
- 由於是平面,因此我們也需要每個像素上的法向儘可能朝向一致。對第三個decoder的法向,我們加權(權重來自聚類)求和,得到平面法向,然後計算平面法向和每個像素上法向的點積與1的差作爲損失。
- 因此,總損失爲四個損失(分割兩個,估計兩個)相加。
疑問
- 兩階段在訓練時不分開有什麼好處嗎?感覺許多分兩階段的在訓練時仍然放一起訓練,難道不更難收斂嗎?而且如果一起訓練效果更好,那不是說明了分兩階段的解釋其實沒有那麼強?
相關的思考
- 這篇paper其實並不是很相關,但它體現了我們可以如何人爲地添加一些條件(比如平面)來幫助神經網絡認識世界。但它的方法僅適用於平面,無法很好地拓展到其他情況,比如球體、圓柱體,乃至旋轉性、對稱性等等。另一些paper,用於人造機械的識別,因爲機械會有大量的軸對稱、旋轉對稱,因此會有專門的結構來識別或重建它們,但要形成一個統一的約束條件感覺很難。
- 有一些結果還是挺神奇的,比如光照下的,一個平面被分成了有陰影和沒有陰影的兩塊,這時它們的樣子看起來還是差別挺大的,而且有明顯的分界線,但有些結果仍能將它們識別爲同一平面。還有一些牆上掛着畫,它也能將畫看做是牆的一部分。但如果有時是一個凸出的平面,則又能分開,有一點意思。
參考文獻
Yu, Zehao, et al. “Single-Image Piece-wise Planar 3D Reconstruction via Associative Embedding.” arXiv preprint arXiv:1902.09777 (2019).