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이 유리.
오픈소스 프레임워크
- Pointcept — 1순위. 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 방식 (사실상 표준)
- 자동 과분할 선행: 2메쉬에 normal 기반 graph-cut을 적용해 미리 작은 기하 세그먼트로 분할.
- 세그먼트 단위 라벨 부여: 웹 인터페이스에서 과분할된 세그먼트를 클릭해 클래스 지정 (포인트가 아니라 조각 단위).
- 세그먼트가 충분히 작아 대부분 단일 객체만 포함 → 조각 단위로 칠해도 포인트 수준 라벨이 산출됨.
- 비용: 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차 선택 도구로 활용(박스로 영역 선택 → 일괄 부여 → 경계 다듬기)하는 하이브리드는 흔하다.
용접 검사 적용 종합
권장 워크플로우:
- CAD 정합으로 의사라벨 대량 생성 (디지털 트윈과 시너지)
- 소량만 CloudCompare로 정밀 수정
- 라벨 없는 스캔으로 Sonata 자기지도 사전학습
- PTv3 fine-tune (Lovász + class weighting으로 불균형 대응)
- human-in-the-loop로 점진 개선
핵심 교훈: "과분할로 먼저 쪼개고 조각 단위로 칠하라." 산업 환경에서는 ScanNet의 "자동 과분할 → 조각 칠하기"를 "CAD 정합 → 표면 영역 전사"로 치환하면 동일한 효율을 더 정밀하게 얻는다.
See also
- PTv3
- Pointcept
- LVS 스캐너
- 용접 품질 검사
- Point Clouds
- CloudCompare
- Semantic Segmentation Editor
Favorite site
- 라이더 어노테이션이란 무엇인가? 정의 및 예시 | 샤이프
- 포인트 클라우드 라벨링 도구 출시
- Ch01. LiDAR Data Processing - 3) Open3d, CloudeCompare, LiDAR 레이블링 툴
References
</references>