사용자 가이드

제 9 장 — SfM 백엔드

인스펙터의 Camera Alignment 선택기가 있는 Expert 모드 (Apple Photogrammetry / Native (Beta))
인스펙터의 Camera Alignment 선택기가 있는 Expert 모드 (Apple Photogrammetry / Native (Beta))
Native (Beta) 가 활성인 인스펙터 — Camera Alignment 선택기에서 두 번째 옵션이 선택되었고 다른 모든 학습 구성 매개변수는 변경되지 않음
Native (Beta) 가 활성인 인스펙터 — Camera Alignment 선택기에서 두 번째 옵션이 선택되었고 다른 모든 학습 구성 매개변수는 변경되지 않음

인스펙터의 Camera Alignment 선택기는 두 옵션이 있는 세그먼트 컨트롤입니다 — Apple Photogrammetry (App Store 빌드의 기본값, 완전 Sandbox 호환) 와 Native (Beta) (RadianceKit 자체의 FAST+BRIEF+GLOMAP 파이프라인 백엔드, Phase 3.8/3.9 개발, 2026-05 기준). Native (Beta) 는 궤도 전용으로 검증되었고 ≥1 000 프레임에서 Apple Photogrammetry보다 빠르지만 Phase 3 §5 품질 게이트 (finalLoss ≤ 0.0115) 를 아직 충족하지 못합니다 — 따라서 Beta 태그. Metashape, COLMAP 또는 다른 Photogrammetry 소프트웨어에서의 외부 SfM 결과는 추가로 File 메뉴를 통해 가져올 수 있습니다 (Q3 COLMAP 텍스트 형식, Q6 Workspace 가져오기) — 선택기가 전환되지 않지만 가져온 포즈는 SfM 결과를 대체합니다.

SfM은 Structure from Motion 을 의미합니다. 겹치는 사진 세트에서 소프트웨어는 각 이미지에 대해 공유 3D 좌표계에서 카메라의 위치와 시선 방향을 재구성합니다. 그 과정에서 거친 3D 점 구름이 생성되며 Gaussian Splatting의 학습을 초기화합니다. SfM 결과는 실제 학습의 입력이며 이후 이미지 품질을 결정적으로 좌우합니다.

RadianceKit은 5개의 SfM 경로를 제공합니다: 앱에 내장된 두 백엔드 (Q1 Apple Photogrammetry, Q4/Q5 Native), 외부 도구에서의 두 가져오기 경로 (Q3 COLMAP 텍스트 형식, Q6 바이너리 Workspace 가져오기), 그리고 App Store 외부의 Developer 빌드에서만 사용 가능한 Q2 COLMAP Binary. 어느 것이 적절한지는 장면 유형 (객체 주위 궤도, 실내 공간, 드론 비행) 과 외부 소프트웨어가 이미 재구성을 제공하는지에 따라 다릅니다.

Q1 — Apple Photogrammetry

위치

Expert View → 인스펙터 → Training Configuration → Camera Alignment 선택기, 항목 "Apple Photogrammetry".

기술적 설명

원래 Object Capture용으로 개발된 Apple의 내장 Photogrammetry 프레임워크를 래핑합니다. Apple은 내부적으로 독점 파이프라인 (단계는 공개적으로 문서화되지 않음) 으로 특징을 추출하고, Multi View 매칭을 통해 검증하고, Apple Silicon Neural Engine + GPU에서 Bundle Adjustment를 해결합니다. 백엔드는 완전히 App Store 호환 (외부 바이너리 없음, Sandbox=true, on-device) 이지만 카메라 포즈와 거친 점 구름만 제공합니다 — Track Length나 Reprojection Error 같은 진단 메트릭은 없습니다. Apple의 권장에 따라 수백 이미지까지 확장됩니다. 선형 드론 비행이나 큰 야외 장면에서 ~500 프레임을 초과하면 재현 가능한 충돌이나 개별 카메라의 조용한 폐기가 관찰되었습니다.

Q3 — COLMAP 텍스트 형식 (Metashape / ETH3D)

위치

메뉴 "File → Import COLMAP / Metashape Workspace…" (Cmd+⇧+I) 또는 sparse/0/cameras.txt가 있는 폴더의 드래그 앤 드롭.

기술적 설명

표준화된 COLMAP 텍스트 내보내기를 읽습니다 — sparse/0/ 하위 폴더의 세 텍스트 파일 cameras.txt, images.txt, points3D.txt — 그리고 내부 SfM 결과 모델로 변환합니다. COLMAP 바이너리 내보내기와 동일한 형식 정의이며, 바이너리 대신 ASCII로 작성됩니다. Agisoft Metashape, RealityCapture, PolyCam, ETH3D 벤치마크가 정확히 이 레이아웃으로 출력합니다. 파서는 Binary 파서와 카메라 모델 감지를 공유합니다 (모든 일반적인 모델: SIMPLE_PINHOLE, PINHOLE, OPENCV, OPENCV_FISHEYE, FULL_OPENCV). 주석 줄과 빈 줄에 강건. 테스트에서 ~1 400 카메라 (ETH3D Tunnel) 까지 문제없이 확장됩니다.

Q4 — Native SfM (증분)

위치

Expert View → 인스펙터 → Training Configuration → Camera Alignment 선택기, 항목 "Native (Beta)". 증분이 이 백엔드의 기본 모드 — 인스펙터에 별도의 매퍼 선택기는 없습니다. CLI를 통해 모드를 명시적으로 설정하려면 –native-sfm 또는 –sfm-mapper incremental을 사용합니다.

