[AAAI 2024]ZeroPose: CAD-Model-based Zero-Shot Pose Estimation

안녕하세요, AAAI 2024에 게재된 6D pose estimation 관련 논문입니다.

다양한 foundation model 적용을 6D task에 적용하는 것을 보니 되게 신기하고 흥미롭습니다.

리뷰 시작하겠습니다.

Introduction

Pose estimation은 다양한 로봇 및 증강 현실 어플리케이션에서 중요한 역할을 하고 있습니다. 기존의 딥러닝 방법론은 각 대상 물체에 대해 large-scale의 데이터셋을 통해 학습하고 seen object에 대해 성능을 평가하는 방식으로 진행되었습니다. 하지만 novel(unseen) object가 존재한다면 합성데이터를 다시 만들고 어노테이션을 진행하고 모델을 다시 학습하고 이러한 행위를 하는 것은 상당한 시간과 노력이 필요를 하게 됩니다. 이는 모델의 일반화와 확장성에 대해 크게 제한을 하는 것이며, 많은 시간과 학습 비용은 novel object에 대한 pose estimation의 실제 어플리케이션에서 적용하기 어려운 문제이기도 한데요. 이러한 문제를 효과적으로 해결하여 최종적으로 pose estimation을 수행하는 방법론들이 활발히 진행되고 있습니다.

이번 ZeroPose의 contribution은 다음과 같습니다.

  • Full zero-shot pose estimation 파이프라인
  • 간단하고 효과적인 Zero-shot segmentation
  • 계층적 기하학적 feature matching을 기반으로 하는 pose estimator 제안
  • 다양한 실험에서의 SOTA 달성 및 효율적인 연산량

Method

CAD model-based Zero-shot Instance Segmentation

그림 2의 첫 번째 과정에 대한 과정입니다.

CNOS, SAM-6D 리뷰와 동일하게 물체의 영역에 대한 detection은 foundation model인 SAM을 사용하였으며 RoI 영역에 대한 proposal mask를 가지는 것까지는 동일합니다. 다만 다른 부분은 DINOv2가 아닌 다른 visual feature extractor를 사용한다는 것인데요. 이번 ZeroPose에서는 Meta에서 만든 ImageBind 라는 foundation model을 사용하여 Offline Render 과정에서 뽑은 3D CAD model에 대한template에 대해서 visual feature를 추출하였다고 합니다. ImageBind 같은 경우, (설명 추가)

이렇게 SAM으로 뽑은 proposal mask에 대하서도 ImageBind을 사용하여 visual feature를 추출하고 각각에 대한 식(1)과 같이 proposal과 template에 대한 cosine feature similarity를 계산합니다. 이때 F_{t}는 template, F_{s}는 proposal mask를 의미합니다.

앞서 구한 유사도 측정을 통해 각 mask에는 대응되는 CAD model의 ID로 라벨링이 되어 다음 과정의 입력으로 들어가게 됩니다.

CAD model-based Zero-shot Pose Estimator

두 번째 과정인 pose estimation을 수행하는 과정입니다.

pose estimator의 목표는 결국 대상 물체를 object frame → camera frame으로의 CAD 모델에 대한 변환인 rotation과 translation을 추정하는 것을 목표를 할 것 입니다.

