[AAAI 2022] Self-Supervised Category-Level 6D Object Pose Estimation with Deep Implicit Shape Representation

이번 리뷰는 6D 포즈 추정 태스크에 관한 방법론에 대해 다루고자 합니다. 해당 논문은 단순한 6D 포즈 추정이 아니라 카테고리 수준에서 학습 및 예측을 수행하는 것이 목적입니다. 즉, 같은 클래스 내 다양한 형태를 가진 물체로부터 공통적으로 가지는 속성과 의미론적 정보를 파악하여 보지 못한 물체에 대한 6D 포즈를 예측하는 것을 목적으로 합니다.

Intro

6D 물체 자세 추정은 컴퓨터 비전에서 물체의 위치와 방향을 제공하는 중요한 작업입니다. 로봇 조작과 3D 장면의 이해하기 위해 널리 적용됩니다. 현재 대부분의 기존 연구는 인스턴스 수준의 포즈 추정에 중점을 두고 있으며, 6D 포즈 주석과 사전에 제공되는 정확한 3D 오브젝트 모델(e.g. CAD)에 의존하고 있습니다. 그러나 실제 시나리오에서 모든 객체에 대해 6D 포즈에 주석을 달고 3D 모델을 구축하는 것은 어렵습니다. 최근에는 명시적인 3D 모델 없이도 같은 클래스 내 보지 못한 오브젝트의 6D 포즈와 크기를 모두 예측할 수 있는 카테고리 수준의 6D 포즈 추정이 주목받고 있습니다.

카테고리 수준의 6D 포즈 추정 방식은 기존 방식이 충분한 양의 정확한 3D 물체 정보가 담긴 6D 주석을 이용한 지도 학습을 수행하는 방식과 달리 보지 못한 물체에 대한 정보를 추론하기 위한 해결책으로 일반적으로 자기 지도 학습을 이용합니다. 재구성된 3차원 물체와 렌더링 모델 간의 대응 관계를 통해 학습된 파이프라인을 이용하여 포즈 정보를 추정합니다. 따라서 물체의 고수준의 3차원 기하학 정보는 자기 지도 학습 기반의 포즈 추정, 특히 카테고리 수준의 포즈 추정에서는 매우 중요하게 작용합니다. 하지만 voxell, point cloud, mesh 와 같은 불연속적인 3차원 표현들은 고품질의 형상을 표현하기에는 충분하지 않기 때문에 현재 수준에서는 6D pose label과 3D 모델 없이는 자기 지도 기반의 카테고리 수준의 포즈 추정은 어려우며, 이에 관련된 연구 분야도 거의 없는 상태라고 합니다.
+ 쉽게 말하자면, 자기 지도 학습에도 렌더링된 모델(=CAD 모델)이 필요하다는 이야기입니다.

저자는 이런 도전적인 과제를 수행위해 한가지 재밌는 트릭을 사용합니다. Continuous deep implict functions이 불연속적인 3차원 표현보다 표현력이 뛰어나고 복잡한 형상을 표현하는 데 효율적이라는 점을 착안하여 본 논문에서는 3차원 물체 표현으로 DeepSDF[1]라는 모델을 사용합니다. (아래의 그림을 참고하시면 DeepSDF가 무엇인지 이해하기 좋을 것 같습니다.)

DeepSDF 로부터 추론된 정성적 결과. 가공되지 않은 정보들로부터 정밀한 Signed Distance Function (SDF)를 추론하여 렌더링 모델을 만드는 모델
+ SDF가 렌더링에 있어 어떤 식으로 동작하는지에 대해서는 공부하고 있으나, 익숙하지 않은 내용이라 이해하는데에 시간이 더 필요할 것 같습니다.

