[논문리뷰] GoTrack: Generic 6DoF Object Pose Refinement and Tracking (CVPRW 2025)
SLAM의 지혜를 object tracking으로. GoTrack은 CAD model 기반 6DoF object pose refinement·tracking 방법이다. 기존 방법들이 model-to-frame registration(analysis-by-synthesis)에만 의존하는 것과 달리, SLAM에서 영감을 받아 frame-to-frame registration을 결합해 계산을 아끼고 tracking을 안정화한다. 두 registration 모두 optical flow 추정으로 구현되고, object별 학습 없이 다양한 물체를 다룬다.
논문 정보
| 항목 | 내용 |
|---|---|
| 제목 | GoTrack: Generic 6DoF Object Pose Refinement and Tracking |
| 저자 | Van Nguyen Nguyen, Christian Forster, Sindi Shkodrani, Vincent Lepetit, Bugra Tekin, Cem Keskin, Tomas Hodan |
| 소속 / 연도 | LIGM(École des Ponts), Meta Reality Labs, CVPR 2025 Workshop CV4MR (arXiv:2506.07155) |
| 분야 | CV / 6DoF object pose estimation, tracking |
| 코드 | GitHub |
1. Introduction
vision 기반 6DoF object pose 추정은 robotics와 AR/VR에 중요한 과제로 지난 10년간 크게 발전했다. 그러나 대부분의 방법은 단일 이미지 입력용으로 설계된 반면, 실제 응용은 연속 프레임에 걸쳐 object pose를 추정하는 6DoF object pose tracking을 요구하는 경우가 많다. 고전적 6DoF object tracking은 keypoint, edge, 직접 최적화(direct optimization)에 의존했다. 최근의 학습 기반 tracking은 뛰어난 성능을 보이지만 RGB-D 입력에 의존하거나 target object별 방대한 학습 데이터가 필요해 적용 범위가 제한된다.
pose tracking과 밀접한 문제가 pose refinement다. 두 문제 모두 이미지·카메라 intrinsics·초기 object pose를 입력받아 정제된 pose를 출력한다. 최근의 6DoF pose refinement 방법들은 analysis-by-synthesis 접근을 쓴다. 3D mesh model을 초기 pose로 rendering하고 입력 프레임에 대한 상대 pose를 예측하는 식이다. pose는 직접 regression하거나, 입력 이미지와 RGB-D rendering 사이의 2D-3D correspondence로 계산한다. 어느 쪽이든 model-to-frame registration을 풀어야 하는데, synthetic-real domain 격차 때문에 쉽지 않고 비교적 무거운 네트워크가 필요하다.
SLAM에서는 3D scene model과 카메라 사이의 pose를 두 종류의 registration으로 연속 추정한다. model-to-frame registration은 시간에 따라 누적된 drift를 현재 프레임과 model의 재정렬로 보정해 전역 일관성을 보장하고, frame-to-frame registration은 카메라가 움직일 때 프레임 간 상대 변환을 효율적으로 계산해 부드러운 증분적 motion 추정을 제공한다. 이 조합이 SLAM에서 효과적임이 입증됐는데도 6DoF object tracking 분야는 model-to-frame registration에만 집중해 왔다.
이 논문은 generic 6DoF object tracking·pose refinement 방법 GoTrack을 제안한다. 최근의 model 기반 pose refinement처럼 model-to-frame registration에 analysis-by-synthesis를 적용하되, SLAM에서 영감을 받아 frame-to-frame registration을 도입해 tracking 시 계산 비용을 줄인다. 두 registration 모두 optical flow 추정으로 구현한다. model-to-frame registration에서는 DINOv2 위에 transformer decoder를 학습해 (1) synthetic object template과 입력 이미지 사이의 optical flow field, (2) 입력 이미지에서 보이는 template 픽셀의 mask를 예측한다. 이 예측에서 보이는 픽셀을 template의 depth channel로 계산한 model 좌표계의 3D 점과 연결해 2D-3D correspondence를 만들고, PnP-RANSAC 알고리즘으로 6DoF pose를 계산한다. frame-to-frame registration은 연속 비디오 프레임의 차이가 보통 최소라서 더 쉬운 문제라는 관찰에 기반해, 작은 기성(off-the-shelf) flow 추정 네트워크로 푼다. frame-to-frame flow로 2D-3D correspondence를 다음 프레임으로 전파하고, frame-to-frame tracking을 놓쳤을 때만 더 비싼 model-to-frame registration을 발동한다. 계산 절약 외에도 frame-to-frame registration은 특히 occlusion에서 더 안정적인 tracking을 보여준다. 추가로 model-to-frame registration을 FoundPose의 BoW 기반 template retrieval과 매끄럽게 결합해 효율적이고 정확한 end-to-end pose 추정 pipeline을 만드는 법을 보이고, 표준 6DoF object pose refinement·tracking 벤치마크에서 state-of-the-art를 달성한다.
기여를 요약하면 다음과 같다.
- 기존 방법보다 단순하면서 큰 pose 편차를 보정할 수 있고, scoring 네트워크 없이 신뢰할 만한 pose confidence score를 만들며, 6DoF object pose 추정·tracking 벤치마크 모두에서 RGB-only state-of-the-art에 도달하는 flow 기반 6DoF pose refiner
- template retrieval로 coarse pose를 빠르게 만들고 flow 기반 refiner로 최적화하는 매끄러운 6DoF pose 추정 pipeline(두 단계 모두 DINOv2에 의존해 구현이 쉽다)
- refiner를 frame-to-frame optical flow 추정으로 확장해 tracking 효율을 높이고 jitter를 줄이며 occlusion에 대한 robustness를 개선하는 robust한 6DoF pose tracking pipeline
[Figure 1] hand-object interaction이 있는 동적 장면에서 CAD model 윤곽선으로 시각화한 6DoF pose tracking 결과(Quest 3·Project Aria 헤드셋으로 촬영한 HOT3D 비디오)
2. Related Work
Object pose estimation and refinement. 최근 6DoF object pose 추정 연구는 다양한 벤치마크를 만들었고 많은 딥러닝 방법을 낳았다. BOP Challenge 2023 보고서에 따르면 state-of-the-art 방법 대부분은 3단계 pipeline((1) 2D detection/segmentation, (2) coarse pose 추정, (3) pose refinement)에 의존한다. seen object 과제의 상위 16개, unseen object 과제의 상위 13개 방법이 모두 이 pipeline을 쓴다. 그러나 3단계 refinement가 주는 정확도 향상에는 큰 비용이 따른다. 예를 들어 BOP 2023 우승자인 GenFlow의 coarse 버전은 평균 6개 물체가 있는 이미지당 3.8초가 걸린다. 반면 rendering된 template과 frozen DINOv2 feature의 nearest neighbor 검색으로 coarse pose를 추정하는 ZS6D·FoundPose 같은 방법은 훨씬 빠르면서 유망한 결과를 보였다. 이에 동기를 얻어 이 논문은 frozen DINOv2 위에 pose refiner를 만들고, 최근 coarse pose 방법들과의 매끄러운 통합도 가능하게 한다. state-of-the-art 정확도에 결정적인 refinement 단계는 보통 반복적 render-and-compare로 구현된다. 직접 regression 방식(seen object의 CosyPose, unseen object의 MegaPose·FoundationPose)이나 2D-3D correspondence 방식(GenFlow)이 있다. 이 방법들의 공통점은 pose ranking/selection 단계가 필요하다는 것인데, test 이미지와 추정 pose의 rendering을 입력받아 pose score를 출력하는 별도 네트워크가 있어야 한다. 이와 달리 이 논문의 접근은 추가 scoring 네트워크 없이 신뢰할 만한 pose score를 만든다.
Object pose tracking. 고전적 object tracking은 keypoint 기반, edge 기반, direct optimization으로 분류된다. keypoint와 direct optimization은 texture 없는 물체에 부적합하고, edge 기반은 배경의 clutter·texture에 취약하다. 이를 극복하려는 학습 기반 방법들은 RGB-D 입력에 의존하거나 target object별 방대한 학습 데이터가 필요하다. unseen object의 6DoF pose tracking 방법도 제안됐지만 단순한 시나리오·움직임에서만 결과를 보였고, 이 논문은 물체가 심하게 가려지거나 손으로 조작되는 더 어려운 조건에 집중한다. 학습 category의 unseen instance를 다루는 category-level 방법, instance-level tracking, model-based·model-free unseen object tracking도 있지만 seen object에 집중하거나 depth 이미지를 써서 적용 범위가 제한된다.
Object pose refinement for tracking of unseen objects. 이 접근과 가장 비슷한 것은 DeepIM·MegaPose·FoundationPose·GenFlow다. DeepIM은 반복적 render-and-compare pose refinement의 딥러닝 접근을 도입했고 unseen object 일반화를 보였지만 실험이 synthetic 이미지에 한정됐다. MegaPose는 이를 확장해 대규모 데이터셋 학습으로 실사 이미지의 unseen object에 강한 일반화를 보였다. GenFlow는 template에서 실제 입력 이미지로의 flow를 추정하는 RAFT 기반 architecture로 BOP Challenge 2023에서 수상했다. 이 논문도 unseen object pose refinement에 flow 기반 방법을 도입하지만, 비싼 shape 제약·미분가능 PnP·특수 신경망 구조·pose scoring 단계 없이 state-of-the-art에 도달한다. 게다가 기존 방법 모두 model-to-frame registration에만 집중해, tracking에 적용하면 pose 파라미터만으로 다음 프레임으로 넘어가고 이미 확립된 registration의 픽셀 수준 정보를 버린다. 이 논문은 frame-to-frame flow로 2D-3D correspondence를 전파하면 효율이 오르고 jitter가 줄어듦을 보인다.
3. Method
먼저 unseen object를 위한 6DoF pose refinement 방법을 제안하고(3.1절), 이 방법이 단일 이미지에서 정확한 object pose를 추정하는 효율적 pipeline(3.2절)과 이미지 시퀀스에서 object pose를 추적하는 pipeline(3.3절)을 어떻게 지원하는지 보인다.
3.1 Flow-based object pose refinement
Problem formulation. 물체의 CAD model, intrinsics를 아는 상태에서 미지의 pose로 물체가 찍힌 RGB 이미지, 그리고 object pose의 coarse 추정이 주어질 때, model의 2D projection이 이미지 속 물체의 모습과 잘 맞도록 pose를 정제하는 것이 목표다. 물체는 강체로 가정하고 pose를 강체 변환 \((\mathbf{R}, \mathbf{t})\) 로 표현한다. \(\mathbf{R}\) 은 model 좌표계에서 카메라 좌표계로의 3D rotation, \(\mathbf{t}\) 는 3D translation이다.
Method overview. 최근의 model 기반 pose refinement처럼 analysis-by-synthesis 접근을 쓴다. (i) CAD model을 주어진 coarse pose로 그린 RGB-D template과 (ii) 입력 RGB 이미지에서 물체 영역(CAD model과 coarse pose로 결정)의 crop을 바탕으로 정제된 pose를 예측한다. rendering과 crop 사이의 상대 6DoF pose를 직접 regression하는 대신, dense한 2D-2D correspondence를 optical flow field로 예측하고 두 이미지 모두에서 보이는 픽셀의 mask를 함께 예측하도록 네트워크를 학습한다. 그런 다음 template depth로 correspondence를 2D-3D로 끌어올려 PnP-RANSAC으로 pose를 추정한다. refinement는 여러 iteration 적용해 정확도를 높일 수 있다. 상대 6DoF pose 대신 2D 출력(flow와 visibility mask)을 예측하면 네트워크가 학습하기 쉽고 해석 가능하며 다용도가 된다. 예측된 correspondence로 신뢰할 만하고 제어 가능한 pose score를 계산할 수 있고, tracking에서는 frame-to-frame flow로 자연스럽게 전파할 수 있다. correspondence 기반 접근은 (3D 추론 부분만 끄면) 2D tracking도 지원할 수 있다.
Predicting 2D-3D correspondences. \(\mathbf{I}_c\) 를 물체의 2D bounding box 주변 입력 RGB 이미지의 perspective crop이라 하자. crop은 FoundPose처럼 2D bounding box 중심을 광축이 지나는 가상 pinhole 카메라로 이미지를 warp해 얻는다. \(\mathbf{I}_t\) 는 pinhole 카메라로 rendering한, 물체를 초기 pose \((\mathbf{R}_0, \mathbf{t}_0)\) 로 보여주는 RGB-D template, \(\mathbf{M}_t\) 는 \(\mathbf{I}_t\) 안 물체 silhouette의 binary mask, \(O\) 는 object model 표면을 나타내는 3D 점 집합이다. \(\mathbf{I}_t\) 와 \(\mathbf{I}_c\) 는 해상도가 같다.
crop \(\mathbf{I}_c\) 와 template \(\mathbf{I}_t\) 의 픽셀 사이 correspondence를 확립한다. 픽셀 \(\mathbf{u}_t \in \mathbf{I}_t\) 와 \(\mathbf{u}_c \in \mathbf{I}_c\) 는 같은 3D 점 \(\mathbf{x} \in O\) 의 2D projection과 정렬될 때 대응한다고 본다. 즉 \(\mathbf{u}_t = \pi_t(\mathbf{R}_0 \mathbf{x} + \mathbf{t}_0)\) 이고 \(\mathbf{u}_c = \pi_c(\bar{\mathbf{R}} \mathbf{x} + \bar{\mathbf{t}})\) 인 경우다. 여기서 \(\pi: \mathbb{R}^3 \mapsto \mathbb{R}^2\) 는 2D projection 연산자, \((\bar{\mathbf{R}}, \bar{\mathbf{t}})\) 는 ground-truth object pose다. correspondence를 확립하기 위해 각 픽셀 \(\mathbf{u}_t \in \mathbf{M}_t\) 에 대해 두 출력을 예측하도록 네트워크를 학습한다. 대응 픽셀 \(\mathbf{u}_c \in \mathbf{I}_c\) 가 보일 likelihood \(v_{t \rightarrow c}(\mathbf{u}_t)\) 와, \(\mathbf{u}_t + \mathbf{f}_{t \rightarrow c}(\mathbf{u}_t) = \mathbf{u}_c\) 를 만족하는 2D flow 벡터 \(\mathbf{f}_{t \rightarrow c}(\mathbf{u}_t)\) 다. 네트워크 예측이 주어지면, \(\mathbf{f}_{t \rightarrow c}(\mathbf{u}_t)\) 로 연결되고 \(v_{t \rightarrow c}(\mathbf{u}_t)\) 가 threshold \(\tau_v\) 를 넘는 픽셀 쌍을 모아 가중 2D-2D correspondence 집합 \(D = \{(\mathbf{u}_c, \mathbf{u}_t, w)\}\) 를 만든다. 가중치 \(w\) 는 \(v_{t \rightarrow c}(\mathbf{u}_t)\) 로 정의한다. 마지막으로 연결된 각 template 픽셀 \(\mathbf{u}_t\) 를 template depth와 알려진 intrinsics로 3D 점 \(\mathbf{x} \in O\) 로 변환해 가중 2D-3D correspondence 집합 \(C = \{(\mathbf{u}_c, \mathbf{x}, w)\}\) 를 얻는다.
Pose fitting. 정제된 pose \((\hat{\mathbf{R}}, \hat{\mathbf{t}})\) 는 확립된 correspondence \(C\) 에서 PnP(Perspective-n-Point) 문제를 풀어 추정한다. FoundPose처럼 EPnP 알고리즘을 robustness를 위한 RANSAC fitting과 결합해 푼다. 이 scheme에서는 무작위로 뽑은 4개 correspondence의 최소 집합으로 PnP를 반복해서 풀고, 2D re-projection 오차가 threshold \(\tau_r\) 아래인 inlier correspondence \(C' \subseteq C\) 가 가장 많은 pose 가설을 출력으로 삼는다. 최종 pose는 모든 inlier로부터 Levenberg-Marquardt 최적화로 정제한다.
Quality of pose estimates. 추정 pose \((\hat{\mathbf{R}}, \hat{\mathbf{t}})\) 의 품질을 \(q = s'/s\) 로 정의한다. \(s'\) 은 inlier correspondence \(C'\) 의 가중치 \(w\) 의 합, \(s\) 는 전체 correspondence \(C\) 의 가중치 합이다. 4절에서 보이듯 이 단순한 품질 척도가 multiple-hypotheses refinement 설정에서 최적 pose 추정을 고르는 데 놀랍도록 효과적이다. 기존 방법들은 이 용도로 특별한 pose scoring 네트워크가 필요하다.
Network architecture and training. frozen DINOv2 backbone으로 이미지 crop \(\mathbf{I}_c\) 와 template 이미지 \(\mathbf{I}_t\) 에서 feature를 추출한다. feature를 CroCov2의 two-branch transformer 기반 decoder(template branch와 crop branch)에 통과시키고, template branch 출력에 DPT head를 적용해 예측을 얻는다. decoder와 head는 모든 픽셀 \(\mathbf{u}_t \in \mathbf{M}_t\) 에 대해 평균낸 다음 loss를 최소화하며 함께 학습한다.
\[\mathcal{L}(\mathbf{u}_t) = \text{BCE}\big( v_{t \rightarrow c}(\mathbf{u}_t), \ \bar{v}_{t \rightarrow c}(\mathbf{u}_t) \big) + \bar{v}_{t \rightarrow c}(\mathbf{u}_t) \, \big\| \mathbf{f}_{t \rightarrow c}(\mathbf{u}_t) - \bar{\mathbf{f}}_{t \rightarrow c}(\mathbf{u}_t) \big\|_1\]첫 항은 예측 visibility \(v_{t \rightarrow c}(\mathbf{u}_t)\) 와 binary ground-truth visibility \(\bar{v}_{t \rightarrow c}(\mathbf{u}_t)\) 사이의 BCE(binary cross entropy) loss다. 둘째 항은 RAFT처럼 예측 flow 벡터 \(\mathbf{f}_{t \rightarrow c}(\mathbf{u}_t)\) 와 ground-truth flow 벡터 \(\bar{\mathbf{f}}_{t \rightarrow c}(\mathbf{u}_t)\) 사이의 L1 거리를 최소화하는데, 앞에 \(\bar{v}_{t \rightarrow c}(\mathbf{u}_t)\) 가 곱해져 있으므로 대응 crop 픽셀이 보이는(\(\bar{v}_{t \rightarrow c}(\mathbf{u}_t) = 1\)) template 픽셀에서만 flow가 supervise된다. ground-truth visibility는 crop에 정의된 modal mask \(\mathbf{M}_c\) 를 써서 \(\mathbf{M}_c(\mathbf{u}_t + \mathbf{f}_{t \rightarrow c}(\mathbf{u}_t))\) 로 정의한다(\(\mathbf{M}_c\) 는 학습 때만 필요하다). 네트워크는 BlenderProc으로 rendering한 PBR 이미지 100만 장과 GT 6DoF pose·2D segmentation mask가 annotation된 1000개 GSO 물체를 제공하는 MegaPose-GSO 데이터셋으로 학습한다. MegaPose처럼 학습 중 강한 image augmentation을 적용해 synthetic 이미지 domain 과적합을 피하고 inference에서 실사 이미지에 적용할 수 있게 하며, GT pose도 무작위로 교란한다.
3.2 Efficient object pose estimation pipeline
unseen object의 6DoF pose 추정 state-of-the-art 방법들처럼 3단계 pipeline(2D object detection, coarse 6DoF pose 추정, 6DoF pose refinement)을 쓴다. 첫 단계는 아무 2D detector(예: CNOS)로 구현할 수 있고, 이 pipeline의 핵심 차이는 나머지 두 단계다. coarse pose 추정에 효율적인 template retrieval을, pose refinement에 flow 기반 접근을 적용하는데 둘 다 frozen DINOv2에 기반한다. 이 간결한 pipeline은 기존 방법보다 빠르면서 경쟁력 있는 정확도를 낸다.
[Figure 2] 효율적인 6DoF pose 추정 pipeline의 개요. offline onboarding에서 template과 DINOv2 feature를 준비하고, test에서 BoW retrieval로 coarse pose를 얻은 뒤 flow 기반 refiner로 정제
Object onboarding. 먼저 offline onboarding 단계에서 FoundPose처럼 RGB-D template 집합(실험에서는 800개)을 미리 rendering한다. texture가 입혀진 3D object model에 대해 3D rotation 군 \(SO(3)\) 를 균일하게 덮도록 sampling한 orientation들로 model을 그리는데, 회색 배경과 고정 조명의 표준 rasterization 기법을 쓴다. template RGB channel의 DINOv2 feature map도 미리 추출해 둔다.
Coarse pose estimation by template retrieval. 2D object detection(예: CNOS)이 주어지면 FoundPose의 빠른 template retrieval 접근으로 coarse object pose를 만든다. 4절에서 검색된 template에 연결된 pose가 flow 기반 refiner가 정확한 pose로 수렴하기에 충분함을 보인다.
Seamless integration. FoundPose의 template retrieval은 frozen DINOv2의 patch feature로 계산한 BoW(Bag-of-Words) descriptor를 쓴다. refiner가 같은 backbone을 쓰므로 feature 추출은 이미지 crop당 한 번만 하면 된다. 추출된 DINOv2 feature는 template 검색과 연결된 pose의 refinement에 모두 쓰인다. 같은 backbone뿐 아니라 두 단계는 완전히 같은 template 기반 object 표현을 공유한다.
3.3 Extension to object pose tracking
Limitation of tracking by refinement. 제안한 refiner는 이전 프레임의 pose를 다음 프레임의 초기 pose로 삼는 방식으로 이미지 시퀀스의 6DoF object pose tracking에 바로 적용할 수 있다. 간단하지만 이 접근은 jitter(급격한 요동이나 불일치로 tracking 출력이 흔들리고 불안정해 보이는 현상)에 시달리는 경향이 있다. 연속 프레임 사이의 예측이 pose 파라미터로만 연결되기 때문이다. 이전 프레임에서 확립한 픽셀 수준 model-to-image registration 정보가 버려지므로, analysis-by-synthesis refinement의 핵심 난제인 registration 과정을 새 프레임마다 사실상 처음부터 다시 해야 한다. 이 한계를 frame-to-frame consistency 도입으로 해결한다.
[Figure 3] tracking을 위한 frame-to-frame consistency. synthetic template과 프레임 사이의 model-to-frame registration에 더해, 연속 프레임 사이의 frame-to-frame registration으로 2D-3D correspondence를 전파
Frame-to-frame consistency. 3D scene model과 카메라 사이의 pose를 model-to-frame뿐 아니라 frame-to-frame registration으로도 연속 추정하는 SLAM 문헌에서 영감을 받아, 이전 비디오 프레임과 현재 프레임 사이의 optical flow 예측으로 직접적인 frame-to-frame 연결을 pipeline에 도입한다. 구체적으로 현재 pose 추정으로 object model을 바라보는 가상 카메라를 구성해 현재 프레임 \(j\) 의 perspective crop을 얻고, RAFT로 이전 crop과 현재 crop 사이의 optical flow를 예측한다. 이 flow를 이전 프레임 \(i\) 에서 확립한 inlier 2D-3D correspondence \(C'_i\) 의 2D 좌표에 적용해 전파된 inlier 집합 \(C'_{i \rightarrow j}\) 를 얻고, EPnP로 pose를 재추정한다. 재추정 pose에 대한 inlier ratio가 threshold \(\tau_i\)(보통 0.8)를 넘으면 재추정 pose를 프레임 \(j\) 의 최종 pose로 삼고 다음 프레임으로 넘어간다. inlier ratio가 threshold 아래면 model-to-frame flow를 예측해 새 2D-3D correspondence 집합 \(C_j\) 를 얻는다. 이때 시간적 pose 부드러움을 위해 두 집합을 결합하는데, 첫 집합의 correspondence는 모두 취하고 둘째 집합에서는 최대 \(r \lvert C'_{i \rightarrow j} \rvert\) 개까지 무작위 선택한다. 즉 두 집합에서 뽑는 correspondence 비율이 최대 \(r\) 이 되게 한다. 결합 집합에서 EPnP로 pose를 추정하고, 결합 집합의 inlier correspondence를 다음 프레임으로 전파한다.
이전 프레임과 현재 프레임에서 뽑는 correspondence의 비율을 제어하는 파라미터 \(r\) 은 jitter와 drift(실제 object pose에서 벗어날 위험) 사이의 trade-off를 조절하는 데 효과적으로 쓸 수 있다. \(r\) 이 낮으면 tracking이 부드러워지지만 drift가 생길 수 있고, \(r\) 이 높으면 jitter가 생길 수 있다.
4. Experiments
6DoF object pose refinement(4.1절)와 tracking(4.2절)의 실험 설정을 설명하고, 각 과제의 state-of-the-art RGB-only 방법과 GoTrack을 비교한다. 구체적으로 BOP 데이터셋에서 refinement 방법 MegaPose·GenFlow와, RBOT 데이터셋에서 tracking 방법 LDT3D·SRT3D·DeepAC와, YCB-V 데이터셋에서 tracking 방법 PoseCNN·PoseRBPF와 비교한다. tracking 방법 중 LDT3D·SRT3D만 unseen object에서 동작하고 DeepAC·PoseCNN·PoseRBPF는 test object로 학습된 방법이다.
Implementation details. 평가한 refinement 방법은 template 800개(그려진 object orientation 사이 약 \(25^\circ\) 간격), template·crop 해상도 \(280 \times 280\) px, ViT-S architecture의 DINOv2, 12개 block의 CroCov2 transformer decoder, 기본 DPT head, visibility threshold \(\tau_v = 0.3\), 최대 400회의 PnP-RANSAC iteration, re-projection threshold \(\tau_r = 4\) px를 쓴다. pose refinement 실험에서는 선행 연구처럼 5회의 refinement iteration을 쓴다. flow 기반 refiner는 onboarding에서 미리 rendering한 template만으로도 동작할 수 있지만(매 refinement iteration에서 현재 pose 추정의 orientation과 가장 잘 맞는 template 사용), 이 방식은 3D model을 현재 pose 추정으로 그려 pose 양자화 오차가 없는 online rendering만큼 잘 동작하지 않았다. online rendering은 선행 연구들도 쓴다. object tracking 실험에서는 template-to-frame registration을 발동하는 파라미터 \(\tau_i = 0.8\), 혼합 비율 \(r = 2\) 를 썼다. flow 기반 refiner는 DINOv2 가중치를 freeze한 채 Adam으로 MegaPose-GSO 데이터셋에서 수렴까지 학습했다.
4.1 6DoF object pose refinement
Evaluation datasets. 7개 core BOP 데이터셋(LM-O, T-LESS, TUD-L, IC-BIN, ITODD, HB, YCB-V)에서 평가한다. 총 132개 물체와 19,048개의 annotation된 test object instance를 포함한다.
Evaluation metrics. BOP 평가 protocol을 쓴다. VSD(Visible Surface Discrepancy), MSSD(Maximum Symmetry-Aware Surface Distance), MSPD(Maximum Symmetry-Aware Projection Distance) 세 지표에 의존하고, 최종 AR(average recall)은 세 지표의 AR 점수를 오차 threshold 범위에 걸쳐 평균해 계산한다.
Baselines. 현재 BOP 벤치마크 state-of-the-art인 MegaPose·GenFlow와 비교한다. 두 방법의 결과는 BOP leaderboard에서 가져왔다.
| # | Method | LM-O \(\text{AR}_{\text{MSPD}}\) | AR | T-LESS \(\text{AR}_{\text{MSPD}}\) | AR | TUD-L \(\text{AR}_{\text{MSPD}}\) | AR | IC-BIN \(\text{AR}_{\text{MSPD}}\) | AR | ITODD \(\text{AR}_{\text{MSPD}}\) | AR | HB \(\text{AR}_{\text{MSPD}}\) | AR | YCB-V \(\text{AR}_{\text{MSPD}}\) | AR | Average \(\text{AR}_{\text{MSPD}}\) ↑ | AR ↑ | Time ↓ | Nets ↓ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Coarse pose estimation: | |||||||||||||||||||
| 01 | FoundPose | 60.7 | 39.6 | 48.9 | 33.8 | 67.0 | 46.7 | 33.9 | 23.9 | 37.0 | 20.4 | 65.0 | 50.8 | 59.6 | 45.2 | 52.2 | 37.2 | 1.7 s | 1 |
| 02 | GigaPose | 51.0 | 29.6 | 47.9 | 26.4 | 51.7 | 30.0 | 34.8 | 22.3 | 31.4 | 17.5 | 52.5 | 34.1 | 52.5 | 27.8 | 45.4 | 26.8 | 0.4 s | 1 |
| 03 | BoW retrieval* | 25.9 | 11.6 | 28.8 | 15.4 | 25.3 | 13.7 | 17.4 | 10.1 | 31.6 | 17.4 | 55.1 | 42.4 | 15.2 | 11.6 | 28.5 | 17.5 | 0.3 s | 1 |
| Refinement, FoundPose의 단일 hypothesis: | |||||||||||||||||||
| 04 | GoTrack | 70.4 | 56.5 | 57.3 | 50.4 | 81.5 | 67.2 | 50.7 | 43.2 | 52.8 | 39.3 | 76.3 | 72.2 | 75.8 | 63.1 | 66.4 | 56.0 | 2.5 s | 1 |
| 05 | MegaPose | 67.7 | 55.4 | 55.6 | 51.0 | 78.4 | 63.3 | 47.4 | 43.0 | 45.2 | 34.6 | 73.6 | 69.5 | 76.0 | 66.1 | 63.4 | 54.7 | 4.4 s | 2 |
| Refinement, GigaPose의 단일 hypothesis: | |||||||||||||||||||
| 06 | GoTrack | 72.6 | 58.4 | 61.9 | 54.9 | 73.9 | 61.3 | 52.5 | 45.3 | 50.0 | 39.5 | 77.0 | 72.9 | 73.8 | 62.0 | 66.0 | 56.3 | 1.3 s | 2 |
| 07 | GenFlow | 71.1 | 59.5 | 60.1 | 55.0 | 72.4 | 60.7 | 52.1 | 47.8 | 49.5 | 41.3 | 74.7 | 72.2 | 73.2 | 60.8 | 64.7 | 56.8 | 2.2 s | 2 |
| 08 | MegaPose | 68.0 | 55.7 | 59.2 | 54.1 | 71.9 | 58.0 | 49.4 | 45.0 | 45.4 | 37.6 | 73.1 | 69.3 | 73.4 | 63.2 | 64.2 | 54.7 | 2.3 s | 2 |
| Refinement, BoW retrieval의 coarse pose(3행): | |||||||||||||||||||
| 09 | GoTrack | 70.4 | 56.9 | 56.9 | 50.4 | 79.2 | 65.2 | 49.7 | 42.4 | 52.6 | 40.2 | 72.5 | 69.5 | 75.2 | 62.9 | 65.2 | 55.4 | 0.8 s | 1 |
| Refinement, GigaPose의 5개 hypotheses: | |||||||||||||||||||
| 12 | GoTrack | 78.1 | 62.7 | 66.3 | 59.5 | 80.8 | 66.8 | 54.4 | 46.6 | 56.3 | 43.0 | 81.9 | 77.1 | 80.6 | 68.4 | 71.2 | 60.6 | 3.0 s | 2 |
| 13 | GenFlow | 75.3 | 63.1 | 63.7 | 58.2 | 79.4 | 66.4 | 55.1 | 49.8 | 55.1 | 45.3 | 78.3 | 75.6 | 78.8 | 65.2 | 69.4 | 60.5 | 10.6 s | 3 |
| 14 | MegaPose | 73.6 | 59.8 | 62.0 | 56.5 | 77.9 | 63.1 | 52.8 | 47.3 | 48.5 | 39.7 | 76.5 | 72.2 | 77.7 | 66.1 | 65.3 | 57.8 | 7.7 s | 3 |
[Table 1] 7개 core BOP 데이터셋의 pose refinement 성능(그룹 내 굵게 최고). Time은 이미지 안 모든 물체의 pose 추정 평균 시간(초), Nets는 pipeline에 필요한 서로 다른 신경망 수
Results. FoundPose가 추정한 coarse pose에서 시작하면 GoTrack refiner는 대부분의 BOP 데이터셋에서 MegaPose refiner를 앞서고, 평균 \(\text{AR}_{\text{MSPD}}\) +3.0, AR +1.3을 달성한다(4·5행). GigaPose의 coarse pose에서 시작해도 비슷한 격차로 MegaPose를 앞선다(6·8행). GenFlow와 비교하면 \(\text{AR}_{\text{MSPD}}\) +1.3, AR -0.5다(6·7행). model architecture 복잡도 측면에서 평가된 방법 중 가장 단순한 것은 3.2절에서 제안한, BoW 기반 template retrieval 뒤에 refiner를 붙인 pipeline이다. 이 pipeline은 두 단계가 공유하는 단 하나의 신경망(“Nets” 열)에 의존해 더 빠르고 모바일 기기에 배포하기 쉽다. 방법마다 다른 GPU에서 평가돼(GoTrack은 V100, MegaPose는 RTX 2080, GenFlow는 RTX 3090) 실행 시간의 직접 비교는 어렵지만 복잡도의 차이는 분명하다. GenFlow와 MegaPose pipeline은 coarse pose 추정과 refinement에 서로 다른 네트워크를 쓴다. object instance마다 여러 coarse pose를 고려하고 정제된 pose들을 마지막에 rank해 최종 출력을 고르는 multi-hypotheses 설정에서는 GenFlow·MegaPose pipeline에 별도 scoring 네트워크가 필요하지만, GoTrack은 3.1절에서 정의한 가중 inlier ratio만 계산해도 신뢰할 만한 pose confidence score를 얻는다.
4.2 6DoF object pose tracking
Evaluation datasets. 널리 쓰이는 두 데이터셋 YCB-V와 RBOT에서 tracking 방법을 평가한다.
Evaluation metrics. 표준 평가 지표를 쓴다. YCB-V에서는 ADD·ADD(-S) pose 오차 함수에 대한 AUC(Area Under the Curve), RBOT에서는 5cm-5° 점수와 reset 횟수다. reset은 tracking이 실패했을 때, 즉 translation 오차가 5cm를 넘거나 rotation 오차가 5°를 넘을 때 세고, 이때 방법을 ground-truth pose로 재초기화한다.
Baselines. unseen object tracking의 RGB-only 방법 중 YCB-V에서 평가된 것이 없어, seen object용 tracking 방법(즉 target object로 학습된 방법)인 PoseCNN·PoseRBPF와 비교한다. PoseCNN은 단일 이미지 6DoF pose 추정 방법으로 프레임별로 평가됐고, PoseRBPF는 첫 프레임에서 PoseCNN 추정 pose로 초기화됐다. PoseCNN 추정치가 공개돼 있지 않아 GoTrack은 FoundPose의 pose 추정으로 초기화했다. RBOT에서는 contour 기반 방법 DeepAC·SRT3D, 최적화 기반 방법 LDT3D와 비교한다.
| PoseCNN | PoseRBPF | GoTrack | GoTrack+f2f | |||||
|---|---|---|---|---|---|---|---|---|
| Initialization | - | PoseCNN | FoundPose | FoundPose | ||||
| Unseen objects | ✗ | ✗ | ✓ | ✓ | ||||
| ADD | ADD-S | ADD | ADD-S | ADD | ADD-S | ADD | ADD-S | |
| 002_master_chef_can | 50.9 | 84.0 | 58.0 | 77.1 | 71.0 | 86.3 | 71.3 | 86.3 |
| 003_cracker_box | 51.7 | 76.9 | 76.8 | 87.0 | 79.6 | 89.2 | 80.6 | 89.8 |
| 004_sugar_box | 68.6 | 84.3 | 75.9 | 87.6 | 80.4 | 89.9 | 80.5 | 90.0 |
| 005_tomato_soup_can | 66.0 | 80.9 | 74.9 | 84.5 | 74.0 | 87.2 | 71.2 | 85.8 |
| 006_mustard_bottle | 79.9 | 90.2 | 82.5 | 91.0 | 83.7 | 91.9 | 84.4 | 92.2 |
| 007_tuna_fish_can | 70.4 | 87.9 | 59.0 | 79.0 | 81.4 | 91.7 | 82.0 | 91.9 |
| 008_pudding_box | 62.9 | 79.0 | 57.2 | 72.1 | 82.8 | 90.4 | 83.5 | 90.7 |
| 009_gelatin_box | 75.2 | 87.1 | 88.8 | 93.1 | 83.4 | 90.9 | 84.4 | 91.5 |
| 010_potted_meat_can | 59.6 | 78.5 | 49.3 | 62.0 | 80.5 | 91.3 | 83.5 | 92.8 |
| 011_banana | 72.3 | 85.9 | 24.8 | 61.5 | 53.8 | 71.0 | 56.0 | 68.7 |
| 019_pitcher_base | 52.5 | 76.8 | 75.3 | 88.4 | 79.7 | 90.0 | 79.9 | 90.1 |
| 021_bleach_cleanser | 50.5 | 71.9 | 54.5 | 69.3 | 68.9 | 83.1 | 69.3 | 83.3 |
| 024_bowl | 6.5 | 69.7 | 36.1 | 86.0 | 35.1 | 66.2 | 34.8 | 62.0 |
| 025_mug | 57.7 | 78.0 | 70.9 | 85.4 | 70.1 | 87.1 | 50.8 | 87.4 |
| 035_power_drill | 55.1 | 72.8 | 70.9 | 85.0 | 81.9 | 91.2 | 82.1 | 91.3 |
| 036_wood_block | 31.8 | 65.8 | 2.8 | 33.3 | 0.7 | 30.4 | 5.3 | 40.9 |
| 037_scissors | 35.8 | 56.2 | 21.7 | 33.0 | 58.3 | 76.5 | 59.7 | 77.8 |
| 040_large_marker | 58.0 | 71.4 | 48.7 | 59.3 | 60.0 | 67.3 | 65.0 | 73.9 |
| 051_large_clamp | 25.0 | 49.9 | 47.3 | 76.9 | 64.1 | 83.1 | 64.4 | 83.2 |
| 052_extra_large_clamp | 15.8 | 47.0 | 26.5 | 69.5 | 83.5 | 93.5 | 82.8 | 93.0 |
| 061_foam_brick | 40.4 | 87.8 | 78.2 | 89.7 | 83.0 | 92.3 | 83.3 | 92.4 |
| Average | 53.7 | 75.9 | 59.9 | 77.5 | 69.3 | 82.9 | 69.3 | 83.6 |
[Table 2] YCB-V 데이터셋의 tracking 성능(굵게 최고). ADD·ADD-S pose 오차 함수에 대한 AUC로 측정. YCB-V 물체로 학습되지 않았는데도 이 물체들로 학습된 PoseCNN·PoseRBPF를 능가하고, frame-to-frame consistency(f2f)를 더하면 약간의 정확도 향상과 함께 6배 효율적
Results on YCB-V. Table 2에서 보듯 GoTrack은 YCB-V 물체로 학습되지 않았는데도, 이 물체들 전용으로 학습된 PoseCNN·PoseRBPF를 크게 앞선다. frame-to-frame flow를 더하면 정확도가 약간 오르면서 약 6배 효율적이 된다. template-to-frame registration에 쓰는 flow 기반 refiner의 forward pass는 40ms인 반면 frame-to-frame registration에 쓰는 RAFT-Small의 forward pass는 6ms뿐이다. YCB-V 시퀀스에서 template-to-frame flow는 평균 50프레임마다 한 번만 발동된다. frame-to-frame flow의 또 다른 효과는 jitter 감소다.
| Method | Regular | Dynamic | Noisy | Occlusion | Mean | Resets ↓ | w/o reset Mean |
|---|---|---|---|---|---|---|---|
| SRT3D | 94.2 | 94.6 | 81.7 | 93.2 | 90.9 | 6575 | 19.0 |
| LDT3D | 95.2 | 95.4 | 83.2 | 94.9 | 92.1 | 6228 | 18.8 |
| DeepAC* | 95.6 | 95.6 | 88.0 | 94.0 | 93.3 | 4826 | 30.3 |
| GoTrack | 97.3 | 96.2 | 94.2 | 95.4 | 95.9 | 3021 | 86.7 |
[Table 3] RBOT 데이터셋의 reset 있는/없는 tracking 성능(굵게 최고). 5cm-5° 점수와 reset 횟수로 측정하고, *는 test object로 학습된 supervised 방법
Results on RBOT. Table 3에서 보듯 GoTrack은 모든 RBOT 시퀀스 유형에서 LDT3D·SRT3D·DeepAC를 앞서면서 reset이 37~54% 적다. 가장 두드러진 차이는 contour 검출이 덜 신뢰할 만한 noisy 시퀀스다. 게다가 이 방법들은 뚜렷한 contour를 가진 물체에서만 잘 동작한다. 같은 contour 모양이 여러 다른 pose에 대응하고 실제 pose를 texture로만 추정할 수 있는 경우에 어려움을 겪는다(예를 들어 RBOT의 texture 있는 원통형 soda 물체에서 DeepAC는 5cm-5° 정확도 70.1%인 반면 GoTrack은 97.2%다). 또한 reset 없는 tracking에서 GoTrack이 다른 방법들을 크게 앞선다(AUC 86.7 대 30.3).
5. Conclusion
template-to-frame optical flow와 보이는 template 픽셀의 mask를 예측하는 데 기반한 unseen object 6DoF pose refinement 방법을 제안했다. 이 refinement 방법이 BoW 기반 template retrieval과 매끄럽게 결합해 효율적이고 정확한 object pose 추정 pipeline을 만들 수 있음을 보였다. 추가로 frame-to-frame optical flow로 2D-3D correspondence를 전파하는 unseen object 6DoF pose tracking 확장을 제안했다. 이 접근은 표준 6DoF object pose refinement·tracking 벤치마크에서 state-of-the-art 결과를 달성한다. future work로 SLAM 문헌에서 더 영감을 얻어 model-free 설정으로의 확장을 탐구할 계획이다.