Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2024.11.06 - #14 - MAC-VO, KISS-Matcher, PyTorch Mobile, Metal API, Neural fields in robotics, Visual SLAM roadmap #16

Open
changh95 opened this issue Nov 6, 2024 · 3 comments

Comments

@changh95
Copy link
Owner

changh95 commented Nov 6, 2024

Interesting papers

Neural fields in robotics survey paper

image
image
image
image

Industry news

  • OpenAI에서 Meta Orion의 리드를 채용
image

image

Old but gold

Past, Present, and Future of Simultaneous Localization And Mapping: Towards the Robust-Perception Age

  • SLAM의 트렌드 분석 + 미래 연구 방향 분석
    • Long term autonomy를 위한 robustness, scalability
    • Open problems:
      • How to recover from a failed estimation
      • Robustness to hardware failure
      • Time-varying / deformable maps
      • Automatic parameter tuning
      • Map representation
      • Robust distributed mapping...
  • 2016 논문
image

Factor graphs for robot perception

image

Visual-SLAM roadmap

image
image

@U-AMC
Copy link

U-AMC commented Nov 6, 2024

Interesting papers

MAC-VO : Metrics-aware Covariance for Learning-based Stereo Visual Odometry

image

kriss_matcher : Rust/Python implementation of KISS-Matcher

image

image

KISS-Matcher
https://arxiv.org/pdf/2409.15615

Discussion (?)

image

@james-joobs
Copy link
Collaborator

PyTorch Mobile와 Metal API 작동 원리

PyTorch Mobile의 작동 원리

PyTorch Mobile은 PyTorch 모델을 모바일 장치에서 실행하기 위한 최적화된 프레임워크로, iOS와 Android 모두에서 효율적인 모델 추론을 가능하게 함.

  1. TorchScript 변환: 모델을 TorchScript로 변환하여 직렬화 및 경량화. 이를 통해 Python 인터프리터 없이 실행 가능.

  2. 경량화된 런타임: 모바일 환경에 맞춰 메모리와 연산 자원을 최소화한 최적화된 런타임 제공.

  3. 플랫폼별 하드웨어 가속:

    • Android: Android Neural Networks API(ANN API)를 통해 가속화.
    • iOS: Metal API를 사용해 GPU 가속을 제공하여 병렬 처리로 모델 추론 성능 극대화.
    • ANN API 설명 (Google 공식 문서)
  4. 연산자 미지원 문제 해결: 모든 PyTorch 연산자가 모바일 환경에서 지원되지 않으므로, 필수 연산자만 포함하거나 커스텀 연산자를 추가하여 호환성 유지.

Metal API의 역할과 PyTorch Mobile에서의 활용

Metal API는 iOS에서 GPU를 통한 데이터 병렬 처리를 최적화하는 프레임워크로, PyTorch Mobile이 iOS 장치에서 고성능의 모델 추론을 가능하게 하는 주요 기술임.

  1. Metal API의 핵심 기능

    • 커맨드 버퍼와 인코더: GPU 작업을 커맨드 버퍼에 기록해 GPU로 전송하고, 커맨드 인코더는 그래픽, 컴퓨트, 블릿 작업을 인코딩하여 병렬 처리 최적화.
    • 셰이더(Shader): GPU에서 실행되는 프로그램으로, 그래픽 연산 및 딥러닝 연산을 병렬로 수행.
      • Vertex/Fragment Shader: 그래픽 렌더링에서 정점과 픽셀을 처리하여 최종 화면 출력을 생성.
      • Compute Shader: 일반 연산을 GPU에서 병렬로 처리하며, 딥러닝 연산(합성곱, 행렬 곱)을 빠르게 수행.
    • Metal API 개요 (Apple 공식 문서)
  2. Metal Performance Shaders (MPS): Apple에서 제공하는 최적화된 연산 셰이더 라이브러리로, 주요 딥러닝 연산에 특화되어 PyTorch Mobile의 iOS 성능 향상에 기여.


Metal API에서 셰이더의 연산 처리와 텍스처 활용 방식

셰이더(Shader)의 역할: GPU에서의 병렬 연산

셰이더는 GPU에서 데이터를 병렬로 처리하는 프로그램으로, Metal에서는 그래픽 및 임의의 데이터 연산을 위해 다음과 같은 셰이더를 사용함.

  • Vertex ShaderFragment Shader: 그래픽 렌더링에서 사용되며, 정점 및 픽셀의 데이터를 처리해 최종 화면에 렌더링.
  • Compute Shader: 그래픽 이외의 일반적인 데이터 연산을 처리하며, PyTorch Mobile은 이 셰이더를 사용해 딥러닝 모델의 주요 연산을 병렬로 처리.

