전체 글 519

BFM 모델 vertex index / uv unwrap coordinates

Face template 모델 중에 FLAEM 다음으로 유명한게 BFM 모델인데 제작된 건 53490 vertex로 구성되어 있다. 하지만 3DDFA에서 inner mouth vertex를 제거해서 295개를 제거해서 53215개로 만들었고, Deep3DFaceReconstruction (Microsoft)에서는 목과 귀를 추가 제거해서 35709개로 만들었다.  후속 연구 각각에서 vertex 개수도 줄이고, UV unwrapped coordinates는 또 53215개 vertex에 대해서만 계산해뒀고 헷갈리는 점이 많아서 따로 정리했다.  Vertex index 위 파일은 초기 full BFM face vertex 53490개 중 inner mouth를 제거한 vertex 53215개로 축소하고 싶..

Knowhow/Vision 2024.11.19

MoGe: Unlocking Accurate Monocular Geometry Estimation for Open-Domain Images with Optimal Training Supervision

내 맘대로 Introduction DUSt3R이 쏘아올린 작은 공 후속편. monocular point map estimation이다. monodepth 추세가 DUSt3R로 인해 mono pointmap으로 넘어온 듯 하다. 단일 입력을 받고, intrinsic에 상관없이 normalized scale의 point cloud가 나오는 방식 DUSt3R과 구조적으로 single input을 받는다는 차이점 외에 focal length ambiguity를 해결하기 위해 scale 에 더불어 translation까지 고려한다는 차이점이 있다. 직관적으로 focal length가 다르면 물체가 다르게 보이기 때문에 같은 위치의 point cloud를 예측하기 힘드니까, translation을 같이 풀어주는 느..

Paper/3D vision 2024.11.19

Cross-view and Cross-pose Completion for 3D Human Understanding

내 맘대로 Introduction CVPR 2024에 나온 Croco human data 버전이다. 드래프트가 arxiv에 공개되었을 때 읽어봤었는데 CVPR2024에 나왔다. Croco라는 논문이 geometry를 타겟으로 하긴 했지만 워낙 좋은 컨셉이다 보니 도메인을 사람으로 한정한 내용이다. 사실 알고리즘적으로 더 뛰어난 내용이 있다기 보다 사람 데이터로 하면 어떤지 실험해본 테크니컬 리포트에 가깝다. 기존 Croco와 달리 human은 non-static object이기 때문에 view point가 달라지는 것 뿐만 아니라 pose가 달라지는 것도 포함되기에 이름에 cross-pose가 추가되었을 뿐 구조와 방식은 동일하다. 데이터가 바뀐 것. 결과적으로 MAE에 때려넣은 것보다 좋은 성능을 보이..

Paper/Human 2024.11.14

argparse 사용 시 list를 argument로 넘겨주기

python 코딩할 때 무조건 쓰게 되는게 argparse인데 argument로 list를 전달해야 될 때 귀찮은 일이 많다. 예를 들어, 아래와 같이 쓰면 될 것이라고 쓰면 된다고 생각하는데parser = argparse.ArgumentParser()parser.add_argument("--something", type=list)args= parser.parse_args() 이렇게 하면 python run.py --something a b c 와 같이 썼을 때 오류 난다. 의도와 다르게 된다. 정석이 대신 아래와 같이 쓰는게 좋다.parser = argparse.ArgumentParser()parser.add_argument("--something", nargs="+")args= parser.parse..

Ubuntu 설치할 때 재부팅 화면에서 멈출 경우

일반적으로 ubuntu는 Ubuntu booting USB를 꽂고, boot priority를 USB로 변경한 뒤에 설치/재부팅하는 과정으로 설치한다. 근데 최근에 USB로 부팅해서 설치까지 하는 것은 순탄하게 됐는데, 재부팅 중 부팅 로고가 보이는 화면에서 멈추는 문제를 겪었다.  진행 중 표시가 뱅글뱅글 돌아가지 않고 계속 freeze되어 있는 버그. 원인그래픽 드라이버가 꼬이는 문제가 대표적이다. 이 상황은 GPU가 달려있는 PC일 때 발생한다.  해결법Recovery mode로 부팅 (GRUB 화면/부팅 로고 화면이 보일 때, ESC나 shift를 누른다.)-> BIOS 진입할 때처럼 연타해버리면 화면이 지나가니까 타이밍 맞춰 1번만 눌러야 한다.선택지가 뜨는데 root를 선택 (터미널로 연결됨)..

Trouble/Linux 2024.11.11

Same as ever

책 소개이 책은 모건 하우절의 새로운 책인데, 이전 돈의 심리학과 같이 지혜를 던지는 책이다. 돈의 심리학에서 자산을 바라보고 대하는 태도에 초점을 맞췄지만 본질은 삶을 대할 때 갖춰야 할 마음가짐이라는 생각이 들었는데, 이 책은 초점 자체를 본질에 맞추어 다시 쓴 책이라는 생각이다.  짧은 평개인적으로 이 책을 통해 모건 하우절의 팬이 된 것 같다. 돈의 심리학을 읽었을 때도 돈,돈,돈 거리지 않고 그보다 중요한 태도를 설명하는 내용에 매료되었는데 이 책은 그 장점이 더 드러나는 책이었다. 마치 인류학자가 인간을 오랜 시간 동안 관찰하고 공통적이라고 볼 수 있는 특질들을 모아 인생의 지혜처럼 적은 책인데, 글의 80%가 역사 상 있었던 많은 사람들의 실제 이야기여서 전혀 지루함 없이 읽을 수 있다. 이..

Book/Mind 2024.11.10

Open3D rendering 시 이미지 중심/principal point 안 맞는 문제

Open3D의 visualizer를 활용해서 렌더링을 하고자 할 때 겪는 대표적 문제가 intrinsic parameter가 맘대로 설정이 안된다는 점이다. 이전 글의 말미에서 적어두긴 했지만 또 다른 원인이 있기도 하고 더 정확히 하기 위해 기록을 해둔다.  1. Open3D는 Visualizer 윈도우 크기의 영향을 받는다.  - 정확한 원인까지는 모르겠다. - Open3D visualizer를 이용해서 capture_screen_float_buffer 혹은 capture_depth_float_buffer로 렌더링을 한다고 했을 때, visualizer를 띄워두는 윈도우가 생각보다 중요하다. - 윈도우의 사이즈가 기본값이 1920x1080으로 설정되어 있는데, 이보다 높이고자 할 때 제대로 렌더링이 ..

Trouble/Vision 2024.11.05

Open3D Normal map rendering, Normal 이미지 얻는 방법

Open3D에서 주어진 mesh의 normal을 얻어내는 방법은 쉽다. Document에서도 이 기능만 설명한다.import open3d as o3dmesh = o3d.io.read_triangle_mesh(MESH_PATH)mesh.compute_vertex_normals() # vertex normals are filled inmesh.compute_triangle_normals() # face normals are filled in 그런데 normal map 즉 2D 형태로 얻는 방법은 명확히 없다. normal rendering을 하는 방법이 뚜렷하지 않다.  vis = o3d.visualization.Visualizer() vis.create_window(visible=True) opt =..

Knowhow/Vision 2024.11.05

MonST3R: A Simple Approach for EstimatingGeometry in the Presence of Motion

내 맘대로 Introduction DUST3R의 dynamic scene용 fine tuning 버전이다. 논문보다 테크니컬 리포트에 가깝고 내용도 굉장히 짧다. 컨셉만 설명하고 마무리함. DUST3R의 아이디어 자체가 굉장히 좋고 성능도 압도적인 탓에 많은 관심을 받는 중인데, 이 논문은 UC Berkeley, Google deepmind, stability AI, UC Merced 등 네임드에 있는 사람들이 모여 프로젝트성으로 진행한 것 같다.  기존 DUST3R가 static scene에 대해 학습된 네트워크이다 보니 dynamic object가 등장했을 때 이 dynamic object 영역을 틀어 맞추려고 하다 망가지는 경우가 있다. 이 문제를 짚으면서 데이터셋을 dynamic object를 커..

Paper/3D vision 2024.10.31

3D Face Tracking from 2D Video through Iterative Dense UV to Image Flow

내 맘대로 Introduction 내용을 보면 densepose의 face 버전 논문이다. 컨셉 자체는 당연히 있을 법한데 face 추세가 3DMM을 활용하는 방식으로 흘러가다보니 그동안 나오지 않아나 보다. 내가 해볼까 했는데... 2024년에 딱 나와버려 아쉽기도 하다. 이미지가 들어갔을 대 face uv map가 출력이다. 근데 방식을 unwrap uv map 에서 image로 가는 flow를 계산하는 방식이다. face unwrap map도 정면 얼굴 구조를 잃지 않을 것이고, 이미지들은 정면 얼굴 위주일 것이기 때문에 optical flow가 심하게 뒤집히는 경우가 적어 합리적인 방식 같다.  Segformer, RAFT 같은 검증된 구조를 차용한 것도 안정적인 성능에 한 몫 한 것 같다. su..

Paper/Human 2024.10.30