분류 전체보기 538

내 몸의 설계자, 호르몬 이야기

읽게 된 계기 출퇴근용 책. 읽을 책이 없어서 골랐다. 이 책을 계기로 결심했다. 더 이상 오디오북으로 들을 만한 책은 이제 밀리의 서재에 없다. 눈으로 읽는 책으로 돌아가자. 짧은 평 진짜 이야기다. 호르몬 이야기. 어떤 호르몬이 있고 무슨 기능이고 이게 부족하면 혹은 과다하면 어떤 문제가 생기는지 책이 끝날 때까지 반복한다. 생물1,2 호르몬 파트를 쉽게 써놓은 느낌. 공짜라면 배경 지식 삼아 읽어볼만 하지만 이미 한 번쯤 배웠고 시간이 남지 않는다면 그닥 추천하진 않는다. 어린이 대상 책같다.

Book/Fun 2023.09.20

베르베르 씨, 오늘은 뭘 쓰세요?

읽게 된 계기 역시나 출퇴근용 책. 작가의 자서전을 이전에 한 번 읽고 나서 다소 흥미를 잃었던 지라 크게 기대되진 않았다. 하지만 어릴 때부터 좋아했던 작가의 자서전은 조금 다를까해서 골라들었다. 짧은 평 자서전치고는 재밌었다. 개미를 비롯한 타나토노트, 나무, 천사들의 제국, 파피용, 신, 심판 등 꽤나 많은 작품을 이미 읽었기 때문에 배경지식이 많아서인지 자서전에서 책을 쓰게 된 계기를 들을 때마다 신선한 느낌이었다. 베르나르의 자서전을 읽고 흥미로웠던 것은, 이전 김초엽 작가의 자서전에서는 한 이야기를 쓰는데 엄청난 노력과 자료 조사가 필요하다는 이야기를 들었을 땐 작가 역시 일반인들과 똑같구나 라는 생각을 했었는데 베르나르는 조금 다른 느낌이었다. 흔히 말해 천재성으로 글을 쓰는 작가가 베르나르..

Book/Fun 2023.09.20

Decoupling Makes Weakly Supervised Local Feature Better (a.k.a PosFeat)

내 맘대로 Introduction 이 논문은 SIFT와 같은 가장 low level vision 기술인 image feature를 뽑는 네트워크를 소개한다. Superpoint와 같은 논문의 2022년 버전이라고 생각하면 되겠다. 기타 deep feature extraction 네트워크들은 detect-and-describe 즉 위치를 먼저 잡고 그 주위에 feature를 convolution함으로써 image feature화하는 방식을 많이 썼다. 하지만 이 논문은 반대로 describe-and-detect 순서로 변경한 것이 차이다. 먼저 descriptor가 잘 뽑히도록 한 뒤 위치를 잡기 때문에 descriptor가 좋아야 위치도 잘 잡히는 구조다. 따라서 descriptor가 더 까다롭게 학습되..

Paper/3D vision 2023.09.19

Static library와 dynamic library 차이

C++를 다시 보며 공부하던 와중, CMakeLists.txt 내부에서 궁금증이 드는 부분이 생겼다. add_library(LIB_NAME [STATIC|SHARED|MODULE] ... ) add_library 사용 시에 들어가는 저 STATIC, SHARED 태그가 뭔지 궁금해졌다. static library, dynamic library 많이 들어봤지만 정작 어떤 차이인지 모르는 것을 보고 한 번 찾아봤는데 이 글에서 얕게 나마 정리해보고자 한다. Library란? library란 익히 들어알고 있겠지만 프로젝트를 구현할 때 공통적으로 쓰는 기능들을 매번 재구현하기 어려우니 미리 구현해서 불러오기 가능한 형태로 저장한 코드 집합을 말한다. python에서는 볼 일이 없지만 c++에서는 .lib, ...

Knowledge/Vision 2023.09.14

Positional embedding (직관적 이해)

Transformer 구조가 트렌드인 만큼 transformer 구조 내 핵심 기능 중 하나인 positional embedding에 대한 연구도 많이 진행되고 있다. 초창기 token에 position 정보를 넣어주기 위해서 sinusoidal function을 이용한 positional encoding을 사용했었는데 이제는 learnable 형태로 넣는 positional embedding이 더 효과적이라는 것이 밝혀져 embedding을 알아야 한다. 따라서 이 글에서는 positional embedding의 예시를 몇가지 짚어보면서 흐름을 잡을 수 있도록 정리한다. 이전 글 : 2023.03.10 - [Knowledge] - Positional encoding Prerequisites positi..

