Motivation
- Depth, Sceneflow를 동시에 푸는 것은 ill-posed 문제이고, 수 많은 해가 존재한다.
- 먼저 옵티컬 플로우를 추정하고, 알려진 포즈와 함께 initial depth를 연산한다. 그리고 sceneflow, depth를 refinement하는 파이프라인을 제안한다.
(그러니까 원 스테이지로는 하기가 힘드니 투 스테이지로 해보겠다는 의미)
Related Works
비디오 기반의 SSL를 통한 3D perception 학습들은 아래의 네 가지 태스크로 나뉜다.
- Ego-motion estimation
- Monocular Depth estimation → Scale ambiguity, Static assumption 문제 발생
- Opticalflow estimation
- Sceneflow estimation → Can not handle sceneflow from opticalflow esitmator (indirectly estimation), stereo manner at training time
모두 개별 태스크에서 우수한 성능을 보이지만, scale ambuiguity 문제가 있다. 이러한 작업들은 Ego-motion과 플로우 추정과 관련이 있지만, 결국 reprojection 모호성을 해결해기 위해 스테레오 데이터셋가 필요하다.
Contribution
RAFT based architecture for joint depth, opticalflow, sceneflow estiamtion
훈련 중, 스테레오 데이터가 필요없는 최초의 SSL 기반 Monocular Depth Estimation 파이프라인. 특히 scale-amiguous 문제를 synthetic camera로 해결 (왜 그런건지는 잘 모르겠음)
옵티컬 플로우를 통한 Depth triangulation
옵티컬 플로우로 t → t+1 좌표 변환이나, pose를 통한 t → t+1 좌표 변환이나 이론적으로 같아야 한다. 여기서 cross product를 사용 → cross product는 두 벡터의 방향이 같으면 값이 0이다. 따라서 각 픽셀 좌표 [x, y, 1]도 모두 같다면 픽셀 레벨 cross product가 0이다. (옵티컬 플로우, pose가 known이라면 depth 추정 가능)Depth, Sceneflow estimation (2 Stage)
Depth, sceneflow estimation은 3.과 같이 이미지 피처와 correlation pyramid을 같이 사용한다. 그리고 여기에 3.에서 얻은 triangulated depth map을 추가로 가져간다. 이를 다시 RAFT 네트워크에 포워드해서 depth, ceneflow를 추정한다. 특히 sceneflow 추정에서 KT(DK^-1p + Scene) 수식을 사용 (이것은 내가 틀리다고 생각한 수식이다.)Forward, Backward esitmation
t → t+1 : forward, t+1 → t: backward (당연한 이야기)Mixed batch for pre-training 리얼 데이터와 합성 데이터를 섞어서 학습에 사용
→ 리얼 데이터는 SSL, 합성 데이터는 지도 학습용으로 사용. 따라서 로스 함수도 리얼 데이터 로스와 합성 데이터 로스로 구성함. 특히 supervised loss는 4가지 텀으로 구성된다.- GT depth와의 L1 norm
- GT optical와의 L1 norm
- GT scene와의 L1 norm
Surface normal regularization: normal vector의 코사인 유사도가 얼마나 같은지를 계산한다. 그 외는 self-supervised loss로 흔히 쓰는 photometric, smooth 로스이고 또한 consistency 로스를 추가한다.
Experiments
생략
Conlcusion
생략