저자는 산업 현장에서 사용 되는 어플리케이션 측면에서 보았을 때, 센서를 통해 취득되는 depth와 3D CAD 모델을 쉽게 취득할 수 있을 것이라고 하는데요. depth는 그러려니 하겠지만 CAD는 사실 모든 물체에 대한 fitting 된 모델 자체를 매번 구하는 것은 쉽지 않은데 이렇게 말을 하는 것은 의문이 들긴 하네요. depth도 있고 3D CAD 모델이 있으니, 3D-3D matching을 하면 되지 않나? 라는 의구심을 들 수 있지만 실제로는 물체에 대한 scale이 다양한 문제가 있을 것이고, 각각에 대한 포인트 클라우드의 overlap 정도가 낮으므로 3D-3D mathcing이 어려울 것입니다. 실제로도 BOP 데이터셋 같은 경우 2cm~47cm까지 되게 다양하게 분포하고 있습니다. 이처럼 물체의 scale의 분포 범위가 꽤 넓기 때문에 3D-3D matching을 수행하기 위해서는 적절하면서 고정된 receptive field scale을 선택하는 것이 어려운데요. 예시를 들어보면, 0.2cm의 고정된 receptive field scale은 작은 물체에는 너무 커서 정밀한 추정이 어려울 것이고, 큰 물체에는 너무 작아서 뚜렷한 특징이 없을 수 있다는 것입니다. 그리고 두 번째 문제였던 낮은 overlap 정도인데요. 해당 원인은 보통 CAD 모델의 경우, 포인트 클라우드 집합은 mesh의 surface에서 uniform하게 샘플링 된다고 합니다. 장면 포인트 클라우드라는 단어가 나오는데요. CAD 모델에 대한 subset을 의미합니다. 즉, 제가 보고 있는 뷰포인트에 대한 포인트 클라우드로 보시면 되겠습니다. 이는 다시 말하면 물체에 대한 visible한 region에서만 사용한다는 의미인데요. CAD 모델과 동일한 이미지 내 물체의 visible한 region의 비율을 살펴보면 전체 중 15% 미만이었으며, 해당 결과를 통해 overlap 비율이 낮다는 것을 확인할 수 있었다고 합니다. 이렇게 overlap 비율이 낮은 포인트에 대해서 만약 사용한다고 했을 때, PnP(2D-3D), ICP(3D-3D)와 같은 matching 알고리즘을 하면 outlier를 제거하기 위해 RANSAC 을 같이 사용하게 될텐데요. outlier까지 제거하게 되면 사용할 수 있는 포인트가 더 줄게 되겠죠. 이러한 문제 때문에 Zero-shot을 통한 학습 방법으로는 효율적인 3D-3D matching을 하는 것이 어렵다는 것이 논점인데요. 그래서 저자는 두 가지의 모듈을 제안하게 됩니다.

Dynamic scale module

물체에 대한 scale 문제를 해결하기 위한 모듈

장면 포인트 클라우드와 CAD 모델의 포인트 클라우드가 주어졌을 때, 두 포인트 클라우드를 zero-mean으로 정규화하고 CAD 모델의 둘레를 구의 반지름으로 선택하여 물리적인 크기를 구의 반지름을 기준으로 한 상대적 단위로 scaling을 합니다. 이러한 상대적 단위를 사용하였더니 scale 차이로 발생했었던 잘못된 matching 문제를 해결하는 결과를 보였다고 합니다.

Hierarchical matching module

3D-3D matching 문제를 해결하기 위한 모듈

이는 적절한 matching을 수행하기 위해 hierarchical한 포인트 클라우드 feature를 추출하기 위해 제안되었는데요. 위 그림(3)을 보면, 빨강 박스와 같이 receptive field가 큰 high-level feature를 사용하여 visible 영역에 따라 CAD 모델의 최적의 뷰포인트를 찾습니다. 즉, 그림의 의미는 사전에 정의된 뷰포인트(좌측)에서 최적의 뷰포인트(우측)를 찾는 과정입니다. 그런 다음, low-level feature를 사용하여 예측된 포인트 클라우드(우측 빨강/주황 틈으로 보이는 초록색 점들)과 장면 포인트 클라우드 간의 point-to-point correspondence을 찾도록 합니다. 그림에서는 초록 점선을 의미하네요. 이러한 hierarchical한 구조를 통해 visible region 내에서 matching 범위를 한정할 수 있어, visible/invisible 한 영역 간의 mismatching 문제를 해결할 수 있었다고 합니다.

따라서, correspondence를 찾았으니 이를 기반으로 식(2)와 같이 포인트 클라우드 거리를 최소화하여 SVD를 통해 최종 R,t를 계산하도록 하였다고 합니다. o_{x_i}(CAD 모델 포인트 클라우드에서의 점), s_{y_{i}}(장면 포인트 클라우드에서의 점)는 매칭된 correspondence 입니다.

