Boostcamp AI Tech

[Boostcamp Day-34] Computer Vision - 3D Understanding

ju_young 2021. 9. 17. 19:44
728x90

3D Understanding

우리가 3d 세상에 살고 있기 때문에 앞으로 나올 AI driving agent, robot들도 사람들에게 도움을 주기위해 3d 공간에 대한 이해가 필요하다.

  • Triangulation : 2d image들로부터 3d point를 구하는 방법이다.

3d data가 어떻게 computer에 표현되는지를 살펴볼 것이다. 2d image의 경우에는 다음과같이 2d array 구조로 각 pixel이 RGB값을 가져 표현이 된다.


하지만 3d data의 경우 unique하지 않게 다음과 같이 나올 수 있다.

  1. Multi-view images : 여러 각도에서 사진을 촬영하여 저장한다.
  2. Volumetric(voxel) : 2d image와 가장 비슷한 방법으로 적당히 격자를 나눠 그 격자가 3d object를 차지하고 있는지 없는지를 나타낸다.
  3. Part assembly : part를 assemble하는 방법이다.
  4. Point cloud : 3d 상의 point들의 집합을 사용한 표현 방법이다.
  5. Mesh (Graph CNN) : 가장 흔히 사용되는 것은 triangle mesh로 triangle로 이루어져있으며 각 point를 vertex, point를 잇는 선을 edge라고 한다.
  6. Implicit shape : 고차원의 fuction으로 표현하고 0과 교차하는 부분들이 3d 형상으로 나타난다.

3D datasets

  • ShapeNet

3d 표현을 이용하여 학습을 할 수 있게 dataset을 만들어야할 것이다. shapenet이 55 category의 51,300개의 3d model들이 있다.


  • PartNet

또 다른 dataset으로 partnet이라는 것이 있다. partnet은 fine-grained dataset인데 이 의미는 하나의 object에 대해서 detail들이 annotation되어있다는 것이다. 그래서 26,671개의 3d model에서 573,585개의 part insatance로 구분되어있다.


  • SceneNet

500만개의 RGN-Depth 영상 dataset이다.


  • ScanNet

RGB-Depth로 표현된 dataset으로 250만개의 view로 구성되어있다. 하지만 실제로 scan된 data이기 때문에 작지않은 dataset이라고 할 수 있다.


3D tasks

  • 3D recognition

3D object recognition은 2d cnn을 사용하여 image가 들어왔을 때 단순히 label 정보를 출력하는 형태와 비슷하다. 3d model은 volumetric CNN을 사용할 수 있다.


  • 3D object detection

3d object를 localization하는 것인데 image에서도 가능하고 3d space에서도 가능하다. 이런 3D object detection은 무임차 application에서 유용하게 사용된다.


  • 3D semantic segmentation

신경촬영과 같은 3d data에 semantic segmentation를 사용할 수 있다.


  • Mesh R-CNN

input으로는 2d image로 ouput은 detect된 object의 3d mesh가 나온다. Mask R-CNN의 head를 mesh 형태로 modification함으로서 구현을 할 수 있다.


Mask R-CNN은 최종적으로 box, class, mask로 세 가지 branch가 나누어진다. 각 branch들은 output을 reference할 때 하나의 RoI를 공유하여 그 feature로부터 각각의 출력을 prediction한다.


Mesh R-CNN은 3D branch가 추가된 것으로 3d mesh를 출력해주는 역할을 해준다.


  • More complex 3D reconstruction models

3d object를 여러 sub-problem으로 decomposing하여 더 정교한 3d를 구성하는 방법이다. 2d image가 주어지면 CNN을 통해서 multi-task head를 통해 depth를 추정하기도 하고 mask인 silhouette을 추정하기도 하고 surface normal을 추정하기도한다. 이것들을 합성하여 full 3d를 만드는 것이다.

 

728x90