Skip to content

3DSegmentation:Basic

개발자 관점에서 3D Segmentation의 기초부터 SOTA까지 접근하기 위한 학습 로드맵. 각 단계는 이전 단계의 지식을 전제로 하며, 실습 가능한 코드/리포지토리를 포함한다.

WARNING

이 페이지는 Claude AI 가 만든 문서 입니다. 내용을 참고할 때 주의하시오

Phase 0: 선수 지식 점검

시작 전에 아래 개념이 익숙한지 확인. 부족하면 해당 항목부터 보강.

  • 2D Image Segmentation 기본: Semantic / Instance / Panoptic segmentation의 차이
  • CNN 기초: Encoder-Decoder 구조, U-Net 아키텍처
  • PyTorch 기본 사용법: Dataset, DataLoader, 학습 루프
  • 3D 좌표계: 회전행렬, 변환행렬, 카메라 모델 (intrinsic/extrinsic)

핵심 라이브러리 셋업

pip install open3d numpy torch torchvision trimesh
  • Open3D — 3D 데이터 시각화/처리의 스위스 아미 나이프
  • trimesh — Mesh 로딩/조작

Phase 1: 3D 데이터 표현 방식 이해

3D segmentation을 이해하려면 먼저 "3D 데이터가 뭘로 표현되는가"를 알아야 한다.

1.1 Point Cloud (점군)

  • 가장 원시적인 3D 표현. (x, y, z) 좌표의 집합
  • LiDAR, depth camera 등에서 직접 획득
  • 비정형(unordered) 데이터 — 일반 CNN을 직접 적용할 수 없음
  • 실습: Open3D로 .ply, .pcd 파일 로드 및 시각화
import open3d as o3d
pcd = o3d.io.read_point_cloud("example.ply")
o3d.visualization.draw_geometries([pcd])

1.2 Voxel (복셀)

  • 3D 공간을 균일한 격자로 나눈 것 (3D 픽셀)
  • 3D CNN 적용 가능하지만 메모리 소모가 큼 (O(n³))
  • Sparse Convolution으로 개선 (MinkowskiEngine, SpConv)

1.3 Mesh

  • 꼭짓점(vertex) + 면(face)으로 구성된 표면 표현
  • CAD, 게임, AR/VR에서 주로 사용
  • Graph Neural Network으로 처리 가능

1.4 Implicit Representation (암묵적 표현)

  • NeRF (Neural Radiance Fields): 연속 함수로 3D 장면을 표현
  • 3D Gaussian Splatting (3DGS): 3D 가우시안의 집합으로 장면 표현
  • 최근 3D segmentation의 핵심 백본으로 부상

