天天看點

GeoNet

GeoNet

GeoNet是商湯科技在CVPR2018發表的關于

無監督

學習光流和估計深度的一篇論文。

其實作無監督機制的核心在于通過

可微分的warp

操作(詳見Spatial Transform Networks),來直接通過計算

warp(img1)

img2

之間的誤差。

GeoNet

GeoNet分為兩個stage,第一個stage計算圖檔整體的位移,在原文中稱之為

Rigid Structure Reconstructor

,這一部分屬于半監督學習。

因為在拍攝照片時相機位姿和内參數都是固定且預設已知的,是以對于估計每張照片拍攝時相機位姿的

PoseNet

而言,是有監督學習的。

由于在這一部分預設圖檔内是隻有整體的位移(因為相機位姿的改變),而沒有單個物體的位移的,是以可以根據 [ R , t ] [R,t] [R,t]使用純幾何學的方法,計算視差,進而對輸出的

DepthMap

進行監督學習。

第二個stage計算圖檔内每個物體的精細位移(motion),在原文中稱之為

Non-Rigid Motion Localizer

。精細化motion的學習采取

殘差(residual)

的方式。最終通過

可微分的warp

操作,實作隻用img1和img2來量化的計算flow的誤差。

GeoNet另外一個核心在于其提出了幾種

尺度歸一化

平滑系數(smoothness)

的loss-function。GeoNet一共有5個損失函數:

1. L r w L_{rw} Lrw​:整體位移(Rigid)的loss-function。

GeoNet

其中 α \alpha α的預設值為0.85。

對于圖檔裡運動的物體,是違反了整體位移假設的,同時,因為相機抖動、噪聲等因素,也會有一些pixel違反該假設。是以需要引入一種魯棒性的方式來平衡噪聲的影響。本文中使用

結構相似性(SSIM)

損失函數(在SSIM中隻統計圖檔整體均值和方差的差異,而不會精确到pixel)。同時也要和1-範數配合使用來保證細節不丢失。

2. L d s L_{ds} Lds​:深度估計的loss-function。

GeoNet

其核心設計在于,為了保留圖像

邊緣

細節(edge-aware),增加

平坦區

部分的loss,而減弱紋理細節細節比較豐富區域的loss。這種方式和導向濾波等濾波方式思想相似。

這裡的梯度指的是圖像内部梯度,即pixel之間的(而不是bp算法裡的梯度)。

3. L f w L_{fw} Lfw​和 L f s L_{fs} Lfs​:flow的誤差和flow的平滑誤差

這兩個loss原文中沒有給出,代碼看的也有點暈,大緻和前兩個loss對标,一個用到SSIM,一個用到平滑度。

5. L g s L_{gs} Lgs​:光流一緻性loss-fuction

GeoNet
GeoNet

用來檢查在fwd和bwd過程中不一緻的點,并定義其為outlier

最後在網絡結構上還有一個小trick,同時輸出s->t和t->的光流(原文中成為

forward

backward

),增強魯棒性。