RSS

Monthly Archives: May 2014

Link

http://www.erogol.com/brief-history-machine-learning/

 
Leave a comment

Posted by on May 30, 2014 in Machine Learning

 

[term] dictionary

2014.05.29

과학적 용어로서의 dictionary는 compact signature할 때 처음 들어본거 같다.  느낌 상으로는 NLP 쪽에서 건너온 용어 같다.

 
Leave a comment

Posted by on May 29, 2014 in Machine Learning, Terms

 

[term] representation

2014.05.29

Representation 이란 말은 최근에 deep learning 진영에서 ICLR(International Conference on Learning Representation) 이란 학회를 만들면서 처음 듣게 되었다.  물론 영어 단어 자체로서의 “representation”이란 말은 어느 정도 들어봤지만, scientific term으로서는 생소하다.

위키피디아[1]를 보니까 representation learning이 feature learning과 비슷한 개념인거 같이 들린다.  아니 솔찍히 말하면 목적이 같아 보인다.  그렇다고 해서 representation이 feature와 비슷한 개념인지는 확실히 모르겠다.

2014.06.12

최근 Civera의 “Inverse Depth Parametrization for Monocular SLAM”을 보고 있는데, 3차원 좌표를 표현하는데 있어서 representation 이란 말을 쓰고 있다.  즉, 우리가 일반적으로 쓰는 Euclidean coordinate 상의 좌표 표현법([10, 14, 33]^T 같은 3차원 vector)을 XYZ representation이라고 부르고 있고, inverse depth representation이라고 해서 6차원의 vector로 다르게 표현하는 것을 얘기하고 있다.  두 representation에서는 서로 1대 1 호환이 가능하다.  즉, XYZ representation을 가지고도 모든 3차원 좌표를 표현할 수 있고, inverse depth representation을 가지고도 모든 3차원 좌표를 표현할 수 있다.  해당 논문에서는 inverse depth representation이 XYZ representation보다 Kalman filter를 쓰는 SLAM에서 더 유리하기 때문에 쓴다고 했다. 따라서 representation은 말 그대로 어떤 현상이나 공간을 표현하는 방식인거 같다.  실체는 하난데, 어떤 목적을 위해서는 이 representation을 쓰고, 다른 목적을 위해서는 저 representation을 쓰는 것이 아닐까 한다.

주목할만한 것은 이 논문에서는 representation과 parametrization이란 말을 거의 동일한 의미로 쓰고 있다.  Hough transform을 설명하는 [2]에서도 line을 표현하는데 있어서, rho와 theta로 표현하는 polar coordinate representation이 slope와 intersection으로 표현하는 방식보다 Hough transform에 더 적합하기 때문에 쓴다고 하고 있다.  또한 rho, theta, slope, intersection을 parameter들이라고 말하고 있으며, representation과 parametrization을 동일한 의미로 취급하고 있다.

그렇다면 rotation을 표현하기 위한 방법들인 Euler angle, angle-axis, 3 by 3 matrix, quaternion 들도 representations for rotation이 아닌가[3]?  결국 learning representation은 여러 가능한 representation 중에서, 어떤 목적(예를 들어 classification)에 제일 맞는 representation을 사람이 지정해 주는게 아니라 자동으로 학습하게 하는 것인거 같다.  이건 어디까지나 내 생각인데, Deep neural net에서의 representation learning이라는 것이 결국, 쉽게 생각하거나 구할 수 있는 (raw) representation으로서의 data가 vector 형태로 input layer로 들어가서 상위 layer들을 한단계 한단계 거치면서 해당 목적(classification)에 적합한  representation으로서의 vector로 변환되어서 마지막엔 결국 간단한 perceptron 만으로도 선형 분류가 가능한 형태가 되어지는게 아닐까? (누군가 태클 좀 걸어줘~~)

[1] http://en.wikipedia.org/wiki/Feature_learning#cite_note-pami-1

[2] http://en.wikipedia.org/wiki/Hough_transform

[3] http://en.wikipedia.org/wiki/Euler_angles#Relationship_to_other_representations

 
Leave a comment

