논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Monocular SLAM Supported Object Recognition

http://people.csail.mit.edu/spillai/projects/vslam-object-recognition/

1. Introduction

“SLAM-aware”와 “SLAM-oblivious” 시스템으로 구분하고자 합니다. 후자는 전통적으로 이뤄지던 시스템으로 frame-by-frame 기반에서 물체를 찾고 인식하는 시스템으로 주변 환경이나 카메라의 위치, 물체가 처한 환경을 인식하는 것과는 거리가 멀었습니다. 하지만 전자는 관찰 할 수 있는 주변에 대한 지도와 카메라의 위치에 대해 언제든 접근할 수 있는 시스템입니다. 여기에서는 RGB 카메라를 이용하여 SLAM-aware시스템에서의 물체를 인식하는 알고리즘에 대한 내용입니다.

2. Related Work

3. Monocular SLAM Supported Object Recognition

A. Multi-view Object Proposals

물체 인식을 위한 대부분의 물체 후보 제안 알고리즘은 하나의 이미지에서 수퍼픽셀이나 에지 기반의 방법을 사용합니다. 하지만 로봇의 경우 같은 물체를 여러 시간동안 관찰할 수 있기 때문에 spatio-temporal이나 reconstructed 3D와 같은 환경으로 접근하는 것이 자연스럽고 강력할 것입니다.

최근 Engel이 제안한 LSD-SLAM은 semi-dense 방식의 장면 재구성 방법을 보여주었으나, 이는 spatio-temporal 장면 에지를 이용하였습니다. 비록 scale ambivalent 하지만 먼곳과 가까운 곳을 구분할 수 있는 것은 물체의 인식에 있어 장점이 있습니다. 따라서 이 알고리즘은 monocular SLAM 중 가장 성능이 좋은 ORB-SLAM 위에서 구현되었습니다. LSD-SLAM은 때때로 베이스라인이 긴 모션에 대해서 추적에 실패하는 모습을 보여주었기 때문입니다.

이렇게 구해진 scale ambigous한 재구성 씬에서 물체를 추출하기 위해서, density기반의 partitioning 방법을 사용하였습니다. 이를 반복하여 4개의 다른 스레스홀드 값에 대해 수행하여 over-segmentation된 점들을 계산합니다. 이러한 점들로 구성된 point cloud는 물체의 후보로 사용될 수 있으며, 이것들을 seed로 활용하여 카메라의 각 뷰에 project하여 가려짐 문제를 해결하거나 물체 후보를 생성하고 정교화하는데 사용됩니다.

여기에서는 윈도 크기가 20 x 20 픽셀 이하의 후보는 제거하고, 가려진 후보 또한 제거합니다. 또 IoU의 스레스홀드 0.5를 이용하여 겹쳐진 후보 또한 제거할 것입니다.

B. State-of-the-art Bag-of-Visual Words with Object Proposals

물체 후보가 제안되고 나면 후보 영역을 기술하는 단계로 나아갑니다.

Dense BoVW with VLAD

이미지와 물체 후보가 주어지면 가장 먼저 하는 일은 이미지를 dense하게 샘플링하는 것입니다. 각 샘플들은 SFIT와 RGB 컬러 값으로 샘플링하게 됩니다. Dense SIFT 는 128차원, RGB는 3차원으로 총 $\Phi_{SIFT+RGB} \in R^{131}$에 속하게 됩니다. 특징은 4 픽셀 간격으로 이동하면서 추출하게 되며, $\sqrt{2}$ 단계로 스케일된 4개의 피라미드를 사용하였습니다. 그리고 그 결과를 PCA를 이용하여 80차원으로 줄였습니다. 다음 $K=64$의 k-means를 통하여 vocabulary $ V \in R^{K \times 80} $를 생성하는 것으로 bag-of-visual-words의 학습 과정을 마쳤습니다.

이것만으로도 전통적인 BoVW가 구현되나 최근 제안된 VLAD, Fisher Vectors들은 기존의 BoVW보다 더 나은 성능을 보여줍니다. 따라서 특징들을 기술하는데 VALD를 사용하기로 하였습니다.

각 바운딩 박스에 대해서 un-normalized VLAD $\Psi \in R^{KD}$ 를 계산하여야 합니다. 이를 위해 기술자 각 $\Phi$와 vocabulary의 vector-quantized center와의 residuals를 통합합니다.

$$v_k = \sum_{x_i : NN(x_i) = \mu_k} x_i - \mu_k$$

추가적으로 각 바운딩 박스마다 1x1, 2x2, 4x4 등 S개의 세부영역으로 나누어 이들의 디스크립터를 벡터로 쌓습니다. $ \Psi = [ \dots, v_s, \cdots] \in R^{KDS}$

Efficient Feature Encoding with FLAIR

이러한 방법으로 물체 후보를 기술할 수 있지만 물체의 종류가 많아질 수록 그대로 사용하기가 힘들어집니다. 따라서 Sande의 FLAIR를 사용합니다. 이는 히스토그램의 summed-area table을 활용하여 엔코딩하여 빠른 탐색이 가능하도록 하는 방법입니다. 각 코드북에 대하여 integral histograms를 생성하면 임의 박스 B에 대한 히스토그램을 바로 계산할 수 있습니다. 또한 FLAIR는 피라미드 binning에도 적절하게 대응할 수 있습니다.

Multi-class histogram classification

이제 VLAD의 트레이닝 데이터 $(x_n, y_n)$이 주어지면 Stochastic Gradient Descent (SGD)를 이용하여 선형 분류기를 학습시킵니다.

$$E(w) = \frac{1}{n} \sum_{i=1}^n L(y_i, f(x_i)) + \alpha R(w)$$

여기서 $L(y_i, f(x_i)) = \log (1 + \exp (-y_i \mathbf{w}^T \mathbf{x}_i))$ 는 ligstic loss function, $R(w) = 1/2 \sum_{i=1}^n \mathbf{w}^T \mathbf{w}$ 는 L2-regularization 항입니다.

여러 부류에 대하여 1-N 방식을 통해 처리하였습니다.

C. Multi-view Object Recognition

ORB-SLAM에서 얻어진 scale-ambiguous reconstruction에서 물체가 존재하는지에 대한 강력한 정보를 제공합니다. 이들을 over-segment하여 물체에 대한 seeds $o \in \{ 1, \cdots, O \}$ 변환합니다. 이 seed들은 각 프레임으로 투영되어 물체의 가려지지 않은 부분의 깊이를 추정하게 됩니다. 이제 남은 물체 후보를 이용하여 앞에서 만든 검출기가 각 이미지의 물체 클러스터 $O$를 검사하고 분류하게 됩니다. 그리고 가장 많은 부류로 분로된 것을 부류로 택합니다.

$$\hat{y}^{MLE} = \arg \max_{y \in \{ 1, \cdots, |C| \}} p(x_1, \cdots, x_N | y)$$

여기서 likelihood로는 앞에서 만든 분류기를 사용하고, 각 이미지마다의 특징들은 비종속적이라고 가정하면 MLE는 log를 통해 쉽게 factorization될 수 있습니다.

4. Experiments


Add a Comment Trackback