각 객체에 대한 명시적인 3D 모델 없이도 클래스에 속하지 않는 객체의 포즈를 추정할 수 있는 자기지도 방식을 구현하기 위해 먼저 합성 데이터에 대해 DeepSDF 디코더를 학습시켜 클래스에 대한 공통 특성을 미리 학습시킨 후, 형상 재구성을 위한 포즈 파라미터와 shape latent vector를 추정하는 자기지도 프레임워크를 구축합니다. 자기 지도 학습에서 초기 네트워크 출력(포즈 및 shape latent vector)이 주어지면 먼저 DeepSDF 디코더에서 물체의 모양을 재구성한 다음, 재구성된 모양과 예측된 회전, 이동 및 스케일 계수를 사용하여 3D 공간에서 지상 실측 포인트 클라우드 간에 최적의 정렬을 적용하기 위해 DeepSDF를 기반으로 몇 가지 새로운 손실 함수를 설계합니다. 형상의 불일치는 포즈 매개변수와 형상 잠재 벡터에 역전파되는 오류 기울기를 생성하여 포즈와 형상을 모두 최적화할 수 있도록 합니다.

Method

Category-Level Shape Prior Learning.

카테고리 수준의 포즈 추정에서 가장 큰 과제는 클래스 내 객체 변형 문제를 해결하고 이전에 보지 못한 객체의 포즈를 예측하는 것입니다. 모양은 인스턴스마다 다르지만 같은 카테고리의 객체는 일반적으로 공통된 속성과 의미 구조를 갖습니다. 예를 들어 캔은 일반적으로 원통형이며, 캔의 차이점은 원통의 높이와 지름에 불과합니다. 인간은 풍부한 경험과 사전 지식을 바탕으로 보이지 않는 물체의 합리적인 3D 형태를 쉽게 추론할 수 있다는 사실에 착안하여, 먼저 그림 1의 하단에 표시된 바와 같이, DeepSDF 디코더가 합성 데이터 세트에서 카테고리 수준의 형태를 먼저 학습하도록 훈련시킵니다.

SDF는 부호화된 거리 함수를 의미하며, 한 점의 SDF 값은 서페이스 경계까지의 거리를 나타내고 부호는 해당 영역이 도형의 안쪽(-) 또는 바깥쪽(+)에 있는지 여부를 나타냅니다. 도형의 경계는 제로 레벨 세트로 인코딩됩니다. DeepSDF는 심층신경망을 사용하여 식 1과 같이 query point p /in R^3와 shape latent vector v /in R^k 로부터 연속 SDF value sdf /in R 을 회귀합니다:

여기서 F는 8개의 fully-connected-layer로 구성된 DeepSDF 디코더입니다. 훈련 후 디코더는 특정 카테고리의 공통 속성을 학습할 수 있으며 각 인스턴스는 shape latent vector에 매핑됩니다. 모든 카테고리에 대해 차원 k를 16으로 설정했습니다. 디코더를 사용하면 물체 표면을 F(v) = 0의 iso-surface(등위면)로 암시적으로 표현할 수 있으며 Marching Cube 알고리즘을 사용하여 추출할 수 있습니다. 재구성된 모델은 정규화된 대상 좌표계에 있으며 unit sphere 내에 포함되어 있습니다.
+ Marching Cube 알고리즘: 연속적인 아날로그 데이터를 폴리곤 형태로 표현하기 위한 알고리즘

해당 기법에서는 NOCS의 합성 데이터 세트에 있는 CAD 모델을 사용하여 DeepSDF 디코더 F를 훈련합니다. 서로 다른 범주의 물체는 사전에 특정 모양을 가지고 있기 때문에 각 범주에 대해 네트워크를 별도로 훈련합니다. 자가 감독을 위한 다음 단계에서는 디코더의 학습된 가중치를 고정하여 네트워크가 각 카테고리의 공통 속성을 기억할 수 있도록 하고, shape predictor는 각 인스턴스에 대한 latent vector만 추정하여 사용되기 때문에 모양 예측의 난이도를 낮출 수 있습니다.

Self-Supervised Pose and Shape Estimation.

