분류 전체보기 538

Animate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation

내 맘대로 Introduction 과거에 everybody dance now라는 논문이 GAN을 이용해서 pose retargeted image를 만드는 기술을 보인 바 있는데, 이 논문은 그 컨셉을 "모든 대상, 모든 자세"로 확장한 generalized 버전이라고 볼 수 있다. 다시 말해 임의의 사람 이미지 1장을 넣으면 그 사람이 다른 자세를 취한 이미지를 얻을 수 있다. 핵심 아이디어는 잘 학습된 stable diffusion weight를 가져와서 CLIP feature와 이미지 feature, pose feature를 이용해 finetuning하는 것이다. 재미 하나로 스포트 라이트를 받을 논문이다. 메모하며 읽기 전체 파이프라인은 stable diffusion의 denoising Unet을 ..

Paper/Generation 2023.12.11

SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM

내 맘대로 Introduction 이 논문은 GS-SLAM 과 유사하게 3d gaussian을 갖고 SLAM을 동시에 하는 논문이다. 큰 그림에서는 동일한 내용이고, 디테일한 부분에서 3d gaussian을 단순화하거나 densification rule을 다르게 정의하는 부분에서 차이를 보일 뿐이다. 입력도 똑같이 RGB-D 즉, 믿을만한 Depth가 존재해야 한다. 3d gaussian의 위치를 depth를 이용해 강하게 잡아줌으로써 카메라 포즈를 동시에 찾을 수 있는 가능성을 높인다. 핵심 내용은 점진적으로 쌓아나가는 과정에서 camera tracking, densification, map update 총 3가지 과정을 순차적으로 진행하는 식으로 구성했다는 점과 rendered color, depth..

Paper/3D vision 2023.12.11

COLMAP[python] pycolmap 보다 편하게 colmap 사용하기

각종 논문에서 camera pose를 얻는 기본 방법으로 웬만하면 SfM을 사용하는데 그 때마다 SfM == COLMAP으로 생각하는게 당연할 만큼 COLMAP은 자주 접하게 되는 툴이다.  하지만 COLMAP은 기본적으로 c/c++ 기반으로 되어있어서 python 위주로 코딩할 때 사용성이 그렇게 좋은 편은 아니고 독자적인 포맷도 맞춰줘야 하기 때문에 뚝딱 쓰기엔 조금 시간이 걸린다. 더불어 SIFT 이하 feature 만을 사용하는 COLMAP이기 때문에 더 좋은 deep feature가 있어도 이를 COLMAP에 내장시켜 사용하는 것은 더 오래 걸린다. pycolmap이 있어서 python binding된 형태로 사용할 수 있지만, pycolmap 역시 deep feature를 기반으로 동작하도록 ..

Knowhow/Vision 2023.12.07

Mip-Splatting: Alias-free 3D Gaussian Splatting

내 맘대로 Introduction 또 중요한 의미를 갖는 3D GS 파생 연구가 나온 것 같다. Mip-NeRF와 같이 aliasing 문제를 풀어서 성능을 끌어올리는 컨셉의 gaussian splatting 논문이다. 현재 3D GS 기술을 분석하길 3D to 2D gaussian projection 이후에 픽셀 해상도 단위로 discretize해서 사용하는 부분에서 성능 저하 여지가 많다고 지적한다. 이러한 문제는 학습할 때와 다른 focal length, 다른 카메라 거리일 때 두드러지는 현상과 일맥상통한다. 핵심 아이디어는 2d gaussian projection은 실제로 물리적으로 projection(검정색 선)되는데 실제로 구현적으로 픽셀 단위로 끊어지게 되는 projection(빨간색 선)과..

Paper/3D vision 2023.12.07

3D transformation(R, t) matrix usage

이전 글 3D transformation(R, t) matrix notation 에서 SE3 4x4 matrix가 주어졌을 때 notation을 어떻게 표기하고, 그 notation을 해석하는 방법을 적은 바 있다. 해당하는 부분만 발췌해보면 다음과 같이 표기했을 때, 1) 우측 좌표계에서 좌측 좌표계로 변환하는 transformation matrix라고 해석한다. - 예) 3D point들을 camera 좌표계(c)에서 world 좌표계(w)로 변환한다. 결과적으로 world coord. 3D point가 나옴. 2) 왼쪽 좌표계에서 바라본, 우측 좌표계의 축, 원점 이라고 해석한다. - 예) world 좌표계(w)에서 바라본 camera 좌표계의 원점, 축들의 rotation, translation이..

