ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자료 읽기] 딥러닝논문리뷰 PointNet
    자료 읽기 2022. 3. 15. 11:20

    출처 : grootai

     

    1. 소개

    PointNet은 3D 딥러닝 분에서 베이스가 되는 논문. 컴퓨터 비전 분야에서 유명한 CVPR에 게재된 논문.

    3D 딥러닝을 하기 위해서 우선 3차원 데이터를 알아야 한다. 이미지가 픽셀로 이루어져 있듯이 3D 데이터도 point cloud나 mesh 같은 방법으로 데이터를 표현. point cloud는 점들의 집힙. mesh는 삼각형으로 이루어져 있다. 그래서 point cloud 보다는 mesh가 좀 더 자세하게 표현되어 있다고 볼 수 있다. 왜냐하면 점과 점 상의 연결 관계도 표현되어 있기 때문이다.

     

    point cloud는 안에도 꽉차 있는건가요?

    보통은 스캔 데이터를 많이 쓰기 때문에 표면의 정보만을 가지고 있다.

     

    일단 mesh나 point cloud는 보시다시피 형태가 일정하지 않기 때문에 학습하기에 용이하지 않다. 그래서 PointNet의 의의가 이 point cloud 데이터를 모델의 input에 직접 이용한 첫 모델이라는 점입니다.

     

    2. 관련 연구

    일전에도 3D 객체를 학습하기 위해서 많은 노력들이 있었는데 PointNet이 나오기 전까지는 일정 format에 맞추려고 했다. 모델의 input으로 넣기 위해서. Volume + Pixel의 합성어로서 복셀 구조로 끼워 맞춰 학습시킨 모델도 있었다. 일전에 오토인코더에서도 언급된 것이지만 차원이 높아질수록 데이터가 굉장히 ~해진다. 그래서 이 PointNet도 마찬가지로 커다란 3D 공간에서 매우 sparse(밀도가 낮다)하게 있기 때문에 이렇게 복셀 구조에 끼워맞출 경우 매우 비효율적이다. 그리고 3D convolution을 하게 된다면 연산량이 매우 높아져 비효율적이다. 그래서 3차원 데이터를 2차원 데이터로 변환해서 학습을 시키는 모델도 있다. 프로젝션같은 방법으로. 그 모델은 어쨋든 3차원 데이터를 2차원으로 줄여서 학습을 한 것이기에 한계가 있다. 이런 모델은 shape classification 정도만 학습 가능하지 그 이상의 레벨은 다루기가 힘들다.

     

    3. 문제 설정 - PointNet의 task

    PointNet은 순서가 정해져 있지 않은, unordered point set을 input으로하는 딥러닝 프레임워크다. classification, part seg, semantic seg 등 다양한 task에 이용될 수 있다.

     

    4. Deep learning on Point sets

     

    =======================================

    우리의 입력값은 Euclidean space에 있는 점들의 집합이다.

    point set의 세가지 특성

    1) 순서가 없다 -> 순열에 무관해야 한다.

    2) 회전과 이동에 무관해야 한다.

    3) 포인트 간에 관계 정보가 중요하다.

    =======================================

     

    PointNet을 다루기 위해서 일단 point set의 특성을 알아야 한다. point cloud를 직접 이용한 첫 논문이라고 했는데 그전까지 이를 이용하지 못했던 이유는 아무래도 다루기가 어려웠기 때문이다. 그래서 point cloud의 특성을 알아볼 필요가 있습니다. point cloud 데이터를 임의로 N x D 배열로 표현한다. 여기서 D는 3이다. 왜냐하면 한 포인트는 x,y,z 값을 feature로 가지기 때문이다. normal vector를 추가한다면 D가 4일수도 있다. N은 point의 갯수.

     

    normal vector라는 것은 surface tangent space에 orthogonal한 vector를 의미?

    네 근데 제가 사실 surface에 대한 normal vector와 point에 대한 normal vector 차이를 모르겠는데 그 두개가 따로 있더라구요.

     

    point cloud의 특성을 보면 일단 순서가 없다는 것. 점들의 집합이니까 순서가 없다. 만약에 N개의 포인트를 사용한다고 하면 N! 개의 순열에 변하지 않는 feature를 학습해야 할 것이다. geometric object 이기 때문에 rotate나 translate 같은 transformation에 변하지 않는 feature를 학습해야 할 것이다. 각 점의 feature가 x,y,z 좌표라고 했는데 어쨋든 Euclidean space에 있기에 점들과 점들 사이에 distance가 있다. 그래서 점이 공간 상에 딱 하나만 있는게 아니라 주위에 점들이 같이 있기에 이웃하는 점들과의 관계가 매우 유의미하다고 생각할 수 있다. 그렇기 때문에 모델은 학습시에 local structure도 잘 파악할 수 있어야 한다. 그런데 PointNet은 이것을 잘 못했다. 그래서 이게 한계점.

     

    모델은 간단하게 mlp와 max pooling 이런 식으로 이루어져 있다. 아까 point set의 특성을 극복하기 위해서 세가지 모듈이 있다.

     

    =======================================

    세가지 모듈

    1) symmetric 함수로 max pooling layer을 사용했다.

    2) local과 global 정보를 합친 구조.

    3) 두개의 alignment 네트워크 사용. 입력 point와 point feature를 align하는.

    =======================================

     

    1) symmetric 함수로 max pooling layer을 사용했다.

    max pooling layer를 사용한 것은 순서가 정해져있지 않은 문제를 해결하기 위해 나온 모듈이다. RNN을 사용하면 어떨까 생각해보았다. 실제로는 시퀀스가 없는 집합이지만 N! 순열에도 변하지 않는 featrue를 뽑아내기 위해서 N! 시퀀스 데이터를 만들어서 RNN 돌리자는 것. 그래서 아이디어는 좋다고 생각할 수 있지만 RNN이 수만개의 데이터 시퀀스를 다루는 것이 아니기 때문에 이런 point set을 다루기에는 부적합하다고 한다. 왜냐하면 토끼 하나가 최소 3만개에서 10만개의 point로 구성되어 있기에 이것을 시퀀스로 구성해서 N! 개 순열을 학습시키는 것은 무리가 있다. 그래서 사용하는 것이 symmetric function. 이 함수는 f(x1,x2) = f(x2,x1) 순서에 관계없이 답이 일정하게 나오는 함수. 이를 이용해서 unordered 문제를 해결하겠다.

     

    여기서 각 포인트가 mlph를 거치고 나서 g에서 aggregate 합쳐진다. max pooling을 사용해서 합쳐지고, multi layer perceptron을 한번 더 거치고 난 것을 수식으로 표현했다. g가 만약에 max pooling이 symmetric이면 전체를 설명하는 f 함수도 symmetric이다.

     

    2) local과 global 정보를 합친 구조.

    max pooling을 거치고 난 1024 global feature와 중간에 feature tansform 이후에 나온 nx64를 concatenate(연결시키다) 하여 n x 1088 이 나왔는데 이것을 학습시켰다는 이유로 a local and global information combination structure 라고 여기서 말했습니다. PointNet의 한계가 local structure를 잘 못잡아낸 것. mlp가 픽셀단위로 계산되었고, local strucure를 알기 위해서는 점과 점 사이의 관계, 연결되어있다는 정보가 필요한데 이를 사용하지 않았다.

     

    3) 두개의 alignment 네트워크 사용. 입력 point와 point feature를 align하는.

    geometric object 이기 때문에 transformation에 변하지 않는 feature를 학습해야 한다. 이것을 해결하기 위해서 alignment network라는 아이디어를 냈다. 여기서 input transform과 feature transform 두개의 network를 사용. input transform을 보면 T-Net이라고 부른다. 이는 Special Transform Network(STN)으로부터 영감을 받은 것. STN이란 localization network에서 fine transform matrix 의 파라미터를 추정하고, 그 파라미터를 기반으로 grid generator에서 좌표계에 매핑을 시킨다. 샘플러에서 사이즈를 동일하게 하기 위해서 interpolation을 한다. STN의 목적과 같이 수행하기 위해서 T-Net에서도 transformation matrix을 예측하고, 이 행렬을 ipnut과 곱하는 형태는 똑같은데 이제 transformation이 된 결과가 나온다.

     

    feature transform의 경우, 64x64 matrix를 학습하기 어려워서 training loss에 orthogonal matrix에 가깝도록 regularization term을 추가해서 constrain을 주었다.

     

    5. 결과

    3D CNN 보다 우리 것이 성능이 더 좋고, point cloud를 50% 없애도 VoxNet보다도 성능이 좋다. segmentation 결과도 잘한다. N개의 포인트 중에서 가장 activation 값이 높았던 포인트 1024개를 뽑아서 critical point라고 했을때 이를 시각화했더니 골격이 잘 나왔다.

Designed by Tistory.