Point cloud에서의 변화를 감지하는 방법에는 어떤 것들이 있을까요?

SJ·2025년 6월 26일
0

이 게시글은 장형기님의 SLAM 기술면접 질문 100선에 대한 제 나름대로의 답을 정리한 것입니다.


SLAM은 정적 환경을 가정하기 때문에 변화를 감지하는 것이 중요합니다. ( 보통은 그냥 가까운거 날려버림)
사실 너무 크지만 않으면 동적 물체는 엄청 많은 포인트 클라우드 중 작은 부분만 차지하기 때문에 무시를 할 수 있습니다.
하지만 공간이 작거나 물체가 클 경우 그리고 사실은 항상 결과에 악영향을 끼칩니다.

오늘은 이 point cloud의 변화를 감지하는 방법을 알아보겠습니다.

기하학적 방법

  • 전통적 계산 방식

    • 거리 기반 비교

      두 포인트 클라우드를 정합시킨 후, 점 대 점 또는 점 대 표면 간의 거리를 측정하여 변화를 탐지합니다.
      그렇게 되면 이동한 물체의 경우 제대로 정합이 되지 않기 때문에 거리를 측정하면 두 물체 사이가 멀게 나옵니다.
      이 거리가 일정 threshold를 넘으면 변화로 감지합니다.

    • Voxel grid 기반 비교

      공간을 정육면체 작은 단위인 Voxel로 나눈 뒤, 각 복셀의 상태 변화를 비교

      • 각 복셀이 차있는지 비어있는지를 확인하고 시점에 따라 그것이 변하면 그것을 감지합니다.

      • 각 복셀 내에 포함된 점의 개수를 이용하여 밀도를 계산하여 그것을 비교하는 방법도 있습니다.

    • Octree 기반 비교

      포인트 클라우드를 옥트리라는 계층적 트리 구조로 표현하여 비교하는 방식

      • 구조 비교: 두 포인트 클라우드에 대한 옥트리를 각각 생성한 뒤, 두 트리의 구조를 재귀적으로 비교 후
        하위 노드의 구성이 다른 부분을 변화 영역으로 식별

전통적인 계산 방식의 경우 직관적이고 계산이 빠르다는 장점이 있습니다.
저도 SLAM을 해서 동적 물체를 제거할 때 딥러닝 기반 방식보다는 이런 방식을 쓰는 것을 선호합니다.
GPU도 안써요.

  • 딥러닝 기반 방법

    • Siamese Network
      동일한 구조와 가중치를 공유하는 두 개의 신경망을 사용하여 두 입력의 유사성을 학습하는 구조입니다.

      t1 시점과 t2 시점의 포인트 클라우드 패치를 각각 샴 네트워크의 두입력으로 넣고 특징 벡터를 추출하여 비교합니다. 이것의 차이가 클 경우 변화로 탐지할 수 있습니다.

    • 특징 융합 기반 모델

      두 시점의 정보를 초기에 적극적으로 융합하여 '변화 정보' 자체를 네트워크가 학습하도록 설계된 구조입니다.

      두 포인트 클라우드에서 추출한 특징을 네트워크 중간단계에서 바로 융합하여 변화에 집중할 수 있습니다.

    • 비지도 학습

      레이블이 없는 데이터를 사용하여 변화를 탐지하는 방법
      대규모 데이터셋에 대한 수동적인 레이블링 작업을 줄일 수 있어 주목받고 있음

      • 데이터 자체의 특성을 이용해 스스로 학습 목표를 만드는 자기 지도 학습을 통해 두 시점 데이터 간의 유사점과 차이점을 감지(자기 지도 학습)

      • 두 시점에서 추출한 특징 벡터 간의 변화 벡터를 분석하여 변화의 크기와 방향을 학습(심층 변화 벡터 분석)


    보통 빠르고 간단한 변화 확인이 필요할 때 복셀 그리드 기반 또는 거리 기반을 사용합니다.
    LiDAR의 경우 range image depth값 차이를 활용하는 논문도 읽은적이 있습니다.

    복잡한 도시 환경이나 동적 객체의 미묘한 변화까지 탐지해야할 때는 딥러닝 기반의 탐지를 하는 것이 좋을 것 같습니다.
    하지만 메모리도 많이 써야하고 학습도 잘해야하기 때문에 저는 쓰는데 좀 고민이 있습니다.

profile
student

0개의 댓글