Edge deployment
SLAM은 클라우드에서 실행되지 않는다 — 로봇, 드론, 헤드셋, 휴대폰에서, 엄격한 지연 시간과 전력 예산 아래 실행된다. **엣지 배포(edge deployment)**는 인식 파이프라인(점점 더 신경망을 포함하는)을 가져와 NVIDIA Jetson, 휴대폰 SoC, XR 헤드셋 같은 임베디드 컴퓨트에서 실시간으로 동작하게 만드는 기술이다.
학습된 프론트엔드 내보내기
현대 SLAM 시스템은 수공예 구성 요소를 신경망으로 대체한다: 키포인트를 위한 SuperPoint, 매칭을 위한 LightGlue/SuperGlue, 조밀 깊이 사전을 위한 단안 깊이 네트워크. 이들은 PyTorch에서 학습되지만, PyTorch는 임베디드 타깃에 적합한 런타임이 아니다. 표준 경로는 다음과 같다.
-
ONNX로 내보내기 — 프레임워크 중립적인 그래프 형식. 이 단계에서 문제가 조기에 드러난다: 동적 형태(가변 키포인트 개수!), 지원되지 않는 연산, 제어 흐름 모두 주의가 필요하다.
torch.onnx.export( model, dummy_image, "superpoint.onnx", input_names=["image"], output_names=["scores", "descriptors"], dynamic_axes={"image": {2: "height", 3: "width"}}, ) -
TensorRT로 컴파일 — NVIDIA의 추론 최적화기는 레이어를 결합하고, 빠른 커널을 선택하고, Jetson/RTX GPU에서 큰 속도 향상을 위해 FP16 또는 INT8로 양자화한다.
trtexec --onnx=superpoint.onnx --fp16 --saveEngine=superpoint.engine플랫폼별 대안도 존재한다: 이동성 있는 기준선으로서 ONNX Runtime, Apple 하드웨어의 Core ML, Android 휴대폰의 TFLite/NNAPI.
-
C++ 파이프라인에 통합 — 컴파일된 엔진은 SLAM 프론트엔드에서 호출되어 원래의 검출기/매처를 대체하며, 이상적으로는 Jetson과 같은 통합 메모리 디바이스에서 제로 카피 이미지 입력으로 이루어진다(CPU와 GPU가 물리적 메모리를 공유하므로, 잘 짜여진 파이프라인은 절대 프레임을 복사하지 않는다).
실전에서의 양자화. FP16은 GPU급 엣지 하드웨어에서 보통 공짜로 얻는 이득이다. INT8은 대표적인 이미지들에 대한 캘리브레이션 패스가 필요하다 — SLAM 프론트엔드에서 “대표적”이란 여러분의 배포 장면을 의미하며, 중요한 검증 기준은 분류형 정확도 점수가 아니라 다운스트림 품질(매칭 인라이어 비율, 트래킹 안정성)이다. Jetson급 모듈은 추가로 GPU에서 지원되는 네트워크를 오프로드할 수 있는 DLA 가속기 코어를 제공한다.
Jetson 벤치마킹
데스크톱 GPU에서의 숫자는 엣지에 대해 거의 알려주지 않는다. Jetson급 디바이스에서는 종단간으로 벤치마크해야 한다.
- 프레임당 지연 시간 — 전처리(리사이즈, 정규화), 호스트/디바이스 복사, 후처리를 포함하여, 네트워크 호출만이 아니라 전체를 측정한다.
- 열 부하 하의 지속 처리량 — 몇 분간의 워밍업 후 측정한다. 임베디드 디바이스는 스로틀링되므로, 콜드 상태에서 측정한 벤치마크는 실제보다 과장된다.
- 전력 모드 — Jetson 성능은 선택된
nvpmodel전력 프로필과 클럭 설정(jetson_clocks)에 따라 달라진다. 여러분의 수치가 어떤 모드에서 나온 것인지 명시하고,tegrastats로 실시간 사용률을 관찰하라. - SLAM에 남는 자원 — 프론트엔드 네트워크는 트래킹, 맵핑, 나머지 로봇 스택과 SoC를 공유한다. 남는 CPU 여유와 메모리 대역폭도 결과의 일부다.
정직한 지표는 목표 전력 모드에서, 뜨거운 상태로 측정한, 목표 디바이스에서의 전체 파이프라인 프레임 레이트다.
흔한 함정
- INT8 양자화 후 정확도 저하 — 대표적인 이미지로 캘리브레이션하고 매칭 품질을 종단간으로 재확인하라.
- 동적 출력 크기 — 키포인트 검출기는 가변 개수의 점을 방출한다. 내보내기 시점에 상위-K 예산을 고정하거나, 런타임에서 동적 형태를 명시적으로 처리해야 한다.
- 전처리 불일치 — 학습과 배포 사이에 정규화 상수, 리사이즈 보간 방식, 색 순서가 다르면 오류 없이 조용히 품질이 저하된다.
- 추론만 벤치마킹하기 — 슬라이드에서는 “30 FPS 달성”이지만 로봇에서는 그렇지 못한 전형적인 방식이다.
SLAM에서의 의미
“논문은 30 FPS로 동작한다”와 “내 로봇에서 동작한다” 사이의 간극이 정확히 이 주제다. 학습된 프론트엔드는 트래킹, 맵핑 스레드와 함께 엣지 예산에 맞아야만 실제 시스템에서 자리를 얻을 수 있으며, 배포 제약(FP16/INT8, 고정 입력 크기, 제한된 메모리 대역폭)은 종종 SuperPoint와 XFeat 같은 더 가벼운 검출기 사이의 선택을 좌우한다. 디바이스에서 프로파일링하고 최적화할 수 있는 엔지니어가 SLAM을 실제로 배송하는 사람들이다.