저자는 high-level/low-level에 대한 representation feature를 추출하기 위해 포인트 클라우드를 다루는 backbone 모델인 GeoTransformer[1] 모델을 사용하였으며 이를 GSO(large-scale CAD 모델 데이터셋)에서 재학습 하여 뷰포인트 매칭과 local한 기하학적 구조에 대한 매칭을 학습합니다. backbone에서는 다양한 level에 대한 feature를 생성하도록 하겠네요. high-level feature는 비교적 큰 receptive field를 가져 구별력/변별력이 있고, low-level feature는 비교적 작은 receptive field를 가져 정확한 위치 정보를 제공할 수 있는 효과가 있지만 결국 high-level에서의 역할이 최종 R,t를 추정하는 것에 좀 더 중요해 보이는데요. 저자는 이러한 high-level feature에 대해 학습시키기 위해 loss가 큰 영역을 찾도록 하는 모델을 설계하기 위해 Overlap-aware circle loss를 사용하였다고 합니다. GeoTransformer 논문에서 제안된 loss function해당 loss function은 CAD 모델의 visible region과 해당 장면 포인트 클라우드 영역을 positive sample으로 선택하도록 합니다. 만약 특정 threshold 보다 겹치는 부분이 적은 경우 negative sample로 간주하도록 합니다. low-level feature 같은 경우는 작은 receptive field를 사용하여 3D point들 간의 correspondence를 계산하도록 했었습니다. 즉, 식(2)에 사용되도록 합니다.

정리하면, 학습 데이터셋(GSO)에 GeoTransformer 모델을 적용하여 loss function(식(3))을 적용하였다 라고 이해하시면 되겠습니다. GeoTransformer 논문의 loss function을 그대로 사용하는 것을 보아 적용한 것 말고는 없는데 적용한 것으로도 큰 contribution인가 봅니다.

[1] Qin, Z.; Yu, H.; Wang, C.; Guo, Y.; Peng, Y.; Ilic, S.; Hu, D.; and Xu, K. 2023. GeoTransformer: Fast and Robust Point Cloud Registration With Geometric Transformer. IEEE Transactions on Pattern Analysis and Machine Intelligence.

Experiments

Datasets

학습 데이터는 Google-Scanned-Objects(GSO) 데이터셋으로 학습을 하였다고 했는데, MegaPose에서 제공하는 데이터셋입니다. 100만개의 합성 이미지 및 1000개의 3D 모델로 구성되어 있습니다.

평가 데이터는 BOP challenge에서 사용되는 7개의 코어 데이터셋(LM-O, T-LESS, TUD-L, IC-BIN, ITODD, HB, YCB-V)를 사용합니다.

(참고)

BOP 5(LM-O, T-LESS, TUD-L, IC-BIN, ITODD)

BOP 7(ALL)

Instance Segmentation Metrics

mAP(IoU threshold[0.5:0.05:0.95])

Pose Estimation Metrics

AR = (AR_{VSD} + AR_{MSSD} + AR_{MSPD}) / 3 – 이승현 연구원님 리뷰 중 평가지표 참고

Evaluation of Zero-Shot Instance Segmentation

표(1)은 BOP 7에 대한 segmentation 성능을 비교한 결과입니다.

당시 비교 실험을 위한 방법론이 없었기 때문에 저자는 텍스트 기반의 Zero-shot segmentation과 비교를 하였다고 하네요. supervised(1~4행)의 비교는 CosyPose에서 사용되는 Mask RCNN과 당시 SOTA 방법론인 ZebraPose에서 사용되는 앞단 detection 파트와 비교를 하였으며 이를 upper로 잡습니다. unsupervised(5~6행)의 비교를 위해 텍스트 기반의 Zero-shot segmentation 같은 경우 동일한 파이프라인을 가져가되 template 이미지에 대한 feature를 사용하는 것이 아닌, 텍스트 임베딩을 사용하는 식으로 대체하여 비교하였다고 합니다.

실험 결과는 텍스트 기반의 방법론 보다 훨씬 좋은 성능을 보여주고 있네요. ZebraPose보다는 낮지만 Mask RCNN 보다 성능이 좀 더 좋은 것을 확인할 수 있습니다.