Knowledge/Vision 2023.12.06

RealityCapture camera coordinate to opencv(vision) camera coordinate

RealityCapture 라고 유명한 photogrammetry 툴이 있다. 연구하는 입장에서는 colmap보다 훨씬 좋은 성능과 속도로 SfM을 돌려주는 툴이라고도 볼 수 있는데 graphics쪽 좌표계와 각종 설정이 섞여있어 좌표계가 자주 쓰는 좌표계와 완전히 다르게 되어 있다. 결과적으로 RealityCapture에서 뱉어주는 카메라를 별도의 후처리 없이 그대로 사용하게 되면 카메라가 지멋대로 돌아가있다.  온갖 검색을 해봐도 정확히 이해될 만한 좌표계 설명이 없고, 일반적으로 쓰는 roll, pitch, yaw 가 각각 x축, y축, z축 회전에 대응되는 것이 아니라 또 새로 정의한 순서이기 때문에 변환하는 일이 만만치 않았다. 결국 나도 온갖 자유도의 transformation과 roll, p..

Knowhow/Vision 2023.12.06

Open3d를 이용한 디버깅용 camera, bbox, origin visualization

데이터를 다루다 보면 주어진 3D point와 camera pose가 좌표계가 잘 맞춰져 있는지, coordinate origin을 어디인지, 방향은 맞는지 확인하는 것이 생각보다 귀찮고 까다롭다. 수십, 수백개나 되는 xyz 값이나 se3 값을 봐서는 알 방법이 없기 때문에 보통 시각화해서 보는데, colmap 외 사용 가능한 툴들도 제한적이고 매번 포맷을 맞추는 것도 귀찮다. 나 같은 경우, 간단히 open3d를 이용해 시각화하는 식으로 해결해왔는데 매번 반복적으로 코드를 구현하는 것이 귀찮아서 여기에 내가 주로 사용하는 디버깅용 코드를 기록해두려고 한다. Helper function들 def Rt2T(R, t): T = np.eye(4) T[:3, :3] = R T[:3, -1] = t.reshap..

Knowhow/Vision 2023.12.06

Text-to-3D using Gaussian Splatting

내 맘대로 Introduction 이 논문도 제목에서 바로 알 수 있듯이 text to 3d 문제를 gaussian splatting 써서 풀어보고자 한 논문이다. 3D GS 논문 공개되자 마자 계란 후라이식 논문으로 SDS loss 갖다 붙이는 text-to-3d 컨셉들이 하도 많이 나오니 최초라고 주장하는 논문이 몇갠지 모르겠다. 이 논문 역시 거의 완성된 요리에 계란 후라이 얹고 새로운 요리인 척 하는 논문 중 하나다. 핵심 아이디어는 2d diffusion model의 SDS loss로 3D GS를 학습시킨다는 컨셉으로 완전 동일하다. 초기 3d gaussian 위치를 잡아 줄 때 3d diffusion model, text-to-pcd model을 썼다는 점에서는 GaussianDreamer 와..

Paper/Generation 2023.12.05

LightGaussian: Unbounded 3D Gaussian Compression with 15x Reduction and 200+ FPS

내 맘대로 Introduction 또 하나의 3D GS 후속 연구 중 한걸음 나아간 논문이 나왔다. 제목에서 볼 수 있다시피, 기존 3D GS 대비 성능 드랍 없이 속도를 훨씬 빠르게 한 논문이다. 핵심 아이디어는 1) gaussian pruning (filtering) logic을 추가해서 절대적으로 3D GS 수를 줄인 것 (내가 하고 싶었던 것이다.) 2) gaussian parameter를 quantize해서 용량 자체를 물리적으로 줄인 것. 이 두 개를 조합하니 성능은 오르고 속도는 빨라지는 결과를 얻을 수 있었다. 2)에 해당하는 내용은 둘째 치고 1)에서 pruning한 방법이 주요 포인트다. 메모하며 읽기 크게 3가지 과정으로 구성된다. 1) gaussian pruning - multivi..

Paper/3D vision 2023.12.05