1.5 Range Image / BEV (Bird's Eye View)

  • LiDAR 점군을 2D 이미지로 투영하여 기존 2D 기법 활용
  • 자율주행 분야에서 실시간 처리에 유리

참고 자료

Phase 2: 고전적 3D Segmentation

딥러닝 이전의 전통 방법을 이해하면 왜 딥러닝이 필요했는지 체감할 수 있다.

2.1 Region Growing

  • 시드 포인트에서 시작, 유사한 이웃 포인트를 그룹에 추가
  • Open3D, PCL에서 바로 사용 가능

2.2 RANSAC 기반 평면 분할

  • 바닥, 벽 등 평면 구조를 빠르게 추출
  • 실습: Open3D의 segment_plane()
plane_model, inliers = pcd.segment_plane(
    distance_threshold=0.01, ransac_n=3, num_iterations=1000
)

2.3 Euclidean Clustering (DBSCAN)

  • 거리 기반 클러스터링으로 개별 물체 분리

2.4 Graph Cut / Felzenszwalb

  • 이미지 기반 그래프 분할을 3D로 확장한 기법
  • SAM3D (Pointcept) 등에서 후처리로 활용

참고 자료

Phase 3: 딥러닝 기반 Point Cloud Segmentation

3.1 PointNet (2017) ⭐ 필수

3.2 PointNet++ (2017) ⭐ 필수

3.3 Sparse Convolution 기반

  • MinkowskiEngine / SpConv — 희소 3D 데이터에 효율적인 합성곱
  • MinkUNet — 3D U-Net + Sparse Conv. ScanNet/SemanticKITTI 벤치마크 상위
  • SPVCNN — Point + Voxel 하이브리드
  • 코드: NVIDIA/MinkowskiEngine

3.4 Transformer 기반

  • Point Transformer (v1/v2/v3) — Self-attention을 점군에 적용
  • PointTransformerV3 (PTv3) — 현재 다수 벤치마크 SOTA
  • Stratified Transformer — 장거리 의존성 캡처에 효과적

프레임워크: Pointcept — 다양한 점군 모델의 통합 프레임워크

3.5 주요 벤치마크 데이터셋

데이터셋

영역

특징

ScanNet

실내

RGB-D 재구성, 의미/인스턴스 분할

S3DIS

실내

대규모 건물 스캔

SemanticKITTI

자율주행

LiDAR 시퀀스, 28 클래스

ModelNet40

분류

40카테고리 CAD 모델

ShapeNetPart

부분 분할

물체 파트 레이블

nuScenes

자율주행

다중 센서 (카메라+LiDAR)

Phase 4: 2D→3D 리프팅 (Foundation Model 활용)

2D에서 학습한 강력한 Foundation Model을 3D로 확장하는 패러다임.

4.1 SAM (Segment Anything Model) 이해

  • Meta의 2D 범용 분할 모델. 모든 후속 3D 확장의 기반
  • 프롬프트(점, 박스, 텍스트) → 마스크 생성
  • 코드: facebookresearch/segment-anything

4.2 SAM → 3D 확장 계보

SAM (2D, 2023)
├── SAM 2 (Video, 2024) — 프레임 간 추적 추가
│   └── SAM 3 (Open-vocab, 2025) — 텍스트 프롬프트 + 다중 객체
│       └── SAM3D (2025) — 단일 이미지 → 3D 재구성
├── 3D Scene Segmentation 파생
│   ├── SAM3D (Pointcept, ICCV'23) — 2D 마스크 → 3D 역투영 + 병합
│   ├── SA3D (NeurIPS'23) — NeRF에서 SAM으로 Cross-view self-prompting
│   ├── SAMPro3D (3DV'25) — 3D 공간에서 SAM 프롬프트 위치 최적화
│   └── SAM-guided Graph Cut (ECCV'24) — SAM + 그래프 컷으로 3D 인스턴스
├── Medical 3D 확장
│   ├── SAM-Med3D (ECCV'24) — 3D 의료영상 전용 Fine-tuning
│   ├── 3DSAM-adapter — 2D SAM을 3D 볼륨으로 어댑터 기반 확장
│   └── SAM3D (ISBI'24) — 볼륨 전체를 한 번에 처리
└── Native 3D
    └── P3-SAM (2025) — PointTransformer 백본, 진정한 3D 포인트 프롬프팅

4.3 실습 순서 추천

  1. SAM 2D 데모를 먼저 돌려보기 → 프롬프트-마스크 파이프라인 이해
  2. SAM3D (Pointcept) 코드를 ScanNet에서 실행 → 2D-3D 리프팅 이해
  3. SA3D로 NeRF scene segmentation 실습

Phase 5: 3D Gaussian Splatting + Segmentation

5.1 3DGS 기본 이해

5.2 Segment Any 3D Gaussians ⭐ (이미 위키에 있음)

  • 3DGS 장면에서 개별 가우시안을 의미론적으로 분할
  • SAM의 2D 마스크를 3D 가우시안에 역투영하여 학습
  • 코드: Jumpat/SegmentAnythingin3D

5.3 관련 연구

Phase 6: Open-Vocabulary & Language-guided 3D Segmentation

텍스트로 원하는 대상을 지정하여 3D 분할하는 최신 트렌드.

6.1 핵심 개념

  • Open-Vocabulary: 학습 시 보지 못한 카테고리도 분할 가능
  • CLIP / SigLIP 등 Vision-Language Model을 3D 특징에 접목

6.2 주요 모델

  • OpenScene — 3D 점에 CLIP 특징을 부여, 텍스트 쿼리로 3D 검색
  • LERF — Language Embedded Radiance Fields
  • OV-SAM3D — Training-free. SAM + RAM + CLIP 조합
  • Reason3D (2025) — LLM으로 3D 분할 대상을 추론
  • SAM 3 (Meta, 2025) — 텍스트 프롬프트 기반 통합 모델

6.3 이 분야의 방향

2D Foundation Model의 능력을 3D로 transfer하는 것이 주류. 별도의 3D 학습 데이터 없이도 동작하는 zero-shot / training-free 접근이 강세.

Phase 7: 도메인 특화 응용

7.1 자율주행

  • LiDAR point cloud semantic segmentation
  • 주요 모델: Cylinder3D, WaffleIron, CENet, RangeViT
  • 벤치마크: SemanticKITTI, nuScenes, Waymo Open Dataset

7.2 의료영상

  • CT/MRI 볼륨의 장기/병변 분할
  • 주요 모델: nnU-Net (여전히 강력), SAM-Med3D, UNETR
  • 벤치마크: BTCV, BraTS, TotalSegmentator

7.3 로봇/AR

  • 실시간 scene understanding
  • 3DGS 기반 interactive segmentation이 부상

추천 학습 순서 (타임라인)

Week 1-2:  Phase 0 + Phase 1
           → Open3D로 점군 다루기, 3D 데이터 표현 실습

Week 3:    Phase 2
           → RANSAC, DBSCAN 등 전통 방법 직접 구현

Week 4-5:  Phase 3.1 ~ 3.2
           → PointNet / PointNet++ 논문 읽기 + 코드 실행
           → ShapeNetPart로 Part Segmentation 학습

Week 6-7:  Phase 3.3 ~ 3.4
           → Sparse Conv 이해, Pointcept 프레임워크 사용
           → ScanNet에서 Semantic Segmentation 실험

Week 8:    Phase 4.1 ~ 4.3
           → SAM 2D 실습 → SAM3D/SA3D 3D 확장 실습

Week 9-10: Phase 5
           → 3DGS 기본 이해 + Segment Any 3D Gaussians 실행

Week 11:   Phase 6
           → Open-vocab 3D segmentation 최신 논문 서베이

Week 12:   Phase 7
           → 관심 도메인 deep dive

핵심 GitHub 리포지토리

리포지토리

설명

Pointcept

점군 모델 통합 프레임워크 (PTv3, PointNet++ 등)

facebookresearch/segment-anything

SAM 원본

facebookresearch/sam3

SAM 3 + SAM3D

graphdeco-inria/gaussian-splatting

3DGS 원본

Jumpat/SegmentAnythingin3D

SA3D (NeRF + SAM)

NVIDIA/MinkowskiEngine

Sparse 3D Convolution

yeyan00/pointcloud-sota

Point Cloud SOTA 메소드 모음

See also

Favorite site