Evaluation of Zero-Shot Pose Estimation

표(2)은 BOP 7에 대한 pose estimation 성능을 비교한 결과입니다.

저자는 pose 추정에 대한 성능을 비교하기 위해 여기서도 supervised/unsupervised로 나누어 비교를 하였는데요. 당연히 여기서도 supervised가 upper가 됩니다. Zero-shot 같은 경우 어떠한 물체도 미리 얻을 수 없다는 가정인데요. 따라서, supervised 보다 성능이 부분에 있어서 한계가 있습니다. unseen 물체에 대해서 SAM 같은 detection 모델이 있어 일반화를 할 수 있다고는 하지만 여전히 pose 초기화 과정은 여전히 challenge합니다. supervision을 줄 경우 4-5행에서는 refinement(MegaPose에서 사용되는 모듈과 동일)를 적용의 유무에도 MegaPose보다 우세한 성능을 보입니다. 당시 Zero-shot 방법론인 OSOP은 하나의 물체에 대한 여러 인스턴스가 있는 경우에는 적용이 제약이 있으므로 산업 현장에서 좀 더 높은 적용 가능성을 보임을 보여주고 있습니다.

Time Efficiency

MegaPose와 pose estimation에 대한 결과인데요. 모든 데이터셋에서 수행하지 않은 것이 조금 아쉽지만 8배 이상 차이나는 것을 확인할 수 있습니다.

Ablation Study

Comparison of the template images generation methods

template 생성 방법에 대한 효과에 대한 분석을 진행합니다. 즉, 렌더링 방법에 대한 실험 내용인데요. Pyrender(St.1)와 BlenderProc(St.2)을 비교합니다. number는 뷰포인트 샘플링 수를 의미합니다. 표(4)와 같이 실험 결과를 통해 BlenderProc을 사용하여 128개의 뷰포인트로 구성된 template을 사용하였다고 합니다.

Effect of dynamic scale module and hierarchical matching module

각각에 대한 모듈에 대한 성능을 리포팅한 결과 입니다.

Comparison of Different Visual Foundation Models

Visual feature extractor에 대한 비교 결과 입니다. ImageBind가 좀 더 후속 연구이기도 하고 규모가 좀 더 커 정확도를 증가시킨 것으로 분석하고 있습니다.

Conclusion

이번 ZeroPose는 scene 이미지에서 물체에 대한 후보를 segmentation을 통해 뽑아 이에 대한 유사도를 측정하여 라벨링을 하고 이후 pose estimator의 입력으로 넣어주게 됩니다. pose estimation을 위해 3D-3D matching을 수행하기 제안한 2개의 모듈(dynamic scale, hierarchical matching)을 사용하여 발생되는 문제들을 완화하는 pose estimator를 구성하여 최종적인 파이프라인을 제공하였습니다.

이상으로 논문 리뷰 마치겠습니다.

감사합니다.

Author: 양 희진

