3DSegmentation:Basic
개발자 관점에서 3D Segmentation의 기초부터 SOTA까지 접근하기 위한 학습 로드맵.
Phase 0: 선수 지식 점검
시작 전에 아래 개념이 익숙한지 확인.
- 2D Image Segmentation 기본 - Semantic segmentation / Instance segmentation / Panoptic segmentation
-
CNN 기초 - Encoder-Decoder 구조, U-Net 아키텍처 - PyTorch 기본 사용법 - Dataset, DataLoader, 학습 루프
- 3D 좌표계 - 회전행렬, 변환행렬, 카메라 모델 (intrinsic/extrinsic)
- ROS2 기초 - 토픽, 서비스, TF2 프레임 개념 (로봇 연동 필수)
핵심 라이브러리 셋업
Phase 1: 3D 데이터 표현 방식 이해
3D segmentation을 이해하려면 먼저 "3D 데이터가 뭘로 표현되는가"를 알아야 한다.
Point Cloud ⭐
- 가장 원시적인 3D 표현.
(x, y, z)좌표의 집합 - LiDAR, depth camera, structured light camera
- 비정형 (Unordered) 데이터 - CNN 직접 적용 불가
- Open3D로 .ply, .pcd 파일 로드 및 시각화.
용접 맥락 (Welding Context) 기본 플로우:
- structured light camera (e.g. Photoneo PhoXi, Intel RealSense) 사용하여 워크피스 스캔
- 점군 (Point Cloud) 획득
- 이음부 검출
import open3d as o3d
pcd = o3d.io.read_point_cloud("example.ply")
o3d.visualization.draw_geometries([pcd])
Voxel (복셀)
- 3D 공간을 균일한 격자로 나눈 것 (3D 픽셀)
- 3D CNN 적용 가능하지만 메모리 소모가 큼 (
O(n³)) - Sparse Convolution으로 개선 (MinkowskiEngine, SpConv)
- 용접 맥락 - WeldNet 등에서 voxel encoding + sparse conv로 용접 이음 검출에 활용
Mesh
- 꼭짓점(vertex) + 면(face)으로 구성된 표면 표현
- CAD, 게임, AR/VR에서 주로 사용
- Graph Neural Network으로 처리 가능
Implicit Representation (암묵적 표현)
- NeRF (Neural Radiance Fields) - 연속 함수로 3D 장면을 표현
- 3D Gaussian Splatting (3DGS) - 3D 가우시안의 집합으로 장면 표현
- 최근 3D segmentation 의 핵심 백본으로 부상 -> 용접에서는 직접적인 사용 빈도 낮음 -> 연구 트렌드 파악 용도
Range Image / BEV (Bird's Eye View)
- LiDAR 점군을 2D 이미지로 투영하여 기존 2D 기법 활용
- 자율주행 분야에서 실시간 처리에 유리
Phase 2: 고전적 3D Segmentation
딥러닝 이전의 전통 방법을 이해하면 왜 딥러닝이 필요했는지 체감할 수 있다.
Region Growing
RANSAC 기반 평면 분할
- 바닥, 벽 등 평면 구조를 빠르게 추출
Open3D의 샘플 코드:
# Step 1: Detect the first plane (첫 번째 평면 검출)
plane1, inliers1 = pcd.segment_plane(distance_threshold=0.01, ransac_n=3, num_iterations=1000)
# Step 2: Remove inliers and detect second plane (두 번째 평면 검출)
remaining = pcd.select_by_index(inliers1, invert=True)
plane2, inliers2 = remaining.segment_plane(distance_threshold=0.01, ransac_n=3, num_iterations=1000)
# Step 3: Intersection of two planes = weld seam line (교차선 = 용접 이음)
Euclidean Clustering (DBSCAN)
- 거리 기반 클러스터링으로 개별 물체 분리
Graph Cut / Felzenszwalb
- 이미지 기반 그래프 분할을 3D로 확장한 기법
- SAM3D (Pointcept) 등에서 후처리로 활용
Phase 3: 딥러닝 기반 Point Cloud Segmentation
PointNet (2017) ⭐
- 핵심 아이디어: 점군을 직접 입력받는 최초의 딥러닝 모델
- Permutation invariance를 Max Pooling으로 해결
- T-Net으로 공간 변환 학습
- 논문: PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
- 코드: charlesq34/pointnet
- 실습 추천: Keras PointNet Tutorial
- PyG 튜토리얼: PyTorch Geometric - Point Cloud Processing
PointNet++ (2017) ⭐
- PointNet의 한계(로컬 구조 무시)를 계층적 구조로 해결
- Set Abstraction: Sampling → Grouping → PointNet
- Multi-Scale Grouping (MSG)로 밀도 불균일 대응
- 논문: PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
- 코드: Github - charlesq34/pointnet2
Sparse Convolution 기반
- MinkowskiEngine / SpConv - 희소 3D 데이터에 효율적인 합성곱
- MinkUNet - 3D U-Net + Sparse Conv. ScanNet/SemanticKITTI 벤치마크 상위
- SPVCNN - Point + Voxel 하이브리드
- 코드: Github - NVIDIA/MinkowskiEngine
Transformer 기반
- Point Transformer (v1/v2/v3) - Self-attention을 점군에 적용
- PointTransformerV3 (PTv3) - 현재 다수 벤치마크 SOTA
- Stratified Transformer - 장거리 의존성 캡처에 효과적
주요 벤치마크 데이터셋
| 데이터셋 | 영역 | 특징 |
| ScanNet | 실내 | RGB-D 재구성, 의미/인스턴스 분할 |
| S3DIS | 실내 | 대규모 건물 스캔 |
| SemanticKITTI | 자율주행 | LiDAR 시퀀스, 28 클래스 |
| ModelNet40 | 분류 | 40카테고리 CAD 모델 |
| ShapeNetPart | 부분 분할 | 물체 파트 레이블 |
| nuScenes | 자율주행 | 다중 센서 (카메라+LiDAR) |
통합 프레임워크
- Pointcept - 다양한 점군 모델의 통합 프레임워크
Phase 4: 2D→3D 리프팅 (Foundation Model 활용)
2D에서 학습한 Foundation Model을 3D로 확장하는 패러다임.
SAM (Segment Anything Model)
- Meta의 2D 범용 분할 모델. 모든 후속 3D 확장의 기반
- 프롬프트(점, 박스, 텍스트) → 마스크 생성
- 코드: Github - facebookresearch/segment-anything
SAM → 3D 확장 계보
- SAM (2D, 2023)
- SAM 2 (Video, 2024) — 프레임 간 추적 추가
- SAM 3 (Open-vocab, 2025) — 텍스트 프롬프트 + 다중 객체
- SAM3D (2025) — 단일 이미지 → 3D 재구성
- SAM 3 (Open-vocab, 2025) — 텍스트 프롬프트 + 다중 객체
- SAM 2 (Video, 2024) — 프레임 간 추적 추가
- 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 인스턴스
- SAM-Med3D (ECCV'24) - 3D 의료영상 전용 Fine-tuning
- 3DSAM-adapter - 2D SAM을 3D 볼륨으로 어댑터 기반 확장
- SAM3D (ISBI'24) — 볼륨 전체를 한 번에 처리
- P3-SAM (2025) — PointTransformer 백본, 진정한 3D 포인트 프롬프팅
실습 순서 추천
- SAM 2D 데모를 먼저 돌려보기 → 프롬프트-마스크 파이프라인 이해
- SAM3D (Pointcept) 코드를 ScanNet에서 실행 → 2D-3D 리프팅 이해
- SA3D로 NeRF scene segmentation 실습
Phase 5: 3D Gaussian Splatting + Segmentation
3D Gaussian Splatting (3DGS) 기본 이해
- NeRF의 대안으로 부상한 실시간 3D 장면 표현
- 3D 가우시안의 집합으로 장면을 표현, 실시간 렌더링 가능
- 원 논문: 3D Gaussian Splatting for Real-Time Radiance Field Rendering
- 코드: graphdeco-inria/gaussian-splatting
Segment Any 3D Gaussians ⭐
- 3DGS 장면에서 개별 가우시안을 의미론적으로 분할
- SAM의 2D 마스크를 3D 가우시안에 역투영하여 학습
- 코드: Jumpat/SegmentAnythingin3D
관련 연구
- GaussianEditor - 3DGS에서 Gaussian Semantic Tracing으로 편집
- SAGA (Segment Any Gaussian) - 확장 가능한 3DGS 분할
- LEGaussians (Language Embedded Gaussians) - 텍스트 쿼리로 3DGS 분할
- Survey: A Survey on 3D Gaussian Splatting Applications: Segmentation, Editing, and Generation
Phase 6: Open-Vocabulary & Language-guided 3D Segmentation
텍스트로 원하는 대상을 지정하여 3D 분할하는 최신 트렌드. -> LLM 적용
핵심 개념
- Open-Vocabulary - 학습 시 보지 못한 카테고리도 분할 가능
- CLIP / SigLIP 등 Vision-Language Model을 3D 특징에 접목
주요 모델
- OpenScene - 3D 점에 CLIP 특징을 부여, 텍스트 쿼리로 3D 검색
- LERF (Language Embedded Radiance Fields)
- OV-SAM3D - Training-free. SAM + RAM + CLIP 조합
- Reason3D (2025) - LLM으로 3D 분할 대상을 추론
- SAM 3 (Meta, 2025) - 텍스트 프롬프트 기반 통합 모델
이 분야의 방향
2D Foundation Model의 능력을 3D로 Transfer 하는 것이 주류.
별도의 3D 학습 데이터 없이도 동작하는 zero-shot / training-free 접근이 강세.
Phase 7: 도메인 특화 응용
자율주행
- LiDAR point cloud semantic segmentation
- 주요 모델: Cylinder3D, WaffleIron, CENet, RangeViT
- 벤치마크: SemanticKITTI, nuScenes, Waymo Open Dataset
의료영상
- CT/MRI 볼륨의 장기/병변 분할
- 주요 모델: nnU-Net (여전히 강력), SAM-Med3D, UNETR
- 벤치마크: BTCV, BraTS, TotalSegmentator
로봇/AR
- 실시간 scene understanding
- 3DGS 기반 interactive segmentation이 부상
See also
- 3D Segmentation
- Computer Vision
- Point Cloud
- Deep Learning
- SAM3
- Segment Any 3D Gaussians
- 3D scanning
- Image segmentation
- NeRF
- 3D Gaussian Splatting
- AIWeldingRobot:Basic
Favorite site
- clij2-docs - 3D Image Segmentation
- Papers With Code - 3D Semantic Segmentation
- Pointcept GitHub
- emergentmind - SAM 3D topic
- 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 메소드 모음