etc 15

카메라 캘리브레이션 (Camera Calibration)

카메라 캘리브레이션은 카메라의 왜곡을 보정하고, 실제 세계에서의 3D 좌표를 이미지의 2D 좌표로 변환하는 작업 ⇒ 스테레오 비전과 같은 컴퓨터 비전 애플리케이션에서 매우 중요합니다.왜곡의 종류카메라 렌즈는 일반적으로 두 가지 주요 왜곡을 일으킵니다: 방사 왜곡(Radial Distortion)과 접선 왜곡(Tangential Distortion). 1. 방사 왜곡 (Radia Distortion):- 방사 왜곡은 이미지의 중심에서 멀어질수록 직선이 휘어지는 현상입니다.- 수학적으로, 방사 왜곡은 다음과 같이 표현됩니다:- 여기서 r은 점의 거리입니다. 2. 접선 왜곡(Tangential Distortion):- 접선 왜곡은 렌즈가 이미지 평면에 완벽히 평행하지 않아 발생합니다.- 수학적으로, 접선 왜곡..

etc 2024.08.29

ffmpeg 이용해 여러 동영상을 동시에 재생 (격자)

brew isntall ffmpeg가로방향 이어붙이기, 세로방향 이어붙이기ffmpeg -i input1.mp4 -i input2.mp4 -c:v libx264 -filter_complex "[0:v][1:v]vstack=inputs=2[v]" -map "[v]" output.mp4글자 추가하기ffmpeg -i GazeTest_20.mp4 -vf "drawtext=text='sensor-detected':fontcolor=black:fontsize=50:box=1:boxcolor=white:x=50:y=50" -codec:a copy output.mp4텍스트 추가하고 이어붙이기ffmpeg -i CAM3_s1_gaze1_gaze3d.mp4 -i CAM3_s1_gaze1_ppap.mp4 -filter_comp..

etc 2024.08.29

git commit 관련 조작하기 (feat. lazygit)

brew install lazygit커밋 메시지 renaming가끔 github workflow 에 커밋메시지 포맷을 검사하는 루틴이 있는 경우가 있다그런 경우 과거 커밋 메시지들을 포맷에 맞게 재설정해야한다 git rebase -i HEAD~20 입력 ㄱㄱ여기서 바꾸고 싶은 커밋 옆에 pick 지우고 reword 라 쓰고 넘어가면한 커밋씩 메시지를 바꿀 수 있다 Vim이랑 사용법 좀 다르니 유의ctrl+X 가 exit, format은 그냥 선택 안 하고 엔터만 입력해도 됨풀리퀘 안에 중복된 커밋 합치기커밋 1에서 추가한 함수의 type hint 가 파이썬 3.8 문법에서는 지원을 안 해 workflow 일부에서 실패를 하는 현상이 발생했고,이것이 커밋 3에서 수정되었다. 동일 함수에 대한 수정 사항이 ..

etc 2024.08.29

github에는 못올리는 큰 파일 dvc로 관리하기

DVC & git lfs?git lfs (large file storage)100MB 이상 파일은 Git LFS를 이용해 GitHub Repository에 저장할 수 있음중소형 데이터는 Git LFS를 이용하는 것을 추천2GB가 넘어가는 대용량 데이터의 경우 data quota 넘어감..깃헙에서 제공하는 lfs 서버는 데이터 사이즈 제약이 심해서 자체 lfs 서버 운영 필요dvc (data version control)모델과 데이터 등의 버전 관리를 위한 오픈 소스DVC는 데이터를 추적하는 데에 사용할 메타 데이터와 설정 파일을 생성하고, DVC에 의해 생성된 파일을 git이 추적하여 버전 관리를 진행dvc 의 경우 data 를 저장할 storage 만 설정해주면 됨, remote storage 내 위치..

etc 2024.08.29

rsync로 원격 서버에 파일 빨리 올리기

rsync -avz -e "ssh -p [PORT_NUM]" ./GAZE_3D [username]@[IP]:/home/minseokim/gaze_3d/data/GAZE_3Da는 아카이브 모드 (서브디렉토리, 심볼릭링크, 퍼미션 등등을 보존)v는 Verbose 모드 (상세한 진행 로그)z는 데이터 전송 시 압축 사용하여 대역폭 절약-e “ssh -p NUM” 은 ssh 설정을 위해 필요맥에서 옮겨야한다면 .DS_Store 파일(메타데이터)까지 같이 옮겨지면 안되니까find . -name '.DS_Store' -type f -delete이렇게 현재 폴더부터 재귀적으로 찾으며 이름이 .DS_Store 이고 일반 파일인 것들만 전부 지우면 됨 rsync -avz -e "ssh -p [PORT_NUM]" [use..

etc 2024.08.29

PyTorch와 PyTorch Lightning

💡 PyTorch 설치 관련pip install "numpyNumpy 1.x 버전으로 다운그레이드PyTorch가 NumPy 2.0.0과의 호환성 문제를 일으키더라고요 (지금은 아닐수도?)pip install torch, torchvision, matplotlib, pandas필요한 패키지 선택적으로 추가 설치 ㄱㄱ💡 PyTorch 튜토리얼 (온라인)https://tutorials.pytorch.kr/beginner/basics/intro.htmlhttps://tutorials.pytorch.kr/recipes/recipes_index.html💡 PyTorch Lightning 이란PyTorch 기반의 딥러닝 모델을 더 쉽게 개발하고 관리할 수 있도록 도와주는 고수준의 라이브러리Lightning Mo..

etc 2024.08.29

rootutils로 프로젝트 구조 관리하기

프로젝트 root 기준sync/vector_sync.py 에서 utils.py 에 접근하지 못하는 문제가 있음. 즉 부모 디렉터리로 갈 방법이 없음 rootutils + __init__.py 조합으로 해결 가능 (init.py 꼭 안필요한거 같기도)당연히 프로젝트 root에는 .project-root 파일이 존재해야 하구요 import rootutilsrootutils.setup_root(__file__, indicator='.project-root', pythonpath=True)from src.utils import euler2vector setup_root 하면 상위 디렉터리를 traverse 하며 .project-root 파일을 찾고, 해당 디렉터리를 프로젝트 루트로 인식, 그 뒤로는 이제 dot..

etc 2024.08.29

venv → poetry 로 포팅하기

회사 프로젝트를 하는데, venv + requirements.txt 로 의존성 하기가 너무 귀찮았음분명 로컬 환경에서는 잘 됐는데 workflow의 일부 테스트환경에서는 실패하고,, 처음엔 requirements.txt 하나하나 수정했었는데 너무 귀찮더라고요poetry 란?python 의존성 관리와 패키지 배포를 도와주는 도구pip + virtualenv 조합을 대체할 수 있음pyproject.toml 파일을 사용해 프로젝트 설정과 의존성 관리poetry.lock 파일은 의존성이 해결된 후 생성되어, 의존성 트리에 있는 모든 패키지 정보를 lock/기록이렇게 add 하려고 할 때, 자동으로 의존성 관리를 해줍니다.물론 프로젝트 초기부터 poetry 세팅하고 의존성 하나하나 add 해줬다면 좋겠지만, 지금..

etc 2024.08.29