Knowledge/Vision 17

contiguous의 의미 (view, reshape, transpose, permute 이해하기)

numpy 나 torch를 이용해서 코딩을 해본 적이 있다면 가끔 array나 tensor가 contiguous하지 않다는 오류를 본 경험이 있을 것이다. "인접한, 근접한" 이라는 뜻을 가진 contiguous 단어 자체의 뜻만 보고는 직관적으로 이 오류가 무엇을 의미하는지 이해하기가 어렵다. 나또한 그랬고 오류를 고치기 위해 한 동안 고생했던 기억이 있다. 일단 글을 시작하기 전에 먼저 말하면, 규모가 큰 코드, 특히나 연산이 얽혀있는 코드, 를 작성할 때 contiguous 문제가 생기면 풀기가 쉽진 않다. 코드 레벨이 아닌 안 보이는 레벨에서 발생하는 오류이기 때문에 꽤 까다로운 문제 중 하나라고 할 수 있다. 그래서 이번 글에서는 애초에 문제를 예방했으면 좋겠다는 의미에서 이 contiguous..

Knowledge/Vision 2023.02.21

Camera undistortion visualization(KB model, UCM, DS model)

아래 두 글에서 열심히 공부하고 설명하고자 시도했던 undistortion은 꽤나 어려운 내용이다. 2022.12.20 - [Knowhow] - Camera undistortion (pinhole, KB model) Camera undistortion (pinhole, KB model) 이전 글 2022.12.07 - [Knowhow] - Fisheye camera model(KB, UCM, DS 모델) 에서 다음과 같은 논문의 말이 이해가 안된다고 적은 바 있다. We propose the Double Sphere (DS) camera model that better fits cameras with fisheye lenses, has jseobyun.tistory.com 2022.12.29 - [Kno..

Knowledge/Vision 2022.12.29

Camera undistortion (UCM, DS model)

2022.12.20 - [Knowhow] - Camera undistortion (pinhole, KB model)에 이어 UCM 카메라와 Double Sphere 카메라의 undistortion에 대해 설명해보고자 한다. 결론부터 말하자면, UCM 카메라와 DS 카메라는 distortion이 큰 의미가 없다. 애초에 UCM와 DS 모델은 3차원 구를 이용해 모델의 표현력을 높였기 때문에 distortion이 크게 나오지 않는다. 모델 자체에 distortion이 최대한 내포되어있도록 설계되어 있다. UCM은 구를 이용해 표현하지 못한 부분을 살짝 커버하는 정도의 distortion이 필요하며, DS 모델은 distortion 자체가 없다. 사실 distortion 고려하지 않고 그냥 사용해도 웬만한 경..

Knowledge/Vision 2022.12.29

Camera undistortion (pinhole, KB model)

이전 글 2022.12.07 - [Knowhow] - Fisheye camera model(KB, UCM, DS 모델) 에서 다음과 같은 논문의 말이 이해가 안된다고 적은 바 있다. We propose the Double Sphere (DS) camera model that better fits cameras with fisheye lenses, has a closed-form inverse, and does not require computationally expensive trigonometric operations. 특히나, "a closed-form inverse"가 무엇인지 이해가 안되었는데, 카메라 모델 전반에 대해 조금 더 공부해보고 코드를 구현하던 중 unprojection을 정확하게 구할..

Knowledge/Vision 2022.12.20

Fisheye camera model(KB, UCM, DS 모델)

Introduction fisheye 카메라는 일반적으로 광각을 넘어서 180도 이상을 촬영하는 경우까지 포함하기 때문에 직관적으로 이해하기가 어렵다. 이미지 sensor는 앞을 보고 있는 평면이기 때문에 물리적으로 180도 이상은 담을 수가 없는데 분명 이미지에는 뒤에서 온 빛도 맺혀있기 때문이다. 애초에 말이 안되는 상황을 다양한 렌즈의 조합으로 억지로 만들어내는 카메라이다 보니 fisheye 카메라를 우리가 흔히 다루는 pinhole 카메라와 비슷한 수준으로 단순화하는데는 직관적이기보다 상상의 나래를 편 독특한 아이디어들이 필요했다. 이러한 독특한 아이디어는 실제 물리적인 부분과 매칭이 잘 되지 않고 가정으로 시작하는 부분이 있기 때문에 직관적으로 이해가 잘되지 않는다. 그래서 방법론에서 설명하는 ..

Knowledge/Vision 2022.12.07

3D transformation(R, t) matrix notation

Computer vision에서 3D transformation (rotation + translation)은 굉장히 흔히 접하고 많이 사용한다. 3차원 point의 좌표계 변환, 카메라 자세, extrinsic calibration 등 여러 키워드에서 반드시 등장한다. 그런데 문제는 transformation의 방향이 도대체 어느 방향인지 값만 봐서는 알 수가 없다는 것이다. 예를 들어, camera-to-world인지 world-to-camera인지, camera 1 to camera 2인지 camera 2 to camera 1인지 구분할 수 없다. 위 그림에서만 봐도 화살표 없이는 R,t가 어느 방향으로의 변환인지 알 수 없다. (사실 화살표를 알아도...해석하기 나름이라 헷갈린다.) 이것을 구분하..

Knowledge/Vision 2022.07.13

Rotation representation for neural network

요즘 regression task를 풀고자 할 때 많이 시도하는 방법은 neural network를 이용하는 방법이다. classification, detection 등등 온갖 주제에서 neural network가 regression에 폭발적인 성능을 보여준다는 것이 입증된지 오래여서, 가장 먼저 떠오르는 방법이 됐다. (요즘은 neural network를 쓰는 것이 computational cost 측면에서까지 좋을 때도 있다.) 하지만 Rotation 값을 regression하는 경우에는 약간 상황이 다르다. Rotation은 유한한 범위 안에서 유일한 의미를 갖는 다른 값들과 달리, 범위가 무한하며 주기성이 있기 때문에 neural network를 이용하는데 어려움이 있다. (물론 풀긴 풀지만 성능..

Knowledge/Vision 2022.07.04