ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization
    Robotics 2019. 8. 2. 10:14

    posenet

    Abstract

    이 논문은 실시간으로 **단안 6 자유도 relocalization 시스템을 제시합니다**. 우리 시스템 6-DOF 카메라 포즈를 추가 엔지니어링 또는 그래프 최적화없이 단일 RGB 이미지에서 엔드 투 엔드 방식으로 Regress 시키는 컨볼 루션 뉴럴 네트워크를 학습시킵니다. 이 알고리즘은 실내 및 실외에서 실시간으로 작동 할 수 있으며 계산할 프레임 당 5ms를 소비합니다. 그것 대규모로 실외에서 약 2m와 3◦ 정확도, 0.5m 및 5◦ 정확도를 실내에서 얻었습니다. 이는 efficient 23-layer deep convnet을 사용하여 달성하였으며, convnets를 사용하여 복잡한 문제를 해결할 수 있음을 보여줍니다. 이미지 Plane Regression 문제에서 이것은 대규모 분류 데이터로부터의 Transfer learning을 이용함으로써 가능 해졌다. 우리는 PoseNet이 높은 Level 의 feature 와 인식하기 어려운 조명, 모션 블러 그리고 포인트 기반 SIFT 찾는 것을 실패한 다른 카메라의 내제적 변수들 에서 위치를 찾아냄을 보였습니다. 또한 우리는 다른 장면으로 어떻게 제공되는 포즈 Feature 를 일반화하여 제공되는 지를 보일 것이며 이는 우리에게 겨우 몇 십 가지의 Training 예를 가지고 pose 를 regress 하게 합니다.

    introduction

    우리는 인식과 Relocalization에 매우 큰 규모의 분류 학습데이터를 활용합니다. 또한 장면의 비디오에서 모션의 구조를 사용하여 교육 라벨(카메라 포즈) 을 자동 생성합니다. 이것은 라벨링 된 비디오 데이터 세트를 작성하는 인간 노동력을 감소시킵니다.

    단안 이미지를 유해한 변수에 강인한 고차원 features으로 매핑하여 이 작업을 수행합니다. 우리는 경험적으로 이 features은 포즈의 부드럽게 변화하는 주입 (one-to-one) 함수이며, 우리가 regress 할 수 있음을 보여줍니다. Tracking 할 필요없이 이미지에서 직접 포즈를 취할 수 있습니다.

    • 데이터에 라벨을 지정하는 자동화 된 방법으로 모션에서 구조를 사용하여 큰 카메라 포즈 Regress dataset 집합 생성

    • 대량의 이미지 인식 데이터 셋으로 자세 Regressor를 훈련시키는 미리 훈련 된 classifier를 만듭니다. 이것은 보다 적은 오류를 가지며 수렴 시간이 짧아지고, 처음부터 교육하는 데에 비해, 이후 Sparse 한 교육 세트로도 교육이 가능해 집니다.

    Related work

    no

    Model for deep regression of camera pose

    ​ **Model for deep regression of camera pose**
    $$
    p = [x, q]
    $$

    p : outputs, a pose vector relative to an arbitary global reference frame p,
    x : 3d camera position,
    q : orientation represented by quaternion q

    모델의 카메라 포즈로는 기준 프레임으로부터의 Pose vector 변화와, quaternion 으로 표현되는 방향인 6 dof 를 잡았습니다.

    stochastic gradient descent 를 이용하고, 다음과 같은 euclidian loss 를 이용하였다.

    ![img](https://k.kakaocdn.net/dn/bGoghB/btqxdqe6oy3/yDCm7P1UXmQr1q74ySDNi1/img.png))

    $\beta$ 는 위치 및 방향 오류의 예상 값 스케일을 거의 동일하게 유지하도록 선택된 값입니다.

    회전의 집합은 쿼터니언의 공간 단위 영역에 있습니다. 그러나 유클리드 손실 함수는 단위 구에 q를 유지하기 위해 아무런 노력을 하지 않습니다.

    그러나 우리는 훈련하는 중에, q는 구 거리와 유클리드 거리의 구별이 중요하지 않게됩니다. 때문에 간단히 하기 위해 불필요한 제약 조건으로 최적화를 방해하지 않기 위해 구형 제약 조건을 생략했습니다.

    position 과 orientation 을 따로 regress 하는 것보다 두가지를 같이 regress 하는 것이 좋은 성능을 나타내었습니다.

    위치 및 방향 회귀로 분리해서 모델을 만들면면 방향정보를 배제하고 위치정보만 사용하여 문제가 되거나 아니면 그 반대가 됩니다.

    우리의 loss 함수에서 $\beta$ 를 조절하는 것은 방향과 tranlation 패널티 사이에서 우리의 loss 함수에서 $\beta$ 를 조절하는 것은 방향과 tranlation 패널티 사이에서 밸런스를 맞추는 것입니다. 아래에 그래프에서 우리는 위치의 에러와 방향 에서 사이에 비율과 관계성을 알 수 있습니다. 우리는 $\beta$ 값이 실외 장소에서는 보다 커지며, 이 직관에 따라서 우리는 beta 를 grid search 를 이용해서 fine tuned 하였습니다. 실내에서는 약 120 ~ 750, 실외에서는 250 ~ 2000 사이의 값을 사용하였습니다.

    우리는 randomly 하게 초기화 하는 것이 중요하다는 것을 알게 되었고, final position regressor layer 는 nom of the weights 가 각 position dimension 에 비례하는 공간의 차원 범위 라는 것을 알게 되었습니다.

    classification 문제는 모든 카테고리의 학습 예제를 가지고 있습니다. 이는 regression (output 이 continuous 하고 infinite 한) 이 불가능합니다. 게다가 다른 convnet들은 regression 이 operate off 되는 데에 매우 큰데이터 셋으로 부터 사용되었다. 위치 regression 에 대해서 한정된 데이터로 작동하기 위해서는 우리는 큰 classification 데이터셋으로 부터 배운 pretraining 된 weight 에 강력한 표현을 배워야 합니다.

    Architecture

    Posenet 은 GoogLENet 을 사용하였으며, 22개의 층으로 된 covolutional network 로 되어 있다. 6개의 inception 모듈은 테스트 타임시에는 사라진다. 구글 넷에서 다음과 같은 부분을 주로 대체하였다고 한다.

    - 모든 softmax classifiers 를 affine regressors 로 대체 하였다. softmax layers 가 제가 되고 각 마지막 fully connected layer 는 output 이 7 dimension 의 pose vector 로 수정되어진다.
    - 마지막 regressor 전에 feature size 가 2048 인 다른 fully conncected layer 를 집어넣는다.
    - 테스트 할시에, 우리는 quaternion 의 방향 백터를 unit 길이로 normalize 한다.

    우리는 input image를 rescale 하며 224x224 pixel 을 cropping 하기 전에 가장 작은 dimension 은 256 pixels 이다.

    convnet 은 random crops 로 학습되어진다. (카메라의 포즈의 영향을 받는다.) 테스트 시에 우리는 각 single center crop 과 128 uniformly spaced 된 input 의 crops 를 평가한다. gpu 의 병렬 연산과 함께, 이 결과는 컴퓨팅 타임이 5ms 에서 95ms per image 로 증가한다.

    여기서 초기 이미지를 다른 사이즈로 cropping 전에 rescaling 하는 것을 시도 했는데, scaling up 은 input 을 256 pixels 로 downsampling 하기 전에 cropping input 하는 효과를 준다. 이는 input 의 공간 해상도를 증가시키며, 우리는 이것이 resolution 보다 context 나 field of view 가 공간 performance 를 더 증가시키는 것을 알 수 있다.

    posenet 모델은 caffe 라이브러리를 이용해서 구현되었으며, 이는 stochastic gradient descent 를 사용해서 학습되었다. base learning rate 은 10^-5 이었으며 90%로 80 에폭마다 줄여나갔다. momentum 은 0.9 였다. 1.5의 dual GPU card 를 사용해서, 학습의 경우 1시간정도 걸렸으며 이때의 batch size 는 75를 사용했다. 비록 우리는 더 나은 성능을 double the throughput and memory 를 이용해서 얻길 원했지만, 시간상의 이유로, 우리는 multi GPU training 을 사용하지 않았고, 각 이미지의 평균값을 각 scene 에서 빼줌으로써 우리는 실험의 성능을 높였다.

    dataset

    딥러닝은 큰 데이터셋에서 좋은 성능을 나타낸다. 하지만 이 데이터셋을 만드는 것은 꽤 비용이 많이 들고 노동력이 필요한 작업이다. 우리는 이것을 극복하기 위해서 structure form motion 을 통해서 자동적으로 라벨이 생성되도록 하였다. 이 논문을 위해서 우리는 실외 도심지 위치 데이터셋을 발표하였다. Cambridge Landmarks with 5 scenes. 독특한 데이터셋은 위치를 학습하고 테스트 할 수 있는 데이터를 제공하며 Pose regression algorithms 은 large sclae outdoor urban setting 을 가지고 있다. 카메라 위치의 버드 아이 뷰는 그림 4에 나와 있다. 더 디테일 한 부분은 테이블 6에 나와져 있으며, 특정 uban clutter 가령 보행자나, 자동차 같은 것들이 나타나 있고 데이터는 많은 다른 빛과 날씨 조건 등에서 많은 points 들에서 얻어져 있다. training 과 test image 는 특정 걸음 path 를 통해서 얻어져 있고, 똑같은 경로를 sampling 하지 않았다.

    dataset 은 structure from motion 기법으로 생성하였고 이를 ground truth 로 사용했다. google lg nexus 5 스마트폰이 사용되었다. 비디오는 2 hz 로 subsampled 되었고, sfm pipeline 의 인풋이 생성되었다. 이에 거기에는 spacing 이 약 1m 정도 카메라의 위치마다 있다.

    실내 장면을 테스트 하기위해서, 우리는 공적으로 7개의 scenes 의 데이터셋을 사용했다. fig 5 에 이것이 나타나있다. 이 데이터셋은 특정 카메라에서 높이에 대한 variation 을 함유하고 있으며 RGB-D relocalization 을 위해서 디자인 되었다. STFT 등의 features 를 사용하는 순수하게 시각적 relocalization 을 사용하는 것은 극단적으로 도전적인 일이다. 이것이 많은 모호한 textless features 를 가지고 있기 때문이다.

    experiment

    우리는 posenet 이 효율적으로 위치를 찾는 것을 보이기 위해서 실내에서 7개의 scenes dataset 에 대해서와 outdoor cambridge landmarks 데이터셋 에 대해서 시도하였다. 이는 table 6 에 나타나 있다.

    convnet 을 validate 하기 위해서 regress 된 pose 에 대해서 학습된 예를 뛰어넘는 것들을 보이기 위해서, 우리는 nearest neighbor representation 을 찾고 training set 에서 위치 convnet 에 의해 feature vector 를 생성하였습니다. 우리의 performance 는 이를 뛰어넘었고, 우리는 convnet 이 성공적으로 training example 을 뛰어너머 위치를 regress 함을 알수 있었습니다. fig 3.

    우리는 또한 우리의 알고리즘 을 RGB-D SCoRe Forest algorithm 과 비교하엿습니다.

    fig 7 에서 축적된 위치의 histogram 에러는 실내와 실외에 대해서 보여지고 있습니다. 우리는 비록 SCoRe forest 가 일반적으로 정확하지만 이것은 depth information 을 요구하며, 고해상도를 사용해야함을 알아차렸습니다. 실내 데이터는 많은 모호성을 포함하고 재질이 없는 feature 들이 많아서, relocalization 을 depth modality 없이 수행하는 것이 상대적으로 어려웠습니다. 우리는 우리의 방식은 이 어려운 상황에서도 테스트셋에서 95퍼센트 이상의 정밀도를 냄을 알게되었습니다. 이는 SCoRe 알고리즘보다 훨씬 정확하며, 모든 scenes 에서 작동 가능합니다. 우리는 또한 dense cropping 이 performance 의 향상을 가져옴을 알게되었습니다. 이는보행자나 자동차와 같은 특정 clutter가 있는 scenes 에서 가장 중요함을 알수 있습니다.

    우리는 또한 이 방식이 추가적인 이미지의 안개,비,스모그,밤등이나 모션 블러, 그리고 다른 카메라의 잘 알지 못하는 내재적 파라메터에 상대적으로 강건함을 알게되었습니다. fig 8. 에서 convnet 은 이러한 어려움들을 잘 다루고 있는것을 알 수 있습니다. SIFT 를 이용한 SfM 은 모든 경우에 실패하였는데 따라서 우리는 ground truth 카메라 포즈를 생성할수 없었다. 그러나 우리는 정밀도를 3d reconstruction 을 통해서 추정하였다.

    robustness against training image spacing

    우리는 fig 9 에서 나타냈었듯이, 실외 scale scene 에서 우리는 4m 보다 가까이 작은 spacing 을 얻었고 image 를 학습시켰다. 시스템은 training 이미지에 대해서 매우 큰 공간 seperation 에 대해서 robust 하다. few dozen training samples 에 대해서 얻은 성능에 대해서도 합리적인 성능을 보여주었다. 위치의 정확도는 학습된 이미지의 spacing 이 증가함에 따라서 점차적으로 감소되는 경향이 있다. 반면 SIFT based 의 경우는 특정 threshold 를 넘어설때 SfM 은 극적으로 떨어지게 되며, 이는 작은 baseline 을 요구한다.

    importance of transfer learning

    일반적으로 convnet 에서 요구하는 것은 큰 양의 training data 이다. 우리는 sidestep 로 우리의 위치를 imagenet 이나 places 등 거대한 데이터 세트에서 pretrained 된 네트워크로 부터 자세를 학습하는 것으로 부터 시작했습니다. 분류 작업에 대해서 증명되었던것과 비슷하게 fig 10. 은 transfer learning 을 보여줍니다. 이는 효과적으로 분류와 복작합 regression tasks 를 transfer learning 할수 잇는지 보여줍니다. 가령 transfer learning 은 어디에서나 training classifiers 에 대해서 증명되었습니다. 그러나 여기서 우리는 transfer lenarining 이 분류학습으로 부터 질적으로 다른 pose regression task 임을 알 수 있습니다. 하지만 이는 즉각적으로 network의 output 에 대해서 pose 가 변하지 않는 classification label 이 trainined 됨이 명백합니다. 그러나 우리는 이것이 실제에서는 문제가 되지 않음을 발견했는데, 가능한 설명은 output 이 pose 에 대해서 invariant 하기 위해서 classifier network 는 pose 를 추적하는 것을 유지해야합니다.

    또한 위치만 학습시킨 네트워크보다 위치와 방향을 학습시킨 네트워크의 성능이 더 좋았습니다. data 에 대한 관계도 상당히 흥미로운데 fig 10 을 보면 places 와 imagenet curves 는 초기에는 같은 성능을 나타내다가 나중에는 places pretraining 의 성능이 가장 좋았습니다. 이는 이 데이터가 localization 과 가장 비슷한 task 를 수행하기 때문입니다.

    visualising features relevant to pose

    fig 11. 은 posenet 으로 부터 생성된 saliency maps 를 나타냅니다. saliency map 은 pixel 의 강도에 따른 loss function 의 grdient 의 크기를 나타냅니다. 이는 위치의 pixels 에 대한 sensitivity 로 사용되며, pixels 에 대한 얼마나 중요한 convnet 에서 고려되는 이미지의 다른 부분인지에 대한 지시자입니다.

    이 결과 강력한 반응은 주로 windows 와 spires 같은 higher level features 에서 얻어진 결과가 나타나 있습니다. 그러나 더 놀라운 결과는 posnet 이 textless 한 patches 인 예를 들면 길, 잔디, 하늘에 대해서도 매우 sensitive 하다는 것입니다. 이 textureless patches 는 더 높은 반응을 해주는 points 보다 더 중요하게 여겨지는데 이유는 그룹의 pixels 에서 pose variable 은 saliency map 값의 합의 변수이기 때문입니다.

    'Robotics' 카테고리의 다른 글

    [Ref] Path Planning Algorithms  (0) 2019.08.16
    scipy.signal.stft  (0) 2019.07.25
    RL to Robotics  (0) 2019.07.04

    댓글

Designed by Tistory.