Posted by on May 29, 2014 in Deep Learning, Terms

 

[review] Towards Semantic SLAM using a Monocular Camera

발표 : IROS 2011

제목 : Towards Semantic SLAM using a Monocular Camera

저자 : Javier Civera, Dorian G´alvez-L´opez, L. Riazuelo, Juan D. Tard´os and J. M. M. Montiel

소속 : Universidad de Zaragoza, Spain.

이 논문은 ‘sematic’에 ‘SLAM’이 붙은 논문이다.  결과 동영상[1]도 있고, 전체적인 방식도 기존의 AR이나 SLAM과 많이 비슷해서, 뭐랄까 가장 선택하고 싶은 논문이다.
한가지 걸리는 것은 저자들이 이 논문 발표하고, 후속 연구가 없이 다른 쪽 연구를 한다는 것이다.  그들을 회의적으로 만든 무엇인가 있나?

아래 그림은 이 논문에서 주장하는 시스템의 전체적인 개요이다.

Clipboard07

PTAM이 크게 camera pose estimation(localization)과 map maintenance의 두 thread로 병렬처리 되었다면, 이 SSLAM은 크게 SLAM thread와 recognition thread로 나뉘어서 돌아간다.  아무래도 인식하는데 시간이 많이 걸릴 테니까…  근데 사실상 그러면 PTAM도 map maintenance가 시간이 오래 걸려서 병렬로 돌렸으니까, 이 거를 3개를 병렬로 돌리면 어떨까?

3차원 물체를 인식하기 위해 물체 모델을 만드는데 있어, face라는 tuple을 도입한다.  Face는 한 마디로 view이다.  즉, face의 구성요소는 3D 물체와 카메라와의 상대적인 pose로 인해 생기는 특징점들의 물체 좌표계내에서의 3차원 좌표들, 그 특징점들의 local feature descriptor들 (such as SURF), 물체 좌표계를 기준으로 한 카메라의 포즈이다.  물론 각 face에서의 특징점들이 planar하진 않지만, 결국 일반적인 planar AR은 물체에 대한 face가 한 개이고, 이거는 입체니까 여러개의 face들로 하는 느낌이다.  이렇게 한 물체에 대해 여러개의 face들을 만들고, 이런 작업을 여러 물체에 대해 해 주어 하나의 물체 DB를 생성한다.

인식 thread는 다음과 같이 돌아간다.  위의 그림에서 곰인형을 인식하는 예를 들자면, 현재 프레임이 k번째 프레임이라고 하고, 현재 프레임에서 곰인형을 인식했다고 판단하고 그 곰인형의 pose를 구해서 제시 하려면, 그 훨씬 이전 프레임에서 부터 작업이 들어간다.  만약 그 작업에 m개의 프레임이 소요된다고 하면, k – m번째 프레임에서 부터 작업이 시작된거다.  k – m번째 프레임에서 SURF 피처 점들을 뽑는다. 이걸 물체 DB의 각 물체에 대해, 물체의 각 face에 대해 비교를 한다.  RANSAC을 쓰는 건 마찬가지 인데 planar object때는 homography를 쓰니가 4개의 점이 필요하고, 여기서는 non-planar니까 5개의 점을 써서 PnP 방식으로 해당 물체좌표계와 카메라 좌표계 사이의 relative pose를 구한다.  만약 DB내의 어떤 물체가 planar라고 미리 알려져 있으면 그냥 homography를 쓰면 된다.  시간을 줄이기 위해서 한 물체의 face가 RANSAC을 통과하면 그 물체의 다른 face들은 skip하고, 다른 물체로 넘어간다.  어쨌거나 DB를 뒤져서 일정 기준(relative pose를 적용했을 때의 reprojection error가 충분히 작은) 가장 적합한 face를 가지는 물체가 발견이 되면, 걔의 DB내에서의 3D 특징점들은 아래와 같이 월드좌표계 상의 좌표 값드들로 변환 되어, 현재 SLAM 시스템의 3D map속으로 투입된다.