Network Architecture. 자기 지도 학습 파이프라인의 개요는 fig 1에 나와 있습니다. 가장 먼저 이미지에서 Mask-RCNN을 이용하여 개별 인스턴스를 감지하고 분할합니다. 감지된 각 인스턴스에 대해 바운딩 박스를 사용하여 RGB 이미지를 자르고 segmentation을 사용하여 깊이 맵을 분할한 다음 카메라 파라미터를 이용하여 포인트 클라우드로 변환합니다. 이미지 패치와 포인트 클라우드 패치를 입력으로 삼아 fig 1과 같이 오브젝트의 회전 R ∈ SO(3), translation t /in R^3 , scale factor s ∈ R과 shape letent vector v /in R^k 를 예측하는 네트워크를 구축합니다. 여기서 사용한 모델은 Densefusion[2]를 기반으로 설계되었다고 합니다. CNN을 이용하여 RGB 이미지 패치에서 외관 특징을 추출하고 포인트 클라우드에서 기하학적 특징을 추출하기 위해 PointNet를 활용합니다.

Self-Supervised Training. 실제 세계에서 3D 주석 없이 모델을 훈련하기 위해~재구성된 모델과 물체의 실제 관측값 간의 정렬을 강화하기 위해 여러 가지 자기지도 학습 기반의 손실 함수를 제안합니다. 먼저 DeepSDF에 영강을 받아 설계한 chamfer loss를 사용하여 6D 포즈와 scale factor에 대한 대략적인 방향성을 제시하고 물체의 관측 포인트 클라우드 P^c_{real} 와 재구성된 모델 P^c_{rec}의 보이는 실제 표면 사이의 기하학적 정렬을 수행합니다. (여기서 위첨자 c는 카메라 좌표계를 나타냄). 구체적으로, DeepSDF representation에서 visible surface를 얻기 위해 fig 1의 하단에 표시된 것처럼 DIST[3]에서 제안한 Sphere Tracing 알고리즘을 실행하여 각 픽셀의 광선 방향과 해당 지점을 따라 최소 절대 SDF 값을 구합니다. 정규화된 목표 좌표계에서 최소 절대 SDF 값이 작은 수렴 임계값보다 작은지 확인하여 가시 포인트 클라우드 P^o_{rec}을 얻을 수 있습니다. 예측된 rotation R, translation t, scale s를 사용하여 P^o_{rec}을 카메라 좌표계 P^c_{rec}으로 변환합니다. 이에 대한 sysmmetric chamfer loss L_{chamfer} 는 다음과 같습니다.
+ Sphere Tracing: 자연스러운 표면 정보를 표현 혹은 습득하기 위한 기법

여기서, P^o_{rec} P^c_{rec} 관계를 도식화하면 다음과 같습니다.

추가로 역전파 수행시 이를 단순화하고 수렴을 안정화하기 위해 P^c_{rec}에 대한 역전파를 비활성화하고 R, t, s를 통해서만 역전파를 수행한다고 합니다.

L_{chamfer} 는 포즈와 스케일만 조정할 수 있지만 모양 정보도 포즈 추정에 없어서는 안될 요소이기에 추가적인 손실 함수를 제안합니다. 특히, 깊이 센서가 수집한 포인트 클라우드가 수집된 포인트 클라우드가 물체의 표면이라는 점을 고려하면 상관 관계에 있는 SDF 값은 0이어야 합니다. 이 속성을 최대한 활용하려면 먼저 수집된 포인트 클라우드 P^c_{real}을 예측된 R, t, s를 사용하여 정규화된 목표 좌표계 P^o_{real}로 변환한 다음, 변환된 점과 형상 잠상 벡터를 DeepSDF 디코더에 입력하여 출력 SDF 값이 0에 가까워지도록 합니다. 이 과정은 fig 2와 같습니다. SDF alignment loss L_{sdf} 는 다음과 같이 표현됩니다:

위 수식에서 1(·)은 대상 좌표계에서 단우 구 내부의 점만 고려하기 위한 indicator function으로, 편차가 큰 6D 포즈와 포인트 클라우드의 이상 값이 모양 조정에 미치는 영향을 피하기 위한 장치입니다. 또한, SDF 값이 0과 차이가 나면 DeepSDF 디코더를 통해 포즈 파라미터와 shape latent vecotr로 역파되는 기울기가 생성되어져 이에 대한 최적화를 수행할 수 있게 됩니다.