기술적 설명

전체 SfM 파이프라인의 자체 GPU 가속 구현: FAST+BRIEF 특징량 또는 CoreML을 통한 SuperPoint+LightGlue (–coreml-features 포함), 그 다음 Hamming KNN 매칭, RANSAC 기본 행렬, Track 구축, 초기 페어 선택, 2 View Bootstrap (F→E + DLT), PnP 등록과 Multi View 삼각측량을 사용하는 Greedy 증분 매퍼, 마지막으로 Huber Loss와 해석적 Jacobian을 Cholesky Solve로 사용하는 Schur 축소 Levenberg-Marquardt Bundle Adjustment. 완전 App Store 호환: 외부 바이너리 없음, Sandbox=true. Phase 3.10에서 제공된 R2 Collapse Detector 포함: 앱이 입력 프레임의 60% 미만을 등록하거나 카메라당 점 비율이 13 아래로 떨어지면 자동으로 글로벌 매퍼 (Q5) 로 폴백합니다. 경험적으로 궤도/턴테이블 장면에서 깨끗합니다. 더 일반적인 움직임 (드론 비행, 복잡한 형상의 실내 공간) 에서는 성공률이 더 낮습니다 — 그러나 Detector가 이러한 케이스를 잡습니다. ~200 카메라까지 안정적으로 확장되며, 그 이상은 상당히 더 긴 실행 시간으로.

Q5 — Native SfM (글로벌)

위치

증분 매퍼 (Q4) 가 Collapse Detector를 트리거한 경우 (입력 프레임의 60% 미만이 등록되거나 카메라당 점 비율이 13 미만) 자동으로 호출됩니다. CLI –sfm-mapper global을 통해서만 수동으로 강제 가능합니다. 인스펙터에서 글로벌 방법은 별도의 선택기를 통해 접근할 수 없습니다 — 앱이 전환 시점을 자체적으로 결정합니다.

기술적 설명

네이티브 파이프라인의 글로벌 변형. 먼저 Q4와 같이 특징 추출 + 매칭, 그 다음 모든 검증된 페어의 상대 Pose 추정, 그 다음 Rotation Averaging (세계 좌표계 내 모든 카메라 회전을 동기화) 과 Translation Averaging (큰 카메라 수에서 정수 오버플로를 피하기 위해 행렬 자유 Sparse Formulation의 LSQR 기반). 원칙적으로 ~5 000 카메라까지 확장되지만 실제로는 수백 카메라를 초과하면 품질이 저하됩니다 — K-1351에서의 Phase 3.8 §5 수용 게이트 측정은 목표 0.0115 대신 finalLoss 0.07을 산출했습니다. "Fallback Tier"로 처리됩니다: 증분 매퍼가 퇴화될 때 등장하지만 자체적으로는 품질이 다시 확인되지 않습니다.

Q6 — Metashape / COLMAP 텍스트 Workspace 가져오기 (Phase Q7)

위치

File 메뉴 → "Import COLMAP / Metashape Workspace…" (Cmd+⇧+I). sparse/0/cameras.{bin,txt}images/가 있는 폴더의 드래그 앤 드롭.

기술적 설명

드래그 앤 드롭 또는 Open 패널에서 선택된 폴더가 세 COLMAP Workspace 레이아웃 (sparse/0/, sparse/, 또는 루트) 중 하나에 해당하는지, 그리고 재구성이 바이너리 (cameras.bin) 인지 텍스트 (cameras.txt) 인지를 자동 감지합니다. 바이너리 경로는 COLMAP 바이너리 파서를 사용하고, 텍스트 경로는 ETH3D 로더를 사용합니다 — 둘 다 동일한 SfM 결과 모델을 생성하며 파이프라인의 나머지 (이미지 가져오기, MCMC 학습 시작) 는 소스에 무관합니다. 이미지는 앱 Sandbox 북마크 시스템을 통해 Security Scoped로 열리므로 가져오기는 App Store 버전에서도 작동합니다. 특히 "재구성 없이 Metashape 내보내기를 다시 계산" 케이스용으로 의도되었습니다. File 메뉴 항목에서 언급된 감지는 선택된 폴더가 인식 가능한 Workspace가 아닐 경우 앱 로그에 경고합니다.

어느 백엔드를 언제?

시나리오권장 백엔드
객체 스캔, 50–200 사진Q1 Apple Photogrammetry
큰 야외 / 드론 / >500 이미지Q6 Workspace 가져오기 (Metashape 또는 COLMAP에서 계산 후 로드)
Metashape/RealityCapture 내보내기 존재Q6 가져오기 (SfM 필요 없음)
ETH3D / 학술 COLMAP 텍스트 세트Q3 COLMAP 텍스트 가져오기
엄격한 App Store 호환 + 궤도 장면Q4 Native 증분
Q4 실패Q5 Native 글로벌 (자동)
ETH3D 벤치마크 데이터Q3 (autotest precomputed)

빠른 비교

백엔드App StoreSandbox외부 바이너리Best Use최대 ~Cams
Q1 Apple PG궤도 객체~300
Q2 COLMAP Binary❌ (Developer 빌드만)colmap/glomap야외 대형~5 000
Q3 COLMAP 텍스트 가져오기Bench rigs~1 500
Q4 Native 증분궤도 객체~200
Q5 Native 글로벌Q4 폴백~1 351
Q6 Workspace 가져오기Metashape 재사용소스 별