AI/CV

3D에 대해 이해해보자

LTSGOD 2023. 4. 6. 13:58

1) 3D Overview

왜 3D가 중요한가??

 

우리가 일상적으로 사는 공간이 3D이기 때문이다. 따라서 앞으로 사용하게 될 프로그램에서 이러한 3D를 인식하는 것이 중요할 것이다.

 

이러한 3D를 적용하는 다양한 분야가 있다.

  • AR/VR
  • 3D printing
  • Medical application

우리가 3D 세상을 어떻게 인식하는가??

우리는 3D 그대로를 인식하는 것이 아니라 projection 된 2D의 image를 보게 된다.

만약 이러한 이미지가 2개 이상 있다면 우리는 3D로 복원할 수 있다.

 

3D data는 어떻게 표현하는가??

 

우리는 2D image는 3차원 형태로 표현했다. width * height 에 RGB라면 3개의 channel이 가지도록 말이다.

 

3D data의 경우 unique하게 한가지 방법만 있는 것은 아니다.

 

이렇게 여러가지로 표현할 수 있다.

 

Multi-view images의 경우 여러각도에서 사진을 촬영한 후 저장한 것과 같다.

 

Volumetric 은  3D gird에서 실제 물체와 비슷하게 grid를 채운것이다.

 

Part assembly는 part의 조합으로 본다

 

Point cloud는 pint 들의 집합으로 표시한다.(x,y,z) 형태의 list로 저장되어 있다.

 

Mesh 는 graph CNN에서 사용하기 적합한 형태이다. vertex 와 Edge 로 삼각형 형태로 이어져 있다.

 

Implicit shape은 고차원의 추상적인 함수로 나타내는 것이다. 그리고 그러한 함수가 0이 되는 부분이 3D 의 표면 형태가 된다. 매끈한 outline을 얻을 수 있다.

 

2) 3D datasets

 

ShapeNet

 55개 종류의 51300개의 3D data가 존재한다.

 

PartNet

 

26000개의 model이 있고 각 part들이 segmentation 되어 있다.

 

SceneNet

500만개 의 data가 있고 RGB depth 가 있는 실내 3D data이다.

 

ScanNet

250만개의 RGB가 있는 3D data가 있다. 각 part들이 segmentation 되어 있다.

 

3) 3D tasks

 

1. 3D recognition

2. 3D detection

3. 3d semantic segmentation

 

4. Mesh R-CNN

Mesh R-CNN 의 input 에는 2D image 가 들어가고 output으로는 3d의 mesh 형태로 나온다. Mask R-CNN을 수정하여 구현할 수 있다.

 

Mask R-CNN의 구조는 위와 같았는데 이에 밑에 그림 처럼 3D branch를 추가해주면 된다.