또한 latent vector v를 제한하기 위한 regulation loss L_{reg} 를 정의하면 다음과 같습니다.

여기서 /beta 는 하이퍼파라미터로 수동 조절 할 수 있습니다.
전체적인 자기 지도 손실 함수를 정리하면 다음과 같습니다.

Pre-training and Joint Learning. 자가 지도 프레임워크의 학습을 위해서는 포즈와 모양 추정을 위해 초기화가 매우 중요하다고 합니다. 해당 논문에서는 먼저 합성 데이터 세트에 대해 지도 방식으로 모델을 사전 훈련하여 좋은 초기화를 제공하고 대상의 포즈와 모양의 대략적인 분포에 대한 사전 정보를 학습할 수 있도록 합니다. 합성 데이터 세트에 대한 fully supervised loss는 다음과 같이 정의됩니다

여기서 x_i 는 3차원 모델에서 무작위 샘플링된 N개의 점 중 i번째 점에 해당합니다. R_{gt}, t_{gt}, s_{gt} 는 각각 회전, 이동, 스케일에 대한 GT 값에 해당합니다.
L_{pose} 는 다음과 같이 정의됩니다.

저자는 사전 학습 후에 실제 데이터 셋을 자기 지도 학습 방식으로 모델을 훈련할 경우, 이전 데이터 셋에서 학습한 지식을 점차 잊어다는 문제를 제기합니다. 그렇기에 합성 데이터 셋에서 학습한 사전 정보가 실제 장면을 학습하는 데 매우 중요하다는 점을 고려하여 이전 지식을 기억할 수 있도록 간단한 joint learning을 제안합니다. 각 배치에 대해 라벨이 지정된 합성 샘플과 라벨이 지정되지 않은 실제 샘플을 동시에 네트워크에 공급하고, 합성 데이터에 대한 fully supervised loss L_{sup} 과 실제 데이터에 대한 self-supervised loss L_{self} 의 조합으로 손실 함수를 계산합니다.
즉, 전체 손실 함수는 각 배치에 따라 다음과 같이 정의됩니다.

여기서 M과 N은 각각 합성 데이터 셋과 실제 데이터 셋의 수를 의미합니다,

Point Cloud Filtering. 해당 태스크에서는 주로 수집된 포인트 클라우드를 사용하여 학습합니다. 그러나 부정확한 분할 마스크와 깊이 센서와 RGB 카메라 사이의 변위로 인해 분할된 전경 포인트 클라우드에는 종종 일부 배경 포인트가 포함되어 있어 모델 학습에 있어서 편차를 보일 수 있습니다. 따라서 이러한 이상값을 제거하기 위해 포인트 클라우드 필터 파이프라인을 제시합니다. 아랴의 fig 3에서 볼 수 있듯이 이상값은 주로 책상 표면에서 수집된 점들로, 먼저 RANSAC 알고리즘을 사용하여 책상 표면의 점을 제거한 다음 statistical outlier remval 알고리즘으로 이웃과 멀리 떨어져 있는 희소 이상값을 제거합니다. 마지막으로, 카메라에 가장 가까운 클러스터가 최종 포인트 클라우드로 선택되는 DBSCAN 알고리즘(Es-ter et al. 1996)을 사용하여 나머지 포인트들을 클러스터링합니다.

