분류 전체보기 441

도파민네이션

끄적끄적 요근래 도파민이 키워드여서 온갖 영상과 책에서 도파민, 도파민 거리는 것을 보았다. 그 중 가장 많이 본 책이 이 도파민네이션이라는 책이었다. 읽을 생각이 크게 없다가 시간이 좀 흐르니 문득 호기심이 생겨 읽게 되었다. 나는 이 책을 읽기 전 내용을 예상하길 쾌락 과잉 시대라고 하길래 마약이나 술 얘기 조금 하다가 SNS 같은 새로운 매체 중독을 말할 줄 알았다. 하지만 처음부터 끝까지 마약, 술, 성 중독 얘기를 해서 사실 좀 실망했다. 마약, 술, 성과 같은 것들에 중독되는건 사실 익히 알고 있으니 이에 대한 내용보다 현대인들이 간과하지만 이것들만큼이나 중독성이 있고 해롭다는 관점으로 SNS나 유튜브 같은 것을 말할 줄 알았는데 아니더라. 다소 아쉬웠다. 짧은 후기 이 책에서 내가 얻은 하나..

Book/Mind 2024.03.29

노동의 시대는 끝났다

책에 대한 소개제목에서 느낌이 팍 오듯이 기술이 발전하면서 로봇, 인공지능이 사람을 대체하기 시작하면 이전과 같은 형태의 노동을 지속할 수 없다는 사실을 주제로 삼은 책이다. 단순히 요즘 인공지능이나 로봇이 빠른 속도로 발전하고 있으니 얕은 수준으로 거품 낀 이야기를 하면서 책을 팔려는 목적이 아니라 전체 분량의 30%가 참고문헌일 만큼 깊은 이야기를 담은 책이다. 거의 논문에 가까운, 오히려 어떤 논문보다 심혈을 기울여 적은 책이다. 책 자체가 탄탄한 느낌이었고 읽어보면 좋을 책이다. 기술이 발전하면 기존 노동자들을 대체하는 힘이 생기기 때문에 필연적으로 실직자가 생긴다. 실제로 이러한 힘에 두려움을 느껴서 러다이트 운동이 벌어진 역사적 사실도 있는데, 이 대체하는 힘은 여태까지는 기술의 발전으로 인한..

Book/Fun 2024.03.22

DUSt3R: Geometric 3D Vision Made Easy

내 맘대로 Introduction 새로운 컨셉의 3D recon. 논문이다. intrinsic을 모를 때도 사용이 가능한 image to 3D point 형태의 모델인데 Croco 와 같이 binocular image로 학습된 backbone을 사용해서 네트워크가 geometry를 알아서 배워서 바로 lifting할 수 있도록 했다. 이게 되냐? 싶지만 데이터를 850만 장이나 사용해서 커버했다. 아이디어는 scene coordinate라는 형태로 이미 연구가 되었던 분야이므로 새롭진 않으나 엄청나게 데이터를 많이 먹이면 가능하다는 것을 보여준 것이 의미가 있다. 또, 가능하다는 것이 입증되었으니 기존 SfM, MVS와 같이 카메라 파라미터에 엄청 의존하는 방식에서 벗어나서 데이터 빨로 recon.할 수..

Paper/3D vision 2024.03.12

마흔에 읽는 쇼펜하우어

끄적끄적니체와 달리 염세주의를 갖고 있는 철학자 같았다. 원래도 좀 우울한 성향(?)의 철학자라는 이미지가 있었는데 책을 보고 나니 더 그런 것 같다. 행복보다는 고통을 최소화하는 것이 더 낫다는 말이나, 성공한 사람이나 가난한 사람이나 크게 다를 바 없다는 말을 듣고 있자하니, 삶이란 뭔가 추구하고 나아가는 것이라기 보다 견디는 것으로 바라보는 시선 같았다. 니체처럼 삶의 원동력이 개인의 성장에 있다는 관점의 진취적인 느낌과 정반대로 안분지족하면 더할 나위 없다는 식의 정적인 느낌의 철학 같았다. 어떤 시선으로 삶을 바라보냐에 정답이 없으니 니체나 쇼펜하우어나 다 일리있는 말이다. 어떨 때는 쇼펜하우어의 관점이, 어떨 때는 니체의 관점이 와닿는 식으로 엎치락 뒤치락하기도 하니 말이다. 그냥 그렇게 생각..

Book/Mind 2024.03.03

생각이 너무 많은 어른들을 위한 심리학

끄적끄적 기억에 남는 내용이 특별히 있다기 보다, 마음의 방파제를 쌓는 느낌이었다. 심리학이라는 단어가 제목에 들어가 있는 책 대부분이 사람의 마음이 어떻게 다치고, 닫히고 회복되는지를 다루다 보니 그냥 그렇구나 하면서 읽는다. 나의 현 상태와 별 상관이 없는 내용을 읽을 땐 사람이 이럴 수도 있구나, 그럴 수도 있지 하면서 나중에 나를 지킬 마음의 방어력을 높이는 느낌이고 나에게 와닿는 내용을 읽을 땐 조금 더 나아가 치유되는 느낌을 받는다. 김혜남 작가의 책은 그런 측면에서 자주 손에 잡는 책인데 읽을 수록 마음 한 켠에 무언가 쌓아두는 느낌이다. 나중에 떠올라서 내가 힘들 때 도움이 될만한 것들을 차곡차곡 쌓는 기분이라 다 읽고 나서 뭔가 기억이 특별히 나지 않아도 괜찮다. 더불어서 말하는 작가의 ..

