Deep Learning/Computer Vision

[ Visual Language Navigation ] Visual Language Maps for Robot Navigation

mia Kang 2024. 6. 7. 03:55

 

※ 해당 글을 작성하게 된 이유,
Visual Language Navigation task 는 지속적으로 주목받고 있는 분야이기에 관련 논문 하나를 정리해보고자 작성합니다.
 (논문 그대로 해석한 것이 아닌 제 나름의 방식대로 해석해서 작성했음을 알리며 참고 바랍니다.) 

 

Chenguang Huang, Oier Mees, Andy Zeng, Wolfram Burgard, Visual Language Maps for Robot Navigation, ICRA(2023)

 


 

Summary
Visual language feature 와 3D reconstruction 정보를 융합한 spatial map 제안 = VLMaps
- Multi-object & Long-horizon goal navigation / Zero-shot spatial goal navigation 가능
- Embodied agent 한정 obstacle map 생성 가능

 

0. Opening

( * 먼저, Visual Language Navigation task 에 대해서 간략히 설명드립니다. )

 

Visual Language Navigation task 란, 실제 환경에서 자연어 명령으로 embodied agent 를 주행시키는 분야입니다.

 

1. Introduction

  • 고전적인 robot navigation 방법은 path planning 을 위한 geometric map 을 구축할 수 있고 자연어 명령으로부터 목표를 파싱할 수 있습니다.
    • 단, unseen instruction 에 대한 일반화가 어렵습니다.
  • learning method 는 navigation policy 를 최적화할 수 있습니다.
    • 단, 많은 양의 데이터가 필요합니다.
  • 사전 학습된 Visual Language Model ( = VLM ) 은 추가적인 데이터 없이 fine-tuning 이 가능합니다.
    • 단, 환경적 불일치 ( = spatial 정보 부족 ) 가 존재합니다.

   ▶  VLMaps 는 image observation 으로부터 사전 학습된 visual language feature 와 물리 세계의 3D reconstruction 정보를 융합한 spatial map 입니다. 

 

2. Method

A. Building a Visual-Language Map

VLMap 은 depth data 를 reconstruction 해서 얻은 3D 공간( = 3D reconstruction ) 상에 visual language model 로부터 얻은 pixel-level embedding 을 backproject 해 얻은 결과물입니다.

  • LSeg visual encoder 를 통해 각 pixel-level embedding 을 CLIP feature space 에 위치시킵니다.
    • LSeg 는 해당 논문에서 사용한 visual language model 로 RGB 이미지를 language-driven semantic segmentation 합니다.

 

Process of A. ( Figure 1: VLMap Creation 참고 )

Step0. VLMap 크기 정의

Step1~2. 3D reconstruction 과정

  • Step1. Local 및 Global depth point cloud 생성

$$ P_{k} = D(u)K_{}^{-1}\tilde{u} $$ $$ P_{W} = T_{Wk}P_{k} $$

  • Step2. Global depth point cloud 를 ground plane 에 projection 함으로써 grid map 에서의 depth pixel u 위치 획득

$$ p_{map}^{x} = \left \lfloor \frac{\bar{H}}{2}+\frac{P_{W}^{x}}{s}+0.5 \right \rfloor $$ $$ p_{map}^{y} = \left \lfloor \frac{\bar{W}}{2}-\frac{P_{W}^{z}}{s}+0.5 \right \rfloor $$

Step3~4. pre-trained visual language feature 획득 과정

  • Step3. LSeg visual encoder 이용, C 차원의 pixel-level embedding 획득
    • grid map 에서의 rgb pixel u 위치에 해당하는 embedding 값을 의미
    $$ q = F_{k}(u) $$
  • Step4. averaged embedding 값 획득
    • 2D grid map 기준으로 동일한 위치에 n개의 point cloud 들이 존재하기에, 동일한 물체를 여러 각도에서 바라본 embedding vector 의 평균값으로 result feature 정의

$$ M(p_{map}^{x}, p_{map}^{y}) = \frac{1}{n}\sum_{i=1}^{n}q_{i} $$

 

B. Localizing Open-Vocabulary Landmarks

VLMap 을 M 개의 category ( = landmark ) 로 localize 함으로써 최종 segmentation result 를 획득합니다.

 