Implementation Details. 복잡한 장면으로 부터 인스턴스를 분할하기 위해 NCOS 데이터 셋에서 fine-tunning된 Mask-RCNN을 이용합니다. 바운딩 박스 정보를 이용하여 인스턴스를 분할하고 192×192 크기로 조정한 다음에 해당 영역에 해당하는 포인트 클라우드 중 1024개의 포인트 클라우드를 샘플링하여 모델의 입력으로 사용합니다. 또한 클래스 별 인스턴스 정보에 대해 정보가 간섭되지 않도록 클래스 별 학습을 수행합니다. 또한, 플립 기법을 이용하여 데이터 증강을 이용합니다. 플립 기법은 영상 플립 뿐만이 아니라 3차원 정보에 대한 플립을 수행해야 하기 때문에 구현하기가 어려운 반면에 자기 지도 학습은 3차원 정보를 자체적으로 활용하기 때문에 쉽게 구현할 수 있습니다. 추가로 플립은 미러링되는 현상 구조를 가지기 때문에 대칭 구조인 물체 클래스에서 적용이 가능하다고 합니다.

또한, 해당 기법을 훈련하기 위한 디테일한 방법은 다음과 같습니다. 첫 번째 단계에서는 CAD 모델을 사용하여 DeepSDF 디코더를 훈련(2000 epoch)합니다. 그런 다음 합성 데이터 세트에서 30000개의 이미지를 샘플링하고 L_{sup} 을 사용하여 모델을 사전 훈련(10 epoch)합니다. 세 번째 상태에서는 각 배치에 12개의 합성 샘플과 2개의 실제 샘플을 포함하는 제안된 공동 학습 전략을 사용하며, 수식 12에 해당하는 전체 손실을 자가 지도 학습을 위해 사용됩니다.

Experiment

병, 그릇, 캔, 카메라, 노트북, 머그잔 등 6개의 물체 카테고리가 포함된 NOCS 데이터 셋을 대상으로 실험을 진행했습니다. 이 데이터 셋은 1085개의 CAD로 렌더링된 275K 렌더링 이미지가 포함된 합성 데이터 세트인 CAMERA와 훈련용 7개 장면의 4.3K 실제 이미지와 테스트용 6개 장면의 2.75K로 구성된 REAL이라는 실제 데이터 세트의 두 부분으로 구성되어 있습니다. REAL 데이터 세트의 각 세트에는 카테고리당 3개의 보지 못한 인스턴스가 있습니다. 먼저 합성 데이터 셋인 CAMERA를 통해 shape에 대한 사전 정보를 학습하기 위해 사전 학습을 진행하고 REAL 데이터 세트에 자체 감독을 적용합니다.

Tab 1에서는 자체 지도 카테고리 수준 포즈 추정에 대한 연구가 거의 없기 때문에, 지도 학습 기반의 SOTA 모델들과 성능을 비교합니다. 지도 학습 모델 대비 가장 높은 성능을 보여줌으로써, 해당 기법의 프레임워크와 손실 함수의 효과를 증명합니다.

Tab 2는 자기 지도 학습 프레임워크의 효율성을 입증하기 위한 ablation study에 해당합니다. 먼저, Test-Directly는 사전 훈련 후 바로 평가를 진행한 결과에 해당합니다. 합성 데이터와 실제 데이터 간의 도메인 차이로 인해 자기 지도 학습 이후 성능 차이가 큰 결과를 볼 수 있습니다.

Tab 3에서는 loss에 따른 성능 차이를 볼 수 있습니다. chamfer loss가 없는 경우에 성능 저하가 크게 일어나는 결과를 볼 수 있습니다. 이는 해당 loss가 대략적인 물체의 위치, 회전, 스케일에 대한 정보에 대한 정보를 예측하는 역할을 하기 때문입니다. 또한 SDF loss는 chamfer loss를 기반으로 대략적인 조정을 수행하는 역할을 합니다.
chamfer loss는 6D 정보를 조절할 수 없기 때문에 SDF loss가 빠지는 경우에는 정밀한 위치 조정을 실패하여 성능 저하가 발생합니다.

Fig 5에서는 정성적인 결과를 확인할 수 있습니다. 상단 라인에서는 3차원 바운딩 박스를 이용한 예측 결과, 하단 라인에서는 예측된 렌더링 정보를 영상 정보에 적용한 결과에 해당합니다. 일치된 결과를 보여줌으로써 해당 모델의 성능을 보여줍니다.

Reference