10 thoughts on “[AAAI 2024]ZeroPose: CAD-Model-based Zero-Shot Pose Estimation

  1. 좋은 리뷰 감사합니다.

    depth와 CAD모델에 대하여 3D-3D matching을 하지 않는 이유 중 두번째로 포인트 클라우드의 overlap정도가 낮기 때문에 어려움이 있다고 하셨는 데, 이는 이미지에서 확인할 수 있는 객체 영역이 CAD 모델의 표면에 비해 15%정도로 낮고 이상치 제거 등을 거칠 경우 더 비율이 줄어든다는 것으로 이해하였습니다.

    이에 대하여 Hierarchical matching module을 제안하였다고 하셨는데, 빨간 박스 영역이 receptive field가 크다는 것은 혹시 어떻게 알 수 있는 지 설명해주실 수 있을까요?? 또한 high-level feature의 매칭 먼저 구한 뒤 low-level feature를 이용하는 것이 mismatching 문제를 어떻게 해결할 수 있는 지 잘 이해가 되지 않아 추가로 설명 부탁드립니다..(또한, Figure3이 누락되어있어서 추가해주시면 좋을 것 같습니다.)

    또한, time efficiency에 대한 실험 결과를 보면 MegaPose대비 8배 이상 성능 개선이 이루어졌다고 하셨는 데, 해당 방법론의 어떤 점이 속도를 빠르게 한 것인 지 추가로 설명해주실 수 있나요? 제안한 방법론에서 어떤 부분이 효율적인 것인 지 궁금합니다.

    감사합니다.

    1. 안녕하세요, 리뷰 읽어주셔서 감사합니다.

      말씀해주신 그림(3)이 누락되어 추가하였습니다.

      먼저, high-level feature를 생각해보면 가장 hierarchical한 feature의 semantic한 representation이라고 말을 할 수 있습니다. 이에따라, 빨간 박스영역과 같이 사전에 정의된 CAD 모델의 뷰포인트와 visible region에 대한 뷰포인트간에 가장 매칭이 잘 된 matching pair들입니다. 이러한 포인트들을 high-level feature로 사용하여 사용하여 적절한 뷰포인트를 찾고 low-level feature를 이용하여 뒷편과 같은 추가적인 matching pair를 예측하도록 설계를 하여 조금 더 matching에 용이하게 설계하였습니다.

      time efficiency에 대한 결과는 rendering 과정에 대한 비교였습니다. MegaPose가 작동하는 과정 중 Coarse Pose estimation 과정 중 rendering된 이미지가 입력으로 들어가게 되는데, 이와 비교해보았을 때, 8배 이상 빠른 결과로 리포팅을 하였습니다.

      감사합니다.

  2. 안녕하세요, 희진님! 좋은 리뷰 감사합니다.

    두 가지 정도 질문사항이 있습니다!

    먼저, CAD model-based Zero-shot Instance Segmentation과정에서 결과물로 어떤 것들이 나오는 것인지 궁금합니다. similarity를 기반으로 한, 이미지 내에 존재하는 타겟 물체와 동일하다고 판단된 CAD모델과 그 모델의 ID와 mask인 것인가요?

    그리고, pose estimation과정에서 3D-3D 매칭이 힘든 이유 두 가지를 언급해주셨는데, 그 중 두번째 이유에서
    뭔가 이미지상의 물체의 포인트클라우드와 cad모델에서 렌더링한 이미지의 포인트클라우드를 비교해서 매칭을 해야하는데, cad모델에서 렌더링한 이미지에 대한 포인트클라우드를 생성함이 있어서 어려움이 있다는 것인가요?

    감사합니다.

    1. 안녕하세요, 리뷰 읽어주셔서 감사합니다.

      1. instance segmentation 결과는 조현석 연구원님께서 말씀하신 proposal mask와 대응되는 CAD 모델의 ID를 출력으로 합니다.

      2. 장면 포인트 클라우드라는 개념을 작성해놓았는데, 실제로 이러한 장면 포인트 클라우드는 visible region만큼만 사용하는 것이기 때문에 일부분만 사용하게 됩니다. 적은 포인트 클라우드를 사용하는 것도 모자라, RANSAC과 같은 알고리즘으로 outlier를 제거하면 사용할 수 있는 정보가 더 줄 것입니다. 이러한 이유로 matching을 수행하는 것에 어려움이 있습니다. 결론은 적절한 feature를 잘 추출하여 matching 하는 것에 matching을 위한 정보를 좀 더 부가적으로 주는 것을 목표로 합니다.

      감사합니다.

  3. 안녕하세요. 좋은 리뷰 감사합니다.

    렌더링 방법에 대한 ablation study를 보이는 table 4에서 결국 최종적으로 blenderProc을 사용하여 128개의 뷰포인트로 구성된 템플릿을 사용한다고 하였는데, pyrender같은 경우는 viewpoint 수를 642까지 늘려서 결과를 확인했는데 왜 blenderProc에서는 128의 viewpoint까지만 두고 실험한 것인지 궁금합니다. 두 렌더링 방법에서 각자의 뷰포인트 개수 선택폭이 정해져있는 것인가요 ? 왜 두 viewpoint sampling 수를 다르게 실험한건 ㅈ ㅣ . .

    감사합니다.

    1. 안녕하세요, 리뷰 읽어주셔서 감사합니다.

      해당 내용은 저도 캐치를 못 하였네요.
      먼저 뷰포인트 수의 차이에 대한 설명을 드리자면, 42-162-642장이 선행 연구에서 적절한 pose 분포를 가지도록 하는 뷰포인트 샘플링 결과라고 합니다. 두 번째 질문인 BlenderProc을 사용할 때는 비슷한 pose를 가지는 경우를 좀 더 없애는 작업을 추가적으로 거쳤다는 내용이 있습니다. 더 적은 렌더링 결과로 더 좋은 결과를 도출했다는 결과입니다. 그리고 BlenderProc은 제가 알기로 Pyrender 보다 렌더링이 느리지만 좀 더 정교한 결과를 얻을 수 있습니다. 642장에 대한 추가적인 샘플링 과정은 왜 하지 않았는지 정확히는 모르겠지만 BOP challenge에서 전체 파이프라인 과정에서 특정 속도(시간)에 대한 제한되는 결과가 나와서 안넣은 것이 아닐까 라는 추측하고 있습니다.

      감사합니다.

  4. 좋은 리뷰 감사합니다.
    몇가지 질문 남기고 가겠습니다.

    1. DINO v2 대신 해서 Audio&Text <-> Image 기반인 foudation model인 ImageBind를 사용한 이유가 무엇일까요?
    2. Hierarchical matching module에서 “이는 적절한 matching을 수행하기 위해 hierarchical한 포인트 클라우드 feature를 추출하기 위해 제안되었는데요.” 라고 말씀하셨지만 리뷰 내용에서는 feature를 어떻게 추출하는지에 대한 설명이 없는 것 같아요. 혹시 있다면 어느 부분인지 가이드 부탁드립니다.

    1. 안녕하세요, 리뷰 읽어주셔서 감사합니다.

      1. ImageBind를 사용한 이유에 대해서 언급을 하지 않아 처음에는 의아했으나, 해당 논문의 경우 DINOv2가 나오기 이전에 arXiv에 게재된 것으로 보아 논문을 작성할 당시에는 ImageBind가 feature extractor의 역할을 하는 SOTA foundation model이라 사용한 것으로 보입니다.

      2. GeoTransformer를 backbone으로 사용하여 point cloud의 feature를 추출하였다고 식(2) 다음 문단에 작성을 해두었습니다. 해당 GeoTransformer를 그대로 사용하였다고 이해해주시면 되겠습니다. pretrained 모델을 만들기 위해 GSO 모델을 사용하여 학습을 진행하였다고 합니다.

      감사합니다.

  5. 안녕하세요 ! 좋은 리뷰 감사합니다.
    6D 어노테이션을 해보니 해당 task에서 어노테이션 과정 없이 수행할 수 있는 방법에 대한 연구가 큰 contribution이 될 것 같습니다. 그런데 zero shot임에도 불구하고 3D 캐드 모델에서 얻는 정보가 필요한가 봅니다. foundation 모델을 사용하긴 하나, 제가 알기로는 cad 모델의 경우 이미지에서 보이는 물체와 카테고리가 같더라도 완전히 동일한 텍스처 정보나 형태를 띄고 있어야 하는데 이러한 정보까지 완전히 동일하지 않더라도 문제가 되지 않는걸까요 ??
    감사합니다.

    1. 안녕하세요, 리뷰 읽어주셔서 감사합니다.

      unseen object pose estimation 같은 경우 inference 할 때 앞단(segmentation)을 수행할 때는 사전에 CAD 모델의 visual feature를 추출하기 위해 동일한 CAD 모델이 필요합니다. 또한, 뒷단(pose estimation)을 수행하는 과정에서도 scale, transformataion을 알기 위해서는 동일한 CAD 모델을 필요로 하게 됩니다.

      혼동이 되는 부분이 있으신 경우 말씀해주시면 감사하겠습니다.

      감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다