Process of B. ( Figure 1: Landmark Indexing 참고 )

Step1. M 개의 category 설정

Step2. LSeg text encoder ( = pre-trained CLIP text encoder ) 이용, C 차원의 text embedding 획득

  • 이로써 M x C 차원의 text embedding matrix E 생성

Step3. VLMap 과의 pixel-to-category similarity 계산

  • 먼저, VLMap 을 flattened 함으로써 matrix Q 획득
  • matrix S 는 pixel 과 text category 사이 similarity 값을 가짐

$$ S = QE_{}^{T} $$

Step4. argmax 및 reshape 를 통해 최종 segmentation result 획득

Figure 1. System overview.

 

C. Generating Open-Vocabulary Obstacle Maps

서로 다른 embodiment 는 하나의 VLMap 을 공유하면서 각자에 맞는 obstacle map 을 생성할 수 있습니다.

  • mobile robot 은 table 을 피해서 주행해야 하지만 drone 은 table 위를 날아 주행할 수 있습니다.
    • 즉, 로봇에 따라 obstacle category 를 달리함으로써 각각의 obstacle map 을 만들 수 있는 것입니다.

 

Process of C.

Step1. Global depth point cloud 를 통해 obstacle map O 생성

  • floor 와 ceiling 관련 point 를 피해 embodiment 의 height 를 기준으로 필터링

$$ O_{ij} = \left\{\begin{matrix} 1, \, t_{1}\leq P_{W}^{y}\leq t_{2} \, and \, p_{map}^{x}=i \, and \, p_{map}^{y} = j& \\ 0, otherwise \end{matrix}\right. $$

Step2. M 개의 obstacle category 설정, 각 obstacle 별 M 개의 map 합침

Step3. floor region 을 고려한 union obstacle map 과 앞서 구한 obstacle map O 의 교집합을 통해 최종 obstacle map 획득

 

D. Zero-Shot Spatial Goal Navigation from Language

자연어 명령을 통해 실행 가능한 로봇 주행 코드를 생성할 수 있습니다.

  • navigation primitives 를 정의해둔 후, LLM 의 코드 생성 능력을 이용해 python 코드로 매핑합니다. ( Figure 2 & 3 참고 )
    • 이때, LLM 은 미리 생성해둔 VLMap 을 input 으로 받아 navigation primitives 를 호출합니다.
    • 그리고 이를 통해 로봇이 embodiment-specific obstacle map 내에서 주행하도록 하는 것입니다.

Figure 2. Input task commands in green and generated outputs are highlighted.

 

Figure 3. List of the navigation primitives used.

 

3. Experiments

A. Multi-Object & Long-Horizon Navigation / Zero-Shot Spatial Goal Navigation from Language

  • Object navigation task 는 agent ( = embodiment, robot ) 가 target object 에 도달하는 task 입니다.
  • Spatial goal navigation task 는 agent 가 spatial 정보를 인지하면서 target object 에 도달해야 합니다.

   ▶ prediction mask 에 따라 planning path 를 생성하기에 가장 false positive가 없는 VLMaps prediction mask 가 가장 좋은 성능을 보이는 것을 볼 수 있습니다. ( Figure 4 & Table 1, 2 참고 )

Figure 4. Object mask for object type "chair".

 

Table 1. The VLMaps-approach performs favorably over alternative open-vocabulary baselines on multi-object navigation (success rate [%]) and specifically excels on longer-horizon tasks with multiple sub-goals.

 

Table 2. The VLMaps approach can navigate to spatial goals specified by natural language and outperforms other open-vocabulary zero-shot navigation baseline alternatives (success rate [%]) in this setting.

 

B. Cross-Embodiment Navigation

서로 다른 embodiment 에 맞는 obstacle map 으로 navigation 했을 때의 actual path 를 shortest path 와 비교함으로써 효율성 측면에서 성능을 평가합니다. ( Figure 5 & Table 3 참고 )

Figure 5. VLMaps enable different embodiments to define their own obstacle maps for navigation.

 

Table 3. VLMaps generate different obstacle maps for different robot embodiments, conditioned on a list of obstacle categories. This improves object navigation efficiency (Success [%] weighted by Path Length, SPL).