텍스처(Texture)의 구조와 활용

텍스처는 이미지 및 행렬 데이터를 GPU 메모리에 효율적으로 저장하고 접근하기 위한 포맷으로, 빠른 데이터 접근과 병렬 처리가 가능함.

  • 텍스처 구조: GPU 메모리에 데이터 배열로 저장되어, 각 요소에 좌표 기반으로 접근 가능. 딥러닝 연산에서는 필터나 중간 데이터가 텍스처에 저장됨.
  • PyTorch Mobile에서의 활용: 학습된 파라미터나 중간 계산 결과를 텍스처로 변환해 GPU에서 직접 접근, 병렬 처리로 추론 속도 향상.
  • 메모리 최적화: 텍스처로의 데이터 저장과 접근 방식은 GPU 메모리 사용을 최적화하여 연산 성능을 개선.

@changh95 changh95 changed the title 2024.11.06 - #14 - 2024.11.06 - #14 - MAC-VO, KISS-Matcher, PyTorch Mobile, Metal API, Neural fields in robotics, Visual-SLAM roadmap Nov 6, 2024
@changh95 changh95 changed the title 2024.11.06 - #14 - MAC-VO, KISS-Matcher, PyTorch Mobile, Metal API, Neural fields in robotics, Visual-SLAM roadmap 2024.11.06 - #14 - MAC-VO, KISS-Matcher, PyTorch Mobile, Metal API, Neural fields in robotics, Visual SLAM roadmap Nov 6, 2024
@james-joobs
Copy link
Collaborator

james-joobs commented Nov 6, 2024

Compact3D: Smaller and Faster Gaussian Splatting with Vector Quantization

논문 링크: https://arxiv.org/html/2311.18159v2

개요

fig1_all_grid

3D Gaussian Splatting(3DGS)은 NeRF(Neural Radiance Fields)와 비교하여 학습 및 렌더링 속도가 빠르지만, 수백만 개의 3D 가우시안 파라미터를 저장해야 하는 높은 저장 공간 요구가 단점임. 이 논문에서는 벡터 양자화(Vector Quantization)를 통해 3DGS의 저장 공간과 렌더링 속도를 개선하는 방법을 제시함.

핵심 아이디어

  • 벡터 양자화(Vector Quantization): 많은 가우시안들이 유사한 파라미터를 공유할 수 있다는 점에 착안하여, K-평균(K-means) 알고리즘을 활용해 가우시안 파라미터를 양자화하는 방식. 소수의 코드북(codebook)과 각 가우시안의 코드 인덱스만 저장함으로써 저장 공간 절약.

  • 인덱스 압축: 가우시안들의 인덱스를 정렬한 후 런-길이 부호화(Run-Length Encoding)와 유사한 방법을 적용하여 인덱스 데이터를 추가로 압축하는 기법.

  • 불투명도 정규화(Opacity Regularization): 불투명도 파라미터에 정규화를 적용하여 불필요한 가우시안의 불투명도를 0으로 유도, 이를 통해 가우시안의 수를 줄여 모델을 더욱 압축하고 렌더링 속도 향상.

teaser_new

방법론

  1. 벡터 양자화 적용:

    • 각 가우시안의 파라미터를 벡터로 간주하고, K-평균 알고리즘을 사용하여 N개의 가우시안을 K개의 클러스터 중심(코드)으로 표현하는 방식.

    • 각 가우시안은 해당하는 코드로 대체되며, 렌더링과 손실 계산에 사용됨.

    • 역전파 시에는 클러스터 중심에 대한 그래디언트를 해당 클러스터의 모든 요소에 복사하여 비양자화된 파라미터를 업데이트함.

  2. 인덱스 압축:

    • 가우시안의 인덱스를 정렬한 후 런-길이 부호화와 유사한 방법을 적용하여 인덱스 데이터 압축.
  3. 불투명도 정규화:

    • 불투명도 파라미터에 정규화를 적용하여 불필요한 가우시안의 불투명도를 0으로 유도, 가우시안 수를 줄여 모델을 더욱 압축하고 렌더링 속도 향상.

결과

  • 저장 공간 절약: 제안된 방법으로 3DGS의 저장 공간을 40~50배 줄임.

  • 렌더링 속도 향상: 렌더링 시간을 2~3배 단축.

  • 품질 유지: 렌더링 이미지의 품질 저하를 최소화.

결론

Compact3D는 3DGS의 효율성을 유지하면서도 저장 공간과 렌더링 속도를 크게 개선하는 방식으로, AR/VR 헤드셋과 같은 저장 공간과 메모리가 제한된 장치에서의 활용 가능성을 높임.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants