Knowhow 102

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

Opencv camera index 찾기, device index 찾기

2022.06.13 - [Knowhow/Vision] - Opencv multi webcam 사용 시 인식 확인 Opencv multi webcam 사용 시 인식 확인opencv에서 라이브 웹캠을 2개 이상 사용하고자 할 때, 보통 아래와 같이 접근한다. import cv2 cam0 = cv2.VideoCapture(0) cam1 = cv2.VideoCapture(1) ... camN = cv2.VideoCapture(N) #N is a camera index 이 때, 분명 카메라 N대jseobyun.tistory.com 이전 글에서 cv2.VideoCapture()를 사용할 때 필요한 camera index를 어떻게 찾는지 정리한 바 있는데, 글 말미에서는 USB 포트를 바꿀 때마다 혹은 USB 포트가..

Knowhow/Vision 2024.10.29

pytorch3d.io.IO 느린 로딩 속도 개선 방법

pytorch3d.io.IO를 이용해 obj 파일을 읽어서 사용한다. from pytorhc3d.io import IOmesh = IO().load_mesh(MESH_PATH).cuda() # () essential 근데 이상하게도 pytorch3d 내장 함수로 파일을 읽으면 현저히 느리다. 약 10MB 정도 크기의 파일을 기준으로 했을 때 대략 trimesh 읽는 속도보다 2배 느리다.  내부적으로 뭘 더 읽는지는 모르겠으나, 대부분은 vertex, face, color 3개만 있으면 되기 때문에 굳이 필요없는 연산일 것 같다.  개선법 from pytorch3d.structures import Meshes from pytorch3d.renderer import TexturesVertex mesh =..

Pytorch3d CUDA 12 이상에서 설치하기

https://github.com/facebookresearch/pytorch3d/blob/main/INSTALL.md pytorch3d/INSTALL.md at main · facebookresearch/pytorch3dPyTorch3D is FAIR's library of reusable components for deep learning with 3D data - facebookresearch/pytorch3dgithub.comMesh를 데이터로 활용한 학습을 구현할 때 diferrentiable rasterizer를 제공하기 때문에 유용한 것을 분명하나, 인기가 없어서 인지 버전 맞추는 것이 상당히 까다로운 pytorch3d다.  위 링크를 따라가 설치 가이드라인을 따라 해보면 웬만해서 한 번에 ..

ubuntu .cache, /var/log에 쌓인 파일 삭제하기 (pip, conda, jetbrains, etc)

아침에 출근하니까 갑자기 디스크 용량 부족 경고가 떴다. 디스크 잔여 공간이 0이 돼버리면 부팅도 안되는 운영체제가 우분투이다 보니까 디스크 관리를 미리미리 해야하는데 게을러서 안했더니 그 직전까지 왔더라. 확인해보니 대부분 코드나 가상환경 파일이어서 지울건 딱히 없고, 눈에 띄는 건 .cache 안에 가득찬 쓰레기들과.... 가상환경에 설치하기 위해 받아둔 패키지들이 차지하는 쓰레기가 많더라. 함부로 지우기엔 무서우니 일일이 삭제 방법을 찾아봤는데 유용한 건 다음과 같다. pip, condapip cache purge conda clean -all 일단 이 두 개를 치면 최소 pip, conda에서 지금 사용되지 않는 것들은 싹 지워진다. JetBrains나 같은 경우 pycharm cache가 잔뜩 ..

Knowhow/Linux 2024.09.12

ubuntu 구글 드라이브 압축 없이 파일 올리기/다운받기

google drive로 공유된 파일들은 자동으로 다운받을 때 압축 과정을 거친다. 파일 사이즈가 클 때 시간이 오래 걸릴 뿐더러 압축이 실패하는 경우도 빈번하고, 더욱 짜증나는 부분은 제멋대로 분할 압축한다는 것이다.  사진 보관 정도의 사용자라면 별 문제 없겠지만 데이터 공유용으로 쓸 경우, 속도나 이름/구조 따위가 중요하기 때문에 구글 드라이브가 답답한 부분이 많다. 다행히도 위 언급한 자동압축/속도/분할압축 문제 중에 속도만 해결할 수 없고 압축 관련된 건 구글 드라이브를 직접 mount하는 방식으로 피할 수 있다. (매 파일 클릭해서 다운로드하는 수고를 덜어주는 것 만해도 감사하다.) 해결법https://99rdp.com/how-to-connect-google-drive-in-ubuntu/ Ho..

Knowhow/Linux 2024.09.10

Facescape 모델 68 keypoint/landmark index

https://facescape.nju.edu.cn/ FaceScape facescape.nju.edu.cn 위 데이터셋 중 TU model은 topology가 통일되어 있으므로 landmark에 해당하는 vertex index만 알면 모든 데이터의 landmark를 찾아낼 수 있다.  https://github.com/zhuhao-nju/facescape/tree/master/toolkit/predef facescape/toolkit/predef at master · zhuhao-nju/facescapeFaceScape (PAMI2023 & CVPR2020). Contribute to zhuhao-nju/facescape development by creating an account on GitHub...

Knowhow/Vision 2024.08.28

obj 파일 v, vt, f 등 직접 저장하기, obj save

obj 파일은 v, vn (normal), vt(texture uv), f 등 vertex 위치와 face 구성 외에 몇가지 정보를 같이 들고 있을 수 있다. https://en.wikipedia.org/wiki/Wavefront_.obj_file Wavefront .obj file - WikipediaFrom Wikipedia, the free encyclopedia Geometry definition file format OBJ (or .OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package. The file format is..

Knowhow/Vision 2024.08.28

Facescape 모델 displacement map 사용법, detailed mesh 얻어내는 방법

https://facescape.nju.edu.cn/ FaceScape facescape.nju.edu.cn Face mesh 데이터셋 중 오래됐지만 여전히 많이 쓰이는 데이터 중 하나인 facescape 데이터셋. TU model이라는 이름으로 topology를 맞춰놓은 데이터가 특히 사용하기 좋다.  TU model은 근데 생각보다 해상도(mesh vertex, face 수)가 높지 않은데 데이터 자체의 용량을 줄이기 위해서 coarse와 fine을 분리해놨기 때문이다. 그냥 obj 파일에 담겨있는 mesh는 coarse 즉 vertex 수도 적고 face도 적은 기본 template mesh를 registration해둔 결과다. 그 이외 fine detail은 displacement map담겨 있다..

Knowhow/Vision 2024.08.28

Unit cube vertices, faces index (pytorch3d cube 만들기)

open3d는 다음과 같은 method가 주어져서 cube를 만드는게 뚝딱이다. cube = o3d.geometry.TriangleMesh.create_box() 아쉽게도 pytorch3d에는 이게 없어서 직접 cube의 8개 vertex와 face를 지정해준 뒤 직접 만들어야 하는데, 이게 매번 할 때마다 엄청 귀찮다. 정육면체니까 6개 face만 만들면 될 것 같지만 triangle face기 때문에 12개의 face를 만들어야 하고, 구성하는 vertex indexing 순서에 따라 normal이 뒤집힐 수도 있기 때문에 렌더링까지 잘되게 하려면 face 방향도 매번 신경써야 한다. 엄청 귀찮다... 반복 노동을 줄이기 위해 복사 붙여넣기 용으로 기록해둔다. from pytorch3d.structu..

Knowhow/Vision 2024.08.05