SLAM thread는 기본적으로 1-point RANSAC EKF 방식의 SLAM을 쓴다(저자의 이전 논문[2]에서 나온건데, 뭐 소스코드도 있으니까 약간 안심).  Kalman filtering에서의 state vector는 (카메라_포즈, 카메라_포즈_속도, 3D_Point_1, 3D_Point_2, …, 3D_Point_n)이다.

인식 thread가 시작되는 시점이랑 끝나서 물체를 증강하는 시점이랑 차이가 있으니까, 시작되는 시점 k – m번째 프레임에서 state vector에 카메라 포즈를 추가해서 인식 thread가 끝나는 시점까지 끌고 간다고 한다.  그러니까 k – 1번째 프레임에서는 (카메라_포즈, 카메라_포즈_속도, 3D_Point_1, 3D_Point_2, …, 3D_Point_n, 카메라_포즈_k_-_m)이 되는 것이다.  왜 이렇게 까지 하는지 모르겠다.  암튼 중요한 거는 물체가 현재 3D map상에서 움직이지 않는다고 하면, k – m번째 프레임에서의 (월드좌표계 기준) 물체의 포즈나 현재 k번째 프레임에서의 물체 포즈나 같다는 거.  따라서 물체 좌표계 기준의 3차원 점을 월드좌표계 기준의 좌표로 변환시키려면 다음과 같은 순서를 밟으면 된다.
물체 좌표계 기준 3차원 점
—(인식 결과로 얻은 k – m번째 프레임의 카메라와 몰체 좌표계 사이의 relative pose)—> k – m번째 프레임의 카메라 좌표계 상의 3차원 점
—(카메라 좌표계와 월드 좌표계 사이의 relative pose, 즉 카메라 포즈)—> 월드 좌표계 기준 3차원 점.

여기서 “인식 결과로 얻은 k – m번째 프레임의 카메라와 몰체 좌표계 사이의 relative pose”는 다시 다음과 같은 transform들의 연결로 볼 수 있다.

인식 결과로 얻은 k – m번째 프레임의 카메라와 물체 좌표계 사이의 relative pose = (face를 찍을 때의 카메라와 k – m번째 프레임의 카메라 사이의 relative pose) (물체 자체 좌표계 기준 face를 찍을 때의 카메라 포즈)

이렇게 물체 점 하나가 추가 되면, 현재 k번째 프레임에서의 상태 벡터는 (카메라_포즈, 카메라_포즈_속도, 3D_Point_1, 3D_Point_2, …, 3D_Point_n, 3D_point_W_F) 가 되고, 다시 다른 물체를 인식하기 위한 thread가 시작 된다.

근데 내 생각에는 일반적인 3D_Point_n과 인식된 물체 상의 3D_point_W_F 들을 똑같이 취급하는 거는 문제가 있어 보인다.  3D_point_W_F 들은 한 번 학습을 한 거기 때문에 비교적 믿을 만 하지 않나 한다.  즉  3D_point_W_F 끼리의 서로 간의 상대적인 위치는 프레임이 진행 되는 동안 변화되지 않는다고 보는게 맞지 않나 싶다.  그러한 constraint를 주면 3D_point_W_F 들의 상태가 개별적으로 변하는게 아니라 단체로 움직이게 할 수 있지 않을까?  그냥 내 생각…

동영상에서 보면 추적 잃어버렸을 때 relocalization 하는 것도 나온다.  이 논문의 저자들은 relocaization은 [3]의 방법을 썼다고 한다.

[1] http://webdiis.unizar.es/~jcivera/videos/civera_etal_iros11_desktop.avi
http://webdiis.unizar.es/~jcivera/videos/civera_etal_iros11_hospital_room.avi

[2] J. Civera, O. G. Grasa, A. J. Davison, and J. M. M. Montiel. “1-point ransac for EKF filtering: Application to real-time structure from motion and visual odometry”. Journal of Field Robotics, 27(5):609–631, October 2010.

[3] B. Williams, G. Klein, and I. Reid. “Real-time SLAM relocalisation”. In IEEE 11th International Conference on Computer Vision, page 1:8, 2007.

 
Image

Choosing the right estimator

Choosing the right estimator

 
Leave a comment