Knowledge/Vision 2023.09.13

Vision Transformers for Dense Prediction

내 맘대로 Introduction Dense prediction을 필요로 하는 task들은 (depth, semantic segmentation 등) encoder-decoder 구조를 많이 차용한다. 그리고 CNN으로 많이 구현한다. 하지만 메모리 사용량과 연산량 문제로 CNN encoder-decoder 구조는 downsampling을 많이 사용한다. 이 과정이 사실 많이 사용하고는 있으나 따지고 보면 dense prediction을 하기 위해 global context를 더 잘 보고 high frequency detail을 유지해야 하는 특성과 맞아 떨어지지는 않는다는 주장이다. 따라서 downsample이 포함되지 않는 ViT 구조를 encoder로 사용하고 CNN decoder를 조합하면 den..

Paper/Others 2023.09.13

CroCo v2: Improved Cross-view Completion Pre-training for Stereo Matching and Optical Flow

내 맘대로 Introduction 제목에서 알 수 있다시피 Croco의 성능 개선편, v2다. 사실 상 엄청난 개선은 없고 성능을 끌어올리기 위한 기법들을 소개하는 것이다. 첫번째는 synthetic data만 썼던 v1 대비 large scale real data를 만든 것. 두번째는 모델 사이즈를 키운 것. 세번째는 rotary positional embedding으로 변경한 것이다. 그리고 downstream task로 binocular vision task에서 성능 향상이 얼마나 큰 지 강조하면서 geometric task에서의 우수성을 보여준다. 메모하며 읽기 한 그림에 다 나와있다. 모델 크기 키웠고 실환경 데이터 무지막지하게 추가했고 positional embedding을 변경했다. Croc..

Paper/Others 2023.09.13

CroCo: Self-Supervised Pre-training for 3D Vision Tasks by Cross-View Completion

내 맘대로 Introduction 이 논문은 pretrained ViT backbone을 학습시켜두는 방법론을 설명하는 논문이다. Masked image modeling(MIM) 기법으로 사전 학습시킨 ViT backbone이 다른 vision task에 사용되었을 때 성능 향상에 기여했다는 논문들이 다수 등장함에 따라 그 확장 판 논문이다. 핵심 아이디어는 하나의 이미지로만 학습시키던 MIM 기법을 두 개의 이미지로 학습시키는 파이프라인으로 만들고, 그 두 개의 이미지를 같은 공간 view point만 다른 이미지로 제한하여 공간 정보를 더 잘배우도록 유도하는 것이다. 공간 정보를 더 잘 배우니 3D vision task의 backbone으로써 더 적합하다는 주장도 펼친다. 메모하며 읽기 MIM이라는 ..

Paper/Others 2023.09.13

ERROR:optimizer got an empty parameter list

최근 python으로 최적화 코드를 짜던 와중 발견한 오류다. pytorch의 nn.Parameter를 이용해서 짜거나 CVPR2023에 공개된 pypose (https://github.com/pypose/pypose) 의 pp.Parameter를 이용해서 짤 때 발견된다. 참고로 pypose는 pytorch와 호환되도록 짜여져있어서 똑같은 에러가 발생했다. 오류명에서도 알 수 있다시피 pytorch optimizer나 pypose optimizer 모두 optimzier 에게 최적화 대상이 되는 Neural network model 혹은 Error model의 파라미터를 넘겨주어야 하는데 이게 없다는 소리다. 즉, optmizer(model)로 초기화를 할 때 model.parameters()가 호출되..

Ubuntu terminal 분할해서 사용하기

Ubuntu에서 작업하면 전부 다 터미널을 사용하게 되는데, 매 작업마다 새로운 터미널을 쓰면 관리가 힘들다. 여러 개의 터미널을 쓰는 건 동일하지만 터미널끼리 붙어있기만 해도 보기가 편한데 이 때 딱 좋은 프로그램이 있다. 이름이 거창하게 터미네이터(Terminator) (ㅋㅋ)인데 설치도 쉽고 사용도 쉽다. 설치 sudo apt-get install terminator 완료되면 새 터미널 열 때부터 자동 적용된다. 사용법 터미널 위아래로 쪼개기 : Ctrl + Shift + O 터미널 좌우로 쪼개기 : Ctrl + Shift + E 터미널 넘나들기 : Ctrl + Tab 현재 터미널만 끄기 : Ctrl + Shift + W 주의 사항 터미널 좌우로 쪼개는 Ctrl + Shift + E 커맨드가 안 먹..

Knowhow/Linux 2023.09.07