Book/Mind 2024.03.01

Eigen 형변환 :Quaterniond, Vector3d to Matrix4d

Eigen을 활용해서 구현을 자주 하는데 그 때마다 quaternion과 translation을 표현하는 변수 타입이 섞이는 일이 많다. Vector4d가 편할 때, Quaterniond가 편할 때, Matrix4d가 편할 때가 각각 달라서 하나로 통일하긴 뭐하고 매번 서로 변환해가면서 쓴다. 같은 함순데 매번 새로 구현하는 것이 귀찮아서 이곳에 기록해둔다. 그냥 값을 일일이 복붙하는 식으로 구현해도 되지만 뒤에 ceres solver라도 붙이려고 한다면 메모리 주소가 공유돼서 연결되어 있어야 하므로 다음과 같이 구현하는 것이 좋더라. void qt2mat(Eigen::Quaterniond q, Eigen::Vector3d t, Eigen::Matrix4d& mat){ mat.block(0,0) = q...

Eigen Vector4d와 Quanterniond, 그리고 Ceres EigenQuaterniondParameterization()

Ceres를 이용하여 최적화 코드를 구현할 때 Eigen을 많이 활용한다. 특히 최적화 대상에 보통 rotation이 포함되는 경우가 많아서 Quaternion을 표기하는 과정에서 Eigen::Vector4d, Eigen::Quaterniond를 많이들 사용한다. 하지만 주의할 점이 있어 기록해두고자 한다. 그 내용은 각각 어떤 convention을 따르느냐는 것이다. 다시 말해 (w,x,y,z) 순서인지, (x,y,z,w) 순서인지 말이다. Eigen::Vector4dEigen::Vector4d는 (x,y,z,w) 순서를 사용한다. Hamilton convention으로 알려진 (w,x,y,z)이 아니다. argument 순서와 내부 데이터 저장 순서 동일하게 전부 (x,y,z,w) 순서를 사용한다. ..

Double sphere 모델 projection-failed region

광각 카메라 모델 중 double sphere 모델을 보면 수식 상 다음과 같이 projection이 실패하는 조건이 있다. 여기서 저 수식 (43)이 의미하는 범위가 대충 지금 광각 카메라가 표현할 수 있는 화각 범위 밖이라는 느낌은 오는데 정확히 어떤 형태인지가 궁금했다. 내가 캘리브레이션했었던 double sphere 모델 주변에 point를 채우고 수식(43) 조건에 필터링되는 point만 남기면 다음 그림과 같다.예상했던 것과 같이 카메라 뒤로 원뿔 형태로 퍼지는 영역이 잡힌다. 광각 이미지가 동심원을 그리듯 표현되어 있고 렌즈도 원이기 때문에 projection-failed 영역은 원뿔 모양이었다. invalid projection 을 그냥 무시하고 구현을 해왔었는데 영역을 보니... 무조건 ..

Knowhow/Vision 2024.02.28

Fisheye 카메라 모델도 solvePnP 이용해서 자세 초기화/추정하는 방법

카메라 자세를 초기화할 때 가장 많이 쓰이는 방법이 PnP를 사용하는 것이다. 이미 알고 있는 3D point set과 이미지에서 검출한 2D point set이 있을 경우, 수학적으로 자세를 아주 간단하게 구할 수 있고 심지어 opencv 함수로 구현되어 있기 때문에 단 한 줄이면 카메라 자세 값을 계산할 수 있다. 하지만 카메라가 광각 카메라여서 pinhole model로 표현이 안될 경우에는 이러한 접근이 어렵다. PnP 알고리즘은 3D point와 2D point 간의 관계가 서로 linear projection일 경우를 가정하기 때문이다. 다른 말로 표현하면 빛이 직진해서 바로 이미지로 맺혔을 경우에만 적용이 가능하다. 반면 광각 카메라 (특히 180도가 넘어가는) 의 경우, 2D point와 ..

Knowhow/Vision 2024.02.28

Opencv cornerSubPix empty array 문제

cv2.error: OpenCV(4.7.0) /io/opencv/modules/imgproc/src/cornersubpix.cpp:58: error: (-215:Assertion failed) count >= 0 in function 'cornerSubPix' 2D feature point 위치를 보정하기 위해서 주로 쓰는 cv2.cornerSubPix() 함수 사용 중 위 오류를 자주 볼 수 있다. 오류명만 보면 입력으로 들어가는 2d point가 empty array라는 뜻으로 보이는데, 그 경우가 아니어도 위 오류가 날 수 있다. # points : np.float64 cv2.cornerSubPix(gray, points, (5, 5), (-1, -1), subpix_criteria) # fail ..

Trouble/OpenCV 2024.02.27