Posted by on May 27, 2014 in Machine Learning

 

[reiview] Semantic Structure From Motion

발표 : CVPR 2011

제목 : Semantic Structure From Motion

저자 : Sid Yingze Bao and Silvio Savarese

소속 : University of Michigan at Ann Arbor

이 논문은 Bao 의 CVPR 2012 논문의 전신에 해당한다.  일단 소스코드[1]가 있어서 땡긴다.  근데 한 image pair 당 수행시간이 대략 20분이란다.  아무래도 버려야 할 카드인거 같은 느낌… 전체적으로는 아래의 조건부 확률을 최대화하는 \{ \bf{Q}, \bf{O}, \bf{C} \}를 구하는 작업이다. 여기서 \bf{Q}는 scene에 등장하는 3차원 점들의 위치, \bf{O}는 3차원 물체들의 포즈, \bf{C}는 내부인자는 안다고 했을 때의 카메라의 포즈들이다.

\begin{aligned} \{ \bf{Q}, \bf{O}, \bf{C} \} &= \displaystyle \arg \max_{Q, O, C} Pr(\mathbf{q}, \mathbf{u}, \mathbf{o} | \mathbf{Q}, \mathbf{O}, \mathbf{C}) \\ &= \displaystyle \arg \max_{Q, O, C} Pr(\mathbf{q}, \mathbf{u}| \mathbf{Q}, \mathbf{C}) Pr(\mathbf{o} | \mathbf{O}, \mathbf{C}) \end{aligned}

여기서 \mathbf{q}는 3차원 점의 시퀀스에서의 이미지 좌표이고, \mathbf{u}는 각 이미지 포인트들과 3차원 점과의 대응 관계이다.  그리고 \mathbf{o}는 물체의 시퀀스에서의 좌표, 크기, 포즈이다.  그러니까 3차원 점들의 위치, 물체들의 포즈, 카메라 포즈가 주어지면 reprojetion 에러와 함께, 물체의 projection되는 shape의 error를 따져 봐서 주어진 3차원 점들의 위치, 물체들의 포즈, 카메라 포즈가 얼마나 괜찮은지를 판단할 수 있고, 이러한 모든 조합 중에서 가장 에러가 적은 것을 주어진 시퀀스의 물체의 포즈와 카메라 포즈로 정한다는 것이다. 그리고 3차원 점의 projection과 물체의 projection과는 독립으로 보면, 이 likelihood 함수는 두 부분으로 쪼개질 수 있어서, \mathbf{q}, \mathbf{u} 가 들어간 factor는 다시 \mathbf{O}가 빠지고, \mathbf{o}가 들어가 factor는 다시 \mathbf{Q}가 빠진다.  카메라는 projection에 결정적인 요소이므로, \mathbf{C}가 양 쪽 factor에 다 들어간다. Clipboard02   두 번째 factor는 다시 각 물체사이는 독립적이라고 보고 위 식처럼 product 형태로 바뀌고, 역시 각 프레임 사이도 독립적으로 보고 이중 product를 구성한다.  근데 왜 “1 – ” 이런 식으로 하는지 모르겠다.  비례관계는 맞는거 같은데, 1에서 뺀다는 건 여사건을 다룰 때나 쓰는 건데 왜 이런건지… Clipboard03 첫 번째 factor는 3차원 점들의 projection 에러에 관한 거니까, 역시 각 3차원 점들은 독립이라고 보고, 하나의 3차원 점에 대해서도 각 프레임에서의 projection이 독립이라고 보변 이중 product를 만들 수 있고 각 projection의 pixel distance error를 적당한 \sigma_{q}에 대해 Gaussian으로 본다.

첫 번째 factor에 대해 epipolar line을 이용하여 아래와 같은 alternative estimator를 제시하였는데, 이것도 좀 애매하다.

Clipboard04

여기서 N_s 도 대충 짐작은 가지만 확실히 밝히지 않았고, \alpha도 애매하다.

최종적으로 이러한 최적의 configuration을 찾기 위한 최적화 방법으로 아래와 같이 MCMC(Metropolis)를 쓰고 있다.

Clipboard05

