[Review] PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

Eunseo Jeong·2022년 9월 28일
0

3D data

목록 보기
1/4
post-thumbnail

해당 글은 1년 전에 읽었던 <PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation> 이라는 제목의 논문을 읽고 서툴게 정리해놓은 리뷰글입니다.

아직 수정하고 보완해야할 부분이 많고 미완성의 글이지만, 기록의 목적으로 포스팅했습니다!

혹시 제가 잘못 이해한 개념이 있거나, 포스팅 과정에서 문제가 되는 자료가 쓰였다면 댓글로 알려주시면 감사하겠습니다!


  • Point Cloud:
    • geomatric data structure을 이해하는 데에 필수적인 요소
    • 3차원 대상의 연속적인 표면을 점으로 나타내어 입체적인 이미지 데이터를 얻어내는 표현방식

Abstract

  • Point Net 이전, 대부분의 3D data 관련 연구에서는 Deep net 구조에 데이터를 입력하기 위해서는 불규칙한 값들을 정형화하는 과정인 rendering이 필수였다.
  • Point Net에서는 Point Cloud에서 중요한 정보만을 뽑아 3D coordinate (x,y,z)로 표현하는 과정이 포함되어 있어 Network에 feeding하기 위해 별도의 rendering이 필요하지 않다.

  1. polygon으로 표현된 Mesh
  2. voxel로 표현된 Volumetric (voxel은 단위영역을 육면체로 표현한 것으로 마인크래프트를 생각하면 쉽다.)
  3. point cloud (별도의 rendering이 필요하지 않다.)

1. Introduction

  • abstract에서 언급된 바와 같이 이 연구는 3D data를 deep learning에 입력할 시에 rendering을 하지 않을 수 있는 방식을 고안한다.
  • Point Net의 핵심기능: unordered data인 point data에 순서를 부여해 별도의 렌더링 없이 neural net에 바로 투입시킬 수 있게 데이터를 처리하는 것.
  • Point Net 논문의 4가지 핵심사항
    1. 3D상의 unordered point sets을 소비하는데에 적합한 새로운 deep net architecture를 디자인한다.
    2. 3D shape classification, shape part segmentation 그리고 scene semantic parsing tasks에 대해서 해당 network가 얼마나 잘 훈련되고 수행되는 지를 입증한다.
    3. 해당 방식에 대한 안정성과 효율성에 대해 경험적이고 이론적인 분석을 제공한다.
    4. net 상에서 선택된 뉴런에 의해 계산되는 3D feature를 설명하고 그것의 수행에 대해 직관적인 설명을 발전시킨다.

(아래 내용들에 대해서는 다음에 기회가 되면 정리하고자 한다)

  • Point Cloud Features
  • Deep Learning on 3D Data
  • Deep Learning on Unordered Sets

3. Problem Statement

{Pii=1,...,nP_i | i = 1, ..., n}

  • Point P_i: vector of its (x,y,z)
  • (x,y,z, alpha~) extra feature이 xyz 뒤에 추가될 수 있다.
  • For object classification input
    • input point cloud를 바로 형태로부터 sampling 또는 point cloud에서 미리 sementing 처리를 함.
  • For semantic segmentation input
    • 여러지역 segmentation에 대해 하나의 이미지를 input으로 넣거나 또는 object 지역 segmentation에 대해서 3D scene으로부터 sub-volume을 input으로 넣을 수 있다.
  • output: n*m (n개 points, m개 semantic sub-categories)

4. Deep Learning on Point Sets

4.1. Properties of Point Sets in R^n (real number)

  • 지금까지 여러 연구에서 3D data를 다루기에 앞서서 rendering을 시행했던 이유는 point set의 특성이 다음과 같기 때문이다.
    1. Unordered: pixel이나 voxel과 다르게 특별한 순서가 없다. 따라서, n개의 point (x,y,z)를 net에 feeding하는 경우의 수는 n!. 그러나, deep learning에서는 모든 경우의 수에 대해서 neural network의 output이 같아야 한다.[permutation invariant]

      → point net의 solution: symmetric function의 일종인 max pooling을 적용하였다.

    2. Point간의 상호작용: points는 거리체계를 가진 공간으로부터 얻어진 데이터들이다. 서로의 이웃이 존재하므로 의미있는 subset이 만들어 질 수 있으므로 이러한 의미를 반영하지 않는 무작위 입력값은 비교적 좋은 결과를 낼 수 없다.

      → point net의 solution: point net은 local structure을 잡아낼 수 있고, 그 structure간의 combinatorial interaction을 얻을 수 있다.

    3. transformation: points를 회전시키거나 평행이동하더라도 global point cloud category나 point segmentation이 변화하면 안된다.[rigid motion invariant]

      → point net의 solution: STN(Spatial Transformer Networks)을 적용하여 points를 transformation해도 해당 point의 실체는 변하지 않도록 한다.

      • STN: 입력되는 이미지를 모두 동일하게 orthogonal image로 만들어줌, 이 모델에서는 T-net이 사용됨.

4.2. PointNet Architecture

PointNet Architecture

  • Classification network
    1. input: n points
    2. applies input
    3. feature transformation
    4. aggregate point features by max pooling
    5. output: classification scores for k classes
  • Segmentation network
    1. classification net의 확장
    2. global(classification)과 local feature을 연결함
    3. output: point 당 scores
  • Symmetry Function for Unordered Input
    • symmetry function : 정의역의 위치가 바뀌어도 치역이 같은 함수
    1. input에 대해 기준을 정해 순서대로 정렬함.
    2. input을 RNN에 넣기 위한 sequence로 취급하지만, 모든 종류의 permutation n!에 의해 트레이닝 데이터 증가.
    3. 각 포인트의 정보를 모으기 위해서 간단한 symmetric function 사용
    • sorting에 관한 issue (아직 정리가 되지 않은 글):

      • sorting이 간단한 솔루션같은 반면, 고차원 공간에서 point perturbations(혼란)에 관한 stable한 ordering은 존재하지 않는다. 즉, sorting(by symmetric function)은 ordering issue를 완전히 해결하지 못하고 ordering issue가 지속되는 한, network는 일관적인 mapping을 할 수 없다.

      • 이에 대한 해결책은  MLP로 각 포인트에 대한 feature을 추출한 다음 symmetric function에 feeding하는 것이다.

      • mlp 처리하지 않고 바로 feeding하는 것보다 약간 더 나은 결과를 냈다. (궁금증: 더 나은 결과라는 것이 ordering issue를 거의 해결할 수 있게 되었다는 것인지, 단순 성능이 좋아졌다는 것인지 모르겠다.)

definition of symmetry function

4.3. 이후부터는 추후 정리 완료 예정

Ref)

https://pytorchhair.gitbook.io/project/introduction/semantic-segmentation
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sw4r&logNo=221490603530
https://m.blog.naver.com/lsj_dct96/221702796212

profile
ML & iOS 공부하는 학생입니다

0개의 댓글