논문 리뷰

[논문 리뷰] PointNet (CVPR 2017): point cloud를 직접 처리

dohyeon2 2024. 6. 27. 14:56

목차

    안녕하세요 윤도현입니다. 오늘 소개해드릴 논문은 PointNet이라는 논문입니다. 바로 리뷰 진행해보겠습니다.

     

    1. Background + Introduction

    • Point Cloud란 3차원 공간상(3차원 월드좌표계)에 존재하는 점들의 집합입니다. 각 점은 (x,y,z) 값으로 표현할 수 있습니다.
    • Point Cloud는 점들의 밀집도가 균일하지 않은 불규칙한 특성을 갖고 있습니다. 아래 그림은 각각 Point Cloud, Voxel, Mesh로 표현한 토끼입니다. 

    • Point Cloud의 불규칙한 특성 때문에, 기존 연구들은 Point Cloud를 Voxel이나 2D image와 같이 규칙적인 형태로 변환한 뒤 딥러닝 모델에 입력해왔습니다. 
    • 그러나 이러한 데이터 변환은 데이터를 불필요하게 크게 만들거나 데이터 불변성을 손상시키는 문제점이 있었습니다.
    • 예를들어, Point Cloud를 Voxel로 변환하면 Voxel Grid 안에 빈공간이 많이 생겨서 데이터가 매우 커지는 문제가 발생합니다. 아래 그림과 같이 토끼 한마리를 Voxel로 표현하려면 3D 행렬을 사용합니다. 하지만 대부분의 공간은 비어있으므로 불필요한 데이터 처리가 발생하게 됩니다.

    Point Cloud -> Voxel transformation

    • 또한 Point Cloud에서 Voxel로 변환하는 과정에서 데이터 불변성이 손상됩니다. 이것은 Point Cloud가 Voxel에 비해 토끼의 모습을 더 구체적으로 표현하기 때문입니다.
    • 이러한 문제들 때문에 본 논문의 저자들은 Point Cloud를 다른 형태의 데이터로 변환하지 않고 직접 딥러닝 네트워크에 입력할 수 있는 PointNet을 개발하게 되었습니다.
    • 그러나 Point Cloud는 3차원 월드좌표계에 위치해 있는 점들의 집합이므로 PointNet이 해결해야할 문제가 2가지 존재했습니다.
    • 첫번째 문제는, N개의 점들의 입력순서와 상관없이 항상 동일한 결과를 출력해야 한다는 점입니다. 
    • 두번째 문제는, 객체가 강체운동을(평행이동 or 회전) 하더라도 같은 결과를 출력해야 한다는 점입니다. 강체운동이란 아래 그림과 같이 병진운동(평행이동)과 회전운동으로 발생되는 변환을 뜻합니다.

    강체운동(rigid body motion)

    • 본 논문에서 저자는 위 두가지 문제를 해결하는 방법을 소개합니다.

    2. Related Work

    2.1 Point Cloud Features

    • Point Cloud Feature란 Point Cloud로부터 추출한 특징을 말합니다. 2D Classification task에서 이미지로부터 특징을 추출하는 것과 비슷한 개념입니다.
    • Point Feature는 수행하고자 하는 작업에 따라 다양한 방식으로 추출할 수 있습니다. 특정 점의 Point Feature는 통계적 속성(밀도, 거리, 각도 등)을 갖고있습니다. 이러한 특징들은 강체변환(평행이동, 회전)에 대해 변하지 않도록 설계됩니다. 예를들어, 포인트 클라우드에서 각 포인트의 밀도를 계산한다고 가정해보겠습니다. 밀도는 해당 포인트 주변에 얼마나 많은 포인트들이 존재하는지를 나타내는 값입니다. 그렇기 때문에 기준 포인트를 강체이동(평행이동하거나 회전)하더라도 변하지 않습니다.
    • 그래서 Feature는 내재적(Intrinsic) 특징 또는 외재적(extrinsic) 특징으로 분류됩니다. 또한 지역적(local) 특징과 전역적(global) 특징으로도 나눌 수 있습니다. Object Recognition을 예로 들어보겠습니다. 내재적 특징은 객체의 형태나 구조를 파악하기 위해 곡률이나 라플라시안과 같은 내재적 특징이 사용됩니다. 예를 들어, 자동차의 휠 부분과 차체 부분을 구분할 때 유용할 수 있습니다.
      외재적 특징은 객체의 위치나 방향을 파악하기 위해 외재적 특징이 사용됩니다. 예를 들어, 특정 영역 내에 있는 모든 자동차를 탐지할 때, 각 자동차의 중심점과 방향 벡터를 이용할 수 있습니다.

    2.2 Deep Learning on 3D Data

    • Volumetric CNNs: Point Cloud를 Voxel로 변환한 후, 3D CNN을 적용한 방법론입니다. 하지만 3D conv 계산 비용때문에 해상도가 제한되는 문제가 있었습니다.
    • Multiview CNNs: Point Cloud를 2D image로 변환한 후, 2D CNN을 적용한 방법론입니다. 하지만 Scene Understanding이나 Point Classification 등 다른 3D 작업으로 확장이 불가능하다는 문제가 있었습니다.
    • Spectral CNNs: Point Cloud를 Mesh로 변환한 후, Spectral CNN을 적용한 방법론입니다. 하지만 manifold Mesh에 제한되고 가구와 같은 비등각(non-isometric) 형태로 확장이 불가능하다는 문제가 있었습니다.
    • Feature-based DNNs: Point Cloud를 Vector로 변환한 후, FCN을 사용하여 형태를 분류하는 방법론입니다. 하지만 추출된 특징의 표현력에 의해 성능이 제한된다는 문제가 있었습니다.

    2.3 Deep Learning on Unordered Sets

    • 데이터 구조적 관점에서 Point Cloud는 비정렬 벡터의 집합입니다.
    • 그러나 Point Cloud와 같이 기하학적 구조를 갖는 자료구조에 딥러닝을 적용한 사례는 많이 없었습니다.

    3. Problem Statement

    • PointNet은 정렬되지 않은 포인트들의 집합을 직접 입력으로 받아야 합니다.
    • 각 포인트는 (x,y,z) 좌표만을 포인트의 채널로 사용해야합니다.
    • Object Classification task의 경우, 입력값은 분류하려는 객체의 Point Cloud이고 출력값은 K 후보 클래스에 대한 K 점수입니다.
    • Part Region Segmentation task의 경우, 입력값은 단일 객체이고 출력값은 n x m 점수입니다. 이때 n은 point의 개수를 말하고 m은 의미론적 서브 카테고리의 수를 말합니다.
    • Object Region Segmentation task의 경우, 입력값은 3차원 장면의 Sub Volume이고 출력값은 n x m 점수입니다. 이때 n은 point의 개수를 말하고 m은 의미론적 서브 카테고리의 수를 말합니다. 

    4. Deep Learning on Point Sets

    4.1 Properties of Point Sets in Rn 

    PointNet 아키텍처의 입력은 유클리드 공간에서 추출한 포인트들의 부분 집합입니다. 이 부분 집합은 다음과 같은 특징을 가져야 합니다.

    • Unordered: 이미지나 Voxel과 달리, Point Cloud는 순서가 없는 점들의 집합입니다. 다시말해 N개의 점을 입력으로 받는 네트워크는 데이터 피팅 순서에서 입력 데이터셋의 N! 개의 순열에 대해 불변해야 합니다.
    • Interaction among points: point들은 고립되어 있지 않으며, 이웃하는 point들이 의미 있는 부분 집합을 형성합니다. 따라서 PointNet은 이러한 point들 사이의 상호관계를 이해해야 합니다.
    • Invariance under transformations: 학습된 Point set은 강체이동(평행이동, 회전)하더라도 항상 동일한 결과를 출력해야만 합니다.

    4.2 PointNet Architecture

    PointNet Architecture

    PointNet에는 3개의 중요한 모듈이 있습니다.

    • Max Pooling layer: 입력된 모든 점(N개)의 feature를 집계하는 역할
    • Local and Global Information Combiner: local feature와 global feature를 종합하는 역할
    • Joint Alignment Network 입력 포인트와 포인트 특징을 정렬하는 역할

    저자가 이렇게 아키텍처를 설계한 이유를 하나씩 뜯어보겠습니다.

     

    4.2.1 Symmetry Function for Unordered Input

    • Max Pooling layer 부분입니다. 입력값의 순서와 상관없이 동일한 결과를 출력하는 모델을 만들기 위한 3가지 전략이 있습니다.
    • 첫번째 방법은 N개의 포인트를 정규 순서로 정렬하는 방법입니다. 그러나 고차원 공간에서 포인트들의 순서가 존재하지 않기 때문에 불가능한 방법입니다.
    • 두번째 방법은 입력을 시퀀스로 취급하여 RNN을 훈련시키되 모든 종류의 순열로 데이터를 증강하는 방법입니다. 그러나 RNN은 시퀀스 길이가 짧은경우(수십개)에서는 입력 순서에 상관없이 불변하지만, 시퀀스 길이가 길어지면(수천개)에서는 불변성을 갖지 않습니다.
    • 세번째 방법은 각 포인트로부터 정보를 집계하는 대칭함수를 사용하는 방법입니다. 대칭 함수는 N개의 벡터를 입력 받았을 때 N개의 벡터의 입력순서와 상관없이 항상 동일한 결과를 출력합니다. 대칭함수란 정의역의 순서를 바꿔도 동일한 결과를 출력하는 함수를 말합니다.

    변수가 3개일 때, 대칭함수

    • 본 논문에서 설명한 대칭함수를 이용하여 포인트들의 정보를 집계하는 방법은 다음과 같습니다. h를 MLP로 g를 단일 변수 함수와 max pooling 함수의 조합으로 근사합니다.

     

    4.2.2 Local and Global Information Aggregation

    •