저자의 CVPR 2012 version에서 쓴 simulated annealing이랑 비슷한 거 같다. 다른 점은 r이 몇 개인지는 모르겠지만, 이렇게 sequential하게 돌려서 r개의 configuration이 나오면, 그것들을 가지고 대충의 probability density function을 근사화하고 여기다 mean shift를 돌려서 clustering을 하고, 가장 많은 sample들을 포함하는 cluster의 중심을 최적의 configuration으로 삼는단다.  Step 2,3,4에서 볼 수 있 듯이 실제로 sampling을 해주는 건 카메라 포즈이다.  Sampling된 camera pose가 주어지면 거기에 맞게 확률을 최대화하는 물체들과 3차원점들이 정해지는 것이다.

[1] http://www.eecs.umich.edu/vision/projects/ssfm/codes/SSFM_01.zip

 

[reiview] Semantic Structure From Motion with Points, Regions, and Objects

발표 : CVPR 2012

제목 : Semantic Structure From Motion with Points, Regions, and Objects

저자 : Sid Yingze Bao, Mohit Bagra, Yu-Wei Chao and Silvio Savarese

소속 : University of Michigan at Ann Arbor

‘semantic’ 자가 들어가는 논문은 3종류가 있다.  하나는 이 전에 리뷰한 ‘semantic bundle adjustment’, 또 하나는 이 논문 ‘semantic SfM’, 마지막 하나는 ‘semantic SLAM’ 이다. 사실 bundle adjustment와 SfM과의 차이를 잘 모르겠다.  BA는 대부분 SfM에서 쓰이니까 그게 그건가 하고 있다.  그렇다면 이 SSfM은 SBA랑 비슷할 것인가?

이 논문은 Bao 의 CVPR 2011년 논문의 확장판이다.  고려 대상을 region까지 넓힌 걸로 봐서는 2011 버전이 별로 신통치 않아서 그런건 아닐까?  일단 이 논문은 최적화 문제를 풀기위해 simulated annealing(SA)를 쓰고 있다.  아 아무래도 실시간은 가망없어 보이는데… SA의 에너지함수로 아래와 같은 걸 쓰고 있다.  에너지 최대화니까 결국 확률 형태로 바꿔서 최대 확률로 끌고 가겠구만…Clipboard01길기도 길다. 여기서 \mathbb{Q}는 3차원 점들과 시퀀스에서 2차원 점들의 대응관계, \mathbb{O}는 3차원 물체와 시퀀스에서의 2차원 물체와의 대응관계, \mathbb{B}는 3차원 region과 시퀀스에서의 2차원 region과의 대응관계, 마지막으로 \bf{C} 는 카메라 포즈 시퀸스이다.  즉, 가장 최적의 카메라 포즈 시퀀스, 3차원 점들의 위치와 그 들의 2차원 projection 점들의 시퀀스, 3차원 물체들의 위치와 그 들의 2차원 projection 시퀀스, 3차원 region의 위치와 그 들의 2차원 projection 시퀀스는

  • CVPR 2011 버전에서와 같이 각 3차원 점들에 대해 reprojection 에러를 최소화하거나 epipolar line과의 거리를 최소화하는 카메라 포즈들과 3차원 점들의 위치
  • CVPR 2011 버전에서와 같이 각 물체에 대해 projection 에러를 최소화하는 카메라 포즈들과 물체들의 포즈
  • 이건 도저히 모르겠음
    Clipboard06

SA의 과정은 아래 슈도코드와 같고, 각 initial guesses들에 대해서  \{ \bf{C}_{M}, \mathbb{O}^{M}, \mathbb{Q}^{M}, \mathbb{B}^{M} \}이 나오면 이 중에서 가장 maximum energy를 나타내는 것을 최종 solution으로 삼는다.

Clipboard01

여기서 for문 안에서 보면 실제로 sampling하는 대상은 카메라 포즈들이고 나머지는 주어진 카메라에 대해 최대화를 하는 과정에서 구해진다.

암튼 저자가 온갖 비싼 기법들을 다 썼는데, 과연 실제로 그게 가능했을까가 의문이 든다.