Skip to content

3D Point Cloud Segmentation

LVS 스캐너 등으로 취득한 3D 포인트 클라우드 데이터를 딥러닝으로 segmentation 하기 위한 구현 방법, SoTA 모델, 프레임워크, 라벨링 도구 및 방법 정리.

3D 포인트 클라우드 Segmentation(3D Point Cloud Segmentation)은 LVS 레이저 스캐너 등으로 취득한 점군(point cloud) 데이터의 각 포인트에 클래스를 부여하는 딥러닝 태스크이다. 본 문서는 자율주행용 대규모 야외 씬이 아닌 소규모·정밀·도메인 특화(예: 용접 비드 검사) 시나리오를 기준으로 정리한다.

전체 구현 방법

전형적 파이프라인: 데이터 준비 → 전처리 → 라벨링 → 학습 → 추론/후처리

  • 전처리: LVS 스캔은 라인 프로파일이 누적된 dense 점군이므로 노이즈/이상치 제거(SOR, ROR), 다운샘플링(voxel grid), 좌표 정규화가 중요. PTv3 계열은 voxel serialization 기반이라 voxel size가 성능에 직결된다.
  • Semantic vs Instance: 종류만 구분하면 semantic segmentation, 개별 객체(비드 1번/2번) 구분이 필요하면 instance segmentation.
  • 클래스 불균형 대응: 산업 데이터의 핵심 난점. (a) weighted CrossEntropy + Lovász-Softmax, (b) point-level oversampling/copy-paste 증강, (c) 자기지도 사전학습으로 초기 표현 안정화.
  • 소규모 데이터 전략: 자기지도 사전학습(Sonata) → 소량 라벨 fine-tune, 또는 CAD 기반 자동 라벨링으로 의사라벨 대량 생성.

딥러닝 모델 SoTA

모델

유형

특징

권장 용도

PTv3 (Point Transformer V3)

Transformer

속도/메모리/정확도 균형 최고, 현 백본 표준

1순위 백본, 미세 형상 검출

Sonata (2025)

자기지도 사전학습

PTv3 백본 위 self-distillation

라벨 적은 환경, 사전학습 후 fine-tune

OA-CNNs / MinkowskiNet

Sparse Voxel CNN

경량, 단순 태스크에 가성비

결함 유무 등 단순 분리

KPConv / PointNeXt

Point 기반

검증된 베이스라인

비교군

  • 1Sonata(2025)는 self-distillation 기반 자기지도 학습으로 다양한 3D 실내·외 perception 태스크에서 새 SoTA를 기록했다.
  • 미세 형상(용접 결함)이 중요하면 transformer(PTv3), 단순 영역 분리면 sparse CNN이 유리.

오픈소스 프레임워크

  • Pointcept1순위. PTv3·Sonata·PTv2·OA-CNNs·PointGroup 통합. 커스텀 데이터셋 어댑터만 작성하면 됨.
  • MMDetection3D (OpenMMLab) — 모델 다양성·설정 관리 강점, 다소 무거움.
  • Open3D-ML — 전처리·시각화·간단 모델 통합. 보조 도구로 병행.
  • Torch-Points3D — 유지보수 정체, 신규 시작엔 비권장.

INFORMATION

DGX Spark(GB10/aarch64) 환경은 PyTorch ARM64 빌드 + spconv/Minkowski의 aarch64 컴파일 이슈를 사전 확인할 것.

라벨링 도구

도구

라이선스

특징

CloudCompare

오픈소스

산업 점군 정밀 편집 표준, 플러그인/스크립팅. 1순위

CVAT

오픈소스

SAM 기반 AI 보조 라벨링, 웹/협업

Semantic Segmentation Editor (Hitachi)

오픈소스

유연한 point cloud segmentation 라벨링

Segments.ai

상용

멀티센서 라벨링 플랫폼, 외주/대규모용

라벨링 방법

핵심 원리: 과분할 기반 세그먼트 칠하기

벤치마크 데이터셋의 라벨링은 포인트 개별 선택도, 큐브(박스)도 아닌 over-segmentation 기반 방식이 표준이다. PTv3 등 백본 모델은 라벨링 방법을 정의하지 않고 데이터셋 라벨을 그대로 사용하므로, 실제 방법은 데이터셋별로 본다.

ScanNet 방식 (사실상 표준)

  1. 자동 과분할 선행: 2메쉬에 normal 기반 graph-cut을 적용해 미리 작은 기하 세그먼트로 분할.
  2. 세그먼트 단위 라벨 부여: 웹 인터페이스에서 과분할된 세그먼트를 클릭해 클래스 지정 (포인트가 아니라 조각 단위).
  3. 세그먼트가 충분히 작아 대부분 단일 객체만 포함 → 조각 단위로 칠해도 포인트 수준 라벨이 산출됨.
  • 비용: 3ScanNet 라벨링에 500명 작업자가 씬당 평균 22.3분 소요. 포인트 개별 클릭이었다면 불가능.
  • ScanNet++: 4decimated 메쉬 과분할 위에 자유 텍스트 instance 라벨 부여, 씬당 평균 약 1시간.

기타 데이터셋

  • Matterport3D: 5바닥 평면도 → 방 단위 영역 추출 → ScanNet 페인팅 인터페이스로 객체 instance 칠하기 (계층적).
  • S3DIS: 공간을 방 단위 분할 후 방 안에서 객체 단위 포인트 영역 선택.
  • SemanticKITTI: LiDAR(메쉬 없음)라 여러 스캔을 한 좌표계로 누적 후 영역 칠하기.

"큐브"의 용도

큐브(3D bounding box / cuboid)는 object detection 데이터셋(KITTI/nuScenes/Waymo detection)의 라벨링 방식이며, 모든 포인트에 라벨이 필요한 segmentation에는 부적합하다. 단, 실무에서 거친 1차 선택 도구로 활용(박스로 영역 선택 → 일괄 부여 → 경계 다듬기)하는 하이브리드는 흔하다.

용접 검사 적용 종합

권장 워크플로우:

  1. CAD 정합으로 의사라벨 대량 생성 (디지털 트윈과 시너지)
  2. 소량만 CloudCompare로 정밀 수정
  3. 라벨 없는 스캔으로 Sonata 자기지도 사전학습
  4. PTv3 fine-tune (Lovász + class weighting으로 불균형 대응)
  5. human-in-the-loop로 점진 개선

핵심 교훈: "과분할로 먼저 쪼개고 조각 단위로 칠하라." 산업 환경에서는 ScanNet의 "자동 과분할 → 조각 칠하기"를 "CAD 정합 → 표면 영역 전사"로 치환하면 동일한 효율을 더 정밀하게 얻는다.

See also

Favorite site

References

1 2 3 4 5

</references>