[1] Park, Jeong Joon, et al. “Deepsdf: Learning continuous signed distance functions for shape representation.” Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[2] Wang, Chen, et al. “Densefusion: 6d object pose estimation by iterative dense fusion.” Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[3] Liu, Shaohui, et al. “Dist: Rendering deep implicit signed distance function with differentiable sphere tracing.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.


해당 논문은 같은 클래스 내의 보지 못한 형태의 인스턴스의 6D 정보를 예측하기 위한 기법을 제안합니다. 해당 기법은 6D 포즈 추정 기법이 일상에서 사용되기 위해서 필요한 태스크라는 생각이 듭니다.

그리고 익숙하지 않은 사전 지식을 요구해서;; 논문이 많이 어려웠네요 하하하ㅏㅡㅠ

Author: 김 태주

4 thoughts on “[AAAI 2022] Self-Supervised Category-Level 6D Object Pose Estimation with Deep Implicit Shape Representation

  1. 리뷰 감사합니다.
    카테고리 레벨에서 각 클래스 안에서 공통적인 특징을 찾는 학습을 하기 위해 클래스 별로 학습해주고 또 학습한 지식이 나중에 잊혀지지 않게 해주고 생각보다 많은 training cost가 필요하다는 생각이 드네요…
    Table 1에서 성능을 보면 각도에 의한 accuracy의 변화보다 scale에 따른 accuracy에 변화가 큰 것으로 보이는데, model architecture에서 point-wise encoding을 pointnet++로 하여 sampling과 grouping을 통해 mutli-scale에 robust하게 한다면 성능 향상에 도움이 될 것 같다는 생각도 드는데 적용이 가능할 수 있을까요?
    감사합니다

    1. 넵 기존 백본(PointNet)보다 좋은 백본 모델(PointNet++)로의 변경이라 어느정도 성능 향상이 있을 것이라고 봅니다.

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

    처음으로 6D Pose estimation에 대한 내용을 태주님의 리뷰 덕분에 경험해봤습니다. 인트로를 보고 6D pose estimation의 필요성에 대해 조금이나마 이해를 할 수 있었습니다.

    1) DeepSDF 기반으로 최적화를 하기 위해 Point cloud에 대한 Loss function들의 역할에 대해 설명해주셨는데, 전반적인 6D pose estimation 은 point cloud 기반 모델들을 많이 사용하는 편인지 궁금합니다.

    2) 6D pose estimation 같은 경우 1-Stage로 진행할 수 있는 구조가 아니기 때문에 2-Stage로 진행하는 것으로 알고 있는데, 그럼 mAP에 따른 FPS에 대한 리포팅은 어떻게 되는지 궁금합니다.

    추가) 이번 논문 리뷰를 보면서 어디서부터 공부를 해야할지에 대한 윤곽이 잘 잡히지 않는데, 알려주시면 감사하겠습니다. ㅠㅠ

    감사합니다.

    1. 1) DeepSDF 기반으로 최적화를 하기 위해 Point cloud에 대한 Loss function들의 역할에 대해 설명해주셨는데, 전반적인 6D pose estimation 은 point cloud 기반 모델들을 많이 사용하는 편인지 궁금합니다.

      – point cloud는 3차원 정보를 표현하기 위한 가장 raw한 표현 방법입니다. 해당 데이터를 가공한 3차원 정보를 활용하는 경우도 있고, 근래에는 point cloud 자체를 사용하는 대세인 것 같습니다.

      2) 6D pose estimation 같은 경우 1-Stage로 진행할 수 있는 구조가 아니기 때문에 2-Stage로 진행하는 것으로 알고 있는데, 그럼 mAP에 따른 FPS에 대한 리포팅은 어떻게 되는지 궁금합니다.

      – 통합해서 FPS 측정합니다.

      추가) 이번 논문 리뷰를 보면서 어디서부터 공부를 해야할지에 대한 윤곽이 잘 잡히지 않는데, 알려주시면 감사하겠습니다. ㅠㅠ

      – 추후 알려드리겠습니다.

답글 남기기

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