Jungduri / MLPaperReivew

0 stars 0 forks source link

PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes #7

Open Jungduri opened 1 year ago

Jungduri commented 1 year ago

PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

official repo: https://github.com/yuxng/PoseCNN

Task: 6D Object Pose Estimation

image

로봇과 같은 어플리케이션에서 "알고 있는 물체"의 6차원 정보를 알아내는 것은 매우 중요합니다. 알고 있는 물체로 제한시켜도 괜찮은 이유는, 로봇이 주어진 환경 자체가 일반적으로 제한된 환경일 가능성이 높기 때문입니다. 여기서 6차원 정보라고 하면 객체의 위치 정보와 회전 정보를 포함합니다.

Dataset: OccludedLINEMOD

해당 데이터셋은 6D object pose estimation task를 수행하기 위해서 아래와 같은 이미지를 제공합니다. 000011 위에 보이는 바와 같이 RGB 정보를 제공할 뿐만 아니라 각 오브젝트의 Segment, depth, object 6축 정보를 파악하기 위한 ply 파일까지 제공합니다.

image

개요

이 논문은 위에서 언급한 task를 수행하기 위해 OccludedLINEMOD를 사용하고 있습니다. 이를 해결하기 위해서 2가지 주요한 특징이 제시됩니다.

PoseCNN Network

image

예전 모델이니만큼, 모델 구조는 전통적인 bakbone + heads의 구조를 따르고 있습니다.

  1. Semantic Labeling 첫번째 head에서는 segment 정보를 얻어냅니다. 기존 논문에서는 bbox를 활용하여 접근하는 방식이 많은데, 해당 논문에서는 bbox보다 segmentation을 이용하는 방식이 더 성능에 좋다고 주장하고 있습니다. segmentation을 얻는 방식은 전통적인 방식 (channel-wse cross-entropy)에 따라서 얻어냅니다.
  2. 3D Translation Estimation 3D translation 정보를 얻어내기 위해서 computer vision의 고전 테크닉인 Hough voting방식을 사용합니다. 구체적으로 T=(Tx,Ty,Tz)라고 위치정보를 정의한다면, 핀홀카메라 모델에 의해서 아래와 같이 전개됩니다. image

    각각의 카메라에서 위와 같이 2D 좌표를 추정한뒤, regression을 통해서 별표를 찾아냅니다. Depth 정보는 network를 통해서 추가적으로 얻어낼 수 있습니다.

  3. 3D Rotation Regression 위에서 얻어낸 정보(segment+위치)를 통해서 물체의 ROI를 얻어냅니다. ROI와 backbone의 마지막 부분의 residual을 합쳐서 마지막 head의 네트워크 인풋으로 넣어준 뒤 x,y,z의 quaternion(회전 성분)을 네트워크가 학습하게 합니다.

Loss

논문에서는 quaternion을 학습하기 위해서 두가지 loss를 제시합니다.

  1. PoseLoss

    image

    위의 수식에서 q는 quaternion의 벡터입니다. R(q)는 rotation matrix를 의미합니다. M은 3D model의 point , 즉 객체의 개수이고, m는 포인트의 개수를 의미합니다. 하지만 대칭인 물체의 경우 여러개의 quaternion를 가질 수 있기 때문에 모델이 학습하기가 어렵습니다. 이를 해결하기 위해서 ShapeMatch-Loss를 제안합니다.

  2. ShapeMatch-Loss

    image

실험

문제를 명확하게 보기 위해서 평가 지표를 제안합니다.

image image image