PointNet 간단 리뷰

채성혁·2024년 1월 28일
post-thumbnail

3차원 구조의 특징

  • 통상적으로 활용되는 포인트클라우드, 매쉬는 정규적이지 못하는 구조를 가짐
  • 특히 포인트 클라우드는 unordered 한 특성과 permutation invariant한 특성을 가짐
  • permutation invariant : 각 요소가 어떤 순서로 데이터가 불러져와도 형태 및 특징은 동일하다.

포인트 클라우드를 딥러닝에 적용하려면?

  • 정규적인 형태의 voxel화를 진행하거나 viewpoint에 상응하는 2차원 이미지로 변형하기
  • 불필요한 빈공간에 대한 표현까지 가져가기 때문에 매우 비효율적임 ->
    CNN은 slidng window로 계산 / RNN 은 sequential한 입력이 들어와야됨으로 이와 같은 일반적인 네트워크는 permutation ivariant하지 못함

결론 : unordered한 입력인 Pointcloud를 별도의 전처리 없이 직접 사용해보자! 이로인해 classfication , segemation의 출력 값을 얻을수 있음.

pointcloud는 3D Position, RGB-color, surface normal 의 정보를 지님
pointnet은 3D position 정보만을 가져감

모델 구조도

Classification, Segemtation 의 두가지 역할 구조 모두 지님

point set의 주요 특징

  1. Unordered
  • 특정 순서를 기반으로 열거된 구조가 아님
  1. Interaction
  • 하나의 포인트와 인근 위치의 포인트끼리는 유사한 정보를 가지고 있다.
    => 이를 이용해 Local to global
  1. Invariance
  • Transformation이 적용되더라도 객체 자체가 변하지 않는다
    -> translatation, roatation 등의 변화가 일어나더라도 객체가 바뀌는 것이 아니기에 학습결과에 영향을 주면 X

PointNet의 핵심구조 3가지

  1. Maxpooling 을 통해 특징 정보의 응집
  2. Combination 지역적, 전역적 정보의 적절한 조합
  3. Alignment 입력포인트와 포인트 특징을 정렬하는 네트워크 구조를 지님.

Symmetry Function

  1. point를 정렬할 수있는 상황이라 가정했을때 고차원을 저차원으로 1:1 매핑을 해줄수 있지 않을까?
    => 하지만 고차원 공간에서는 point cloud data에 작은 위치변화등 일어나면 맵핑된것이 원래의 결과를 보존하는것이 어렵다.
  2. 짧은 길이의 입력에 대해서는 순서에 관련없는 출력값이 잘 도출되었으나 , 많은 야의 데이터가 들어오면 순서의 영향을 받음
    => point 를 연속된 신호의 값 처럼 입력받았을때 영향을 받음.( 우수한 성능이 안나옴)
  3. Symmetric function( 대칭함수 )
    => 포인트 셋을 함수의 입력으로 바로 사용하지 않고, 각각의 포인트에 근사화 적용 후 함수 입력으로 사용해보면 어떨까
    ==> 순서에도 영향을 받지 않고 동일한 출력값도 나오는것을 확인.
  • MLP를 사용하여 포인트 입력을 근사화 시킴
  • Symmetric function은 Maxpooling을 사용하여 성능 개선됨을 확인

Local Golbal infromation Aggregation

  • Segmentation을 진행하기 위해 사용된 구조
  • Segmentation을 위해선 local 정보와 global 정보 둘다 중요하기때문에 둘다 사용하기위해 진행
    local feature에 classfication 모델 output feature 을 concat하여 사용됨

Joint alignment network

작은 크기의 T-Net을 통해 affine transformation matrix를 추정하여 이를 입력에 적용 시켜 transform 진행.

  • 서로다른 input pointcloud로부터 feature를 정렬해주는 역할
  • symmetric 을 진행할때의 불변성을 유지 시켜주기 위해 적용

             Ireg=IAATF2Ireg= ||I-AA^T||^2_F

고차원의 Trnaformation matrix A를 Orthogonal matrix로 바꿔 최적화를 쉽게해줌

하지만 네트워크 후반부에 넣을수록 차원이 높아지기에 최적화가 어려워질수있음

PointNet은 안정적으로 pointcloud shape 정보를 전역적으로 잘 함축할수있어야됨!

  • universal approximation 작은 섭동에도 출력 값은 변하지 않아야한다.
  • bottleneck dimension 잡음이 포함된 입력도 출력값에 영향을 주면 안된다.
  • 가려짐 혹은 유실등 데이터에서 일부 소실이 발생해도 출력값에 영향을 주면 안된다.

3D ObjectDetection Classification 결과

FClayer 와 Maxpooling 조합만으로 SOTA 달성
MVCNN 보다 acc는 상대적으로 떨어지지만 80View를 통해 관측한것이므로 매우 PointNet은 하나의 view만으로도 높은 성능을 낼수있기에 연산량에서 우수

3D ObjectDetection Part segmentation 결과

기존 방법론 대비 카테고리 별 평균 IoU가 높게 나옴
ShapeNet 데이터셋을 시뮬레이터에 넣고 Sengment 했을때 안정적인 결과를 도출

Semantic segmentation 결과

기존 baseline 대비 높은 성능 향상

Robustness test 결과




1. Random Input Sampling 실험 (가장 왼쪽 그래프):

N개의 Point Cloud로 이루어진 집합 S에서 Random Input Sampling 방식을 통해 일정 비율의 점을 제거하는 실험
Max Pooling을 사용한 모델에서 50%의 점이 제거되어도 성능이 3.8% 정도만 감소하는 것을 확인


2. Outlier 실험 (가운데 그래프):

집합 S에서 20%의 점이 Outlier일 때의 모델 성능을 평가한 실험
Max Pooling을 통해 Outlier들이 무시되어 성능이 80% 이상을 유지하는 것을 보여줌


3. Gaussian Noise 실험 (오른쪽 그래프):

집합 S의 각 점에 대해 Gaussian Noise를 적용하여 성능을 평가한 실험
분산이 증가함에 따라 성능이 감소하며, 특히 0.05의 분산에서 성능이 80% 근처로 나타남
이 실험 결과를 통해 PointNet이 Max Pooling을 통한 강인성을 보이며, Outlier 및 Gaussian Noise에 대해서도 상당한 성능을 유지

시간 복잡도

Point net이 기존3D CNN모델과 대비해의 파라미터의 수가 제일 적고 Flops수치도 가장 적게 나오는것을 확인 할 수 있음

SUMMARY

포인트 클라우드를 별도의 전처리 과정없이 직접적으로 활용할 수 있는 네트워크 구조의 제안
Classification, segmentation 등의 분야에서 활용 가능한 여러 출력값을 낼 수 있음
기존 방법 대비 높은 성능 향상과 모델경량화 성공


느낀점

  1. 블로그 글 자체가 처음이라 아직 어렵고 어색함
  2. 3D detection 을 이제 막 공부하고 있어서 평소에 알던 2D 와 달라 어려웠다.
  3. 언제쯤 LiDAR 데이터를 이용해서 프로젝트를 진행해볼까..
profile
성장곡선을 그리는 AI Engineer

0개의 댓글