ConceptGraphs: Open-Vocabulary 3D Scene Graphs for Perception and Planning 정리

Plato·2024년 2월 1일
0

딥러닝

목록 보기
18/21

용어

  • 의미 정보(semantic information)
    • point cloud로 표현한 거리 공간은 공간의 기하를 담는 것이지, 해당 공간의 '의미'를 담지 않는다. 해당 공간의 의미 혹은 의미 정보는 물체의 종류, 경계, 로봇이 해당 공간에서 혹은 해당 물체로 수행할 수 있는 작업의 종류 등을 말한다.
  • 의미 표현 벡터(semantic feature vector)
    • 의미 정보가 담긴 벡터.
  • 3D 의미-거리 공간
    • 3차원 거리 공간을 정의역으로 갖고 의미 표현 벡터를 공역으로 갖는 함수 ff가 존재하는 공간을 의미한다.
  • 3D 장면 그래프(3D scene graph)
    • 3차원 의미-거리 공간을 표현한 계층적 그래프
    • 한 계층에 속하는 꼭짓점은, 바로 위 계층, 아래 계층 혹은 동일한 계층의 꼭짓점과 변을 가질 수 있다.
    • 예시: 객체를 나타내는 꼭짓점으로 구성된 계층 위에 개별 방을 나타내는 꼭짓점으로 구성된 계층 위에 건물을 나타내는 꼭짓점으로 구성된 계층을 갖는 그래프

풀어내는 문제

  • RGB-D 이미지 수열을 처리하여 3D 장면 그래프(3D scene graph)를 생성하는 문제

이 논문을 선택한 이유

  • 3D 장면 그래프를 생성하는 방법을 다루기 때문
    • 3D 장면 그래프는 3차원 의미-거리 공간을 간결하게 나타내기 때문에, planner에 입력으로 제공하기 적합하다.
    • 또한, 사람이 이해할 수 있는 형태를 보이기 때문에 설명 가능하다는 장점도 갖고 있다.
  • 방법이 단순해 보이기 때문. Sutton이 쓴 글 쓰라린 교훈(bitter lesson)에서 그가 주장한, '일반적이며 단순한 탐색, 학습과 같은 방법이 도메인 지식에 의존하는 복잡한 방법보다 궁극적으로 좋은 결과를 낸다'는 것에 공감하기에, 단순하며 일반적이고 학습을 적극적으로 사용하는 방법을 찾고 있었다. 이 논문에서 제시한 방법이 필자가 찾는 방법이라는 희망을 품고 논문을 정리하기로 결정했다.

연관 논문

  • 3차원 공간에 닫힌 어휘(closed vocabulary) 의미를 대응시키기
    • 동시적 위치추정 및 지도 작성(SLAM)과 움직임 기반 구조(SfM)와 같은 방법을 사용하여 3차원 거리 공간을 재구성하고, 딥러닝 기반의 객체 탐지와 분할을 사용하여 재구성한 공간에 의미를 할당하는 연구는 활발히 진행되고 있다.
    • 다만 닫힌 어휘(ex. 분류할 수 있는 객체의 종류가 정해져 있음) 의미 정보를 대응시킨다는 한계를 갖고 있다.
  • 기초 모델(foundation model)을 사용하여 3차원 공간에 의미 할당하기
    • 초거대 언어 모델과 언어 비전 모델(Language Vision Model, LVM)을 사용해 open vocabulary 의미를 생성하는 연구는 존재함. 다만, 기초 모델을 학습하는 데 필요한 방대한 양의 3차원 데이터 세트를 확보하는 것은 현재 어려운 일이다.
    • 그렇기에 기초 모델이 이미지를 처리하여 얻은 의미 정보를 3차원 공간에 투영하는 연구가 많이 이뤄지고 있다.
    • 하지만 아래의 두 한계를 갖고 있다.
      • 3차원 공간의 모든 점/복셀에 의미 표현 벡터를 할당하는 것은 낭비다.
      • 고밀도(dense) 표현을 더 작은 구조로 나누기 어렵다
        • 표현이 계층적이지 않다는 것.
          • 구조가 없는 표현을 수정하는 것은 어렵기 때문에, 지도를 지속해서 업데이트해야 하는 상황에 대응하기 어렵다.
          • 또한 수행해야 하는 작업에 따라 특정 계층의 표현을 사용함으로써 작업의 복잡도를 낮출 수도 있다.
  • 3D 장면 그래프
    • 실시간으로 동적 3차원 장면 그래프를 만드는 방법은 존재한다. 다만, 닫힌 어휘를 사용한다는 한계가 존재한다.

논문이 제시하는 방법

  • 객체 기반 3차원 지도 제작
    • 객체 중심적 3차원 표현
      • RGB-D 수열이 주어질 때, 컨셉트-그래프(Concept-Graphs)는 3차원 장면 그래프 Mt=Ot,EtM_t=\langle O_t, E_t\rangle를 생성한다. 여기에서 Ot={oj}j=1...J\bold{O}_t=\{o_j\}_{j=1...J}Et={ek}k=1...k\bold{E}_t=\{e_k\}_{k=1...k}는 각각 객체와 변의 집합이다. 각 객체 ojo_j는 점구름 pojp_{o_j}와 의미 표현 벡터 fojf_{o_j}를 특징으로 갖는다.
      • 이 지도는 조금씩 생성된다. 이는 새롭게 들어오는 프레임 It=Itrgb,Itdepth,θt (색, 깊이, 포즈)I_t=\langle I^{rgb}_t, I^{depth}_t, \theta_t\rangle \text{ (색, 깊이, 포즈)}을 사용하여, 객체 집합 Ot1\bold{O}_{t-1}에 이미 있는 객체에 대한 정보를 추가하거나 새로운 객체를 추가하여 Ot\bold{O}_t를 생성하는 방식으로 진행된다.
    • 객체 분류에 의존하지 않는 2D 분할
      • 프레임 ItI_t를 처리할 때, 2D 분할 알고리즘을 사용하여 마스크의 집합 {mt,i}i=1...M\{m_{t,i}\}_{i=1...M}을 생성한다.
      • 각 마스크는 DINO와 CLIP과 같은 시각 표현 추출기(visual feature extractor)에 전달하여 시각 표현 ft,i=Embed(Itrgb,mt,i)f_{t,i}=Embed(I^{rgb}_t, m_{t,i})을 확보한다.
      • 각 마스크를 3차원 공간에 투영한 후 DBSCAN 클러스터링을 통해 노이즈를 제거하고 글로벌 좌표계를 사용하도록 변환한다.
      • 이 과정을 통해 점구름 pt,ip_{t,i}과 이에 대응되는 의미 표현 벡터 ft,if_{t,i}를 얻을 수 있다.
    • 객체 연관(object association)짓기
      • 프레임에서 얻은 새로운 객체 pt,i,ft,i\langle p_{t,i}, f_{t,i} \rangle와 기하적으로 겹치는(geometric overlap) 기존 객체 ot1,jo_{t-1,j} 와의 의미적, 기하적 유사성을 계산하여, 새로운 객체와 제일 유사성이 높은 기존 객체를 연관 짓는다 (동일한 객체로 판단한다). 기존의 모든 객체와의 유사성이 임계점 δsim\delta_{sim}보다 작다면, 새로운 객체로 추가한다.
        • 기하적으로 겹치는지 아닌지 결정하는 방법에 대한 설명은 없다.
        • 이 방법으로 인해 생기는 문제는 이 글의 '한계' 섹션을 참고하자.
      • 유사성 ϕ(i,j)=ϕgeo(i,j)+ϕsem(i,j)\phi(i,j)=\phi_{geo}(i,j) + \phi_{sem}(i,j)
        • 기하적 유사성 ϕgeo(i,j)=nnratio(pt,i,poj)\phi_{geo}(i,j)=\text{nnratio}(p_{t,i}, p_{o_j})은 점구름 pt,ip_{t,i}의 점 중에서 pojp_{o_j}와의 최근접 이웃이 임계 거리 δnn\delta_{nn} 안에 위치한 비율이다.
        • 의미적 유사성 ϕsem(i,j)=ft,iTfoj+12\phi_{sem}(i,j)=\frac{f^T_{t,i}f_{o_j}+1}{2}은 정규화된 코사인 유사도이다.
    • 객체 융합(object fusion)
      • 연관 지은 두 객체를 융합하여 하나의 객체로 만든다.
      • 의미 표현 벡터 융합
        • foj=(nojfoj+ft,i)(noj+1)f_{o_j} = \frac{(n_{o_j} f_{o_j} + f_{t,i})} {(n_{o_j} + 1)}
          • nojn_{o_j}ojo_j가 연관된 횟수를 나타낸다.
      • 점구름 융합
        • pojpt,ip_{o_j} \cup p_{t,i}를 다운 샘플링하여 융합한다.
    • 노드 설명글 생성(captioning)
      • 모든 이미지 수열을 처리한 후, Large Vision Language Model(LVLM)을 사용하여 객체에 대한 설명글을 생성한다.
      • 설명글 생성 방법
        • 각 객체에 대해, 최고로 잘 나온 사진 10개를 고른다.
          • 사진 평가 방법: 각 사진이 해당 객체에 대응되는 점구름에 기여한 점의 수를 기록하여 제일 많이 기여한 10개의 사진을 고름.
        • 고른 사진에서 객체를 자른다(crop).
        • LVLM에 자른 사진과 "describe the central object in the image" 프롬프트를 입력으로 줘서 설명글 c^j={c^j,1,c^j,2,c^j,3,...,c^j,10}\hat{c}_j=\{\hat{c}_{j,1},\hat{c}_{j,2},\hat{c}_{j,3},...,\hat{c}_{j,10}\}을 생성한다.
        • LLM에 c^\hat{c}c^\hat{c}을 요약하라는 프롬프트를 입력으로 줘서 최종 설명글을 생성한다.
  • 장면 그래프 생성
    • 위 과정을 거쳐 생성한 객체 간의 관계를 파악하여 그래프의 변으로 추가한다.
    • 각 객체의 3차원 경계 상자를 계산한 뒤, 모든 객체 쌍에 대해 IOU를 계산한다. 이 IOU를 두 객체를 잇는 변의 가중치로 본다.
    • 이렇게 얻은 그래프의 최소 신장 트리를 확보한다. 이를 통해 변의 수를 줄임으로써, 그래프의 복잡도를 낮출 수 있다.
      • 특히 그래프의 연결성은 유지한다는 점에서, 모든 객체가 직/간접적으로 연결된다는 장점이 있다.
    • 변으로 이어진 두 객체의 공간적 관계(spatial relationship, 예시: 한 객체가 다른 객체 위에 있다)를 설명하라는 프롬프트와 두 객체의 설명글 그리고 3차원 위치를 LLM에 입력으로 줌으로써 두 객체 간의 관계를 확보한다.
      • 다른 프롬프트를 사용하여, 공간적 관계가 아닌 다른 관계 또한 확보할 수 있다.
    • 이 단계까지 수행하면, MT=(OT,ET)M_T=(\bold{O}_T,\bold{E}_T)를 확보할 수 있다.
  • LLM을 통한 로봇 계획 수립
    • 자연어로 설명된 작업을 수행할 수 있도록, 장면 그래프 MTM_T와 LLM을 사용한다. OT\bold{O}_T의 각 객체에 대해, JSON 형식으로 객체의 3차원 위치(경계 박스)와 설명글을 구성한다. 작업을 수행하는 데 중요한 객체를 선택하도록 LLM에 프롬프팅한다. 이렇게 선택된 객체의 3차원 위치를 다음 모듈에 제공한다.
  • 구현 세부 사항
    • 이미지 분할은 SAM으로 수행
    • 표현 추출은 CLIP으로 수행
    • LLaVA를 LVLM으로 사용
    • GPT-4를 LLM으로 사용
    • 점구름 다운샘플링을 위한 복셀 크기와 최근접 이웃 임계점 δnn\delta_{nn}은 둘 다 2.5cm
    • δsim=1.1\delta_{sim}=1.1
    • ConceptGraphs-Detector(CG-D)라는 이름의 다른 시스템도 개발하여 실험해봄
      • 이미지 분할 모델을 사용하지 않음.
      • 이미지 태그를 생성하는 모델 (RAM)로 객체 리스트를 확보하고 열린 어휘(open-vocabulary)를 갖는 2차원 객체 탐지기(Grounding DINO)를 사용하여 경계 상자를 확보함.
      • 이 시스템은, 배경을 따로 처리하는 모듈이 필요하다는 단점이 있음

실험

  • 장면 그래프 생성
    • 열린 어휘를 갖기 때문에, 자동으로 평가하기 어려움. 그래서 사람이 평가함.
    • 꼭짓점의 정밀도
      • 명 중에서 2명 이상의 평가자가 꼭짓점의 설명글이 맞다고 판단한 비율
      • 평균적으로 70% 정도의 정밀도를 보임
        • 상당 부분의 오류는 LVLM으로 인해 발생함.
    • 타당한 객체(valid objects)
      • 꼭짓점이 타당한 객체를 나타내는지에 대한 평가자의 답변.
      • 각 장면마다 0~5개 정도의 중복 탐지가 발생함.
    • 변의 정확도
      • 90% 정도의 정확도를 보임.
      • 정확도를 어떻게 계산했는지 나와 있지 않음.
  • 3차원 의미 분할
    • 3차원 지도의 품질을 평가하기 위해, 3차원 의미 분할 작업을 수행하고 평가함.
    • 이 글에서 평가 방법은 생략함.
      • 이유: 필자는 3차원 지도의 생산이 필수적인지 의문을 품고 있기에 이 부분에 큰 관심을 두고 있지않음.
    • 의미 분할 수행 방법
      • 객체 종류 집합이 주어질 때, "an image of {종류}"를 프롬프트로 CLIP에 줘서 얻은 feature와 ConceptGraphs가 생성한 꼭짓점 feature의 유사성을 계산하여, 제일 높은 유사성을 갖는 꼭짓점에 해당 종류를 할당함.
        • 정확히는 꼭짓점에 대응되는 점구름에 해당 종류를 할당한 것.
  • 자연어로 객체를 검색하는 능력 평가
    • 세 종류의 질의를 사용
      • 설명적(Descriptive): ex. "화분에 있는 식물"
      • 가능한 동작(Affordance): ex. "부서진 지퍼를 임시로 붙이기 위해 사용할 수 있는 것"
      • 부정(Negation): ex. "소다를 제외한 마실 수 있는 것"
    • 평가 데이터 세트
      • Replica 데이터 세트
      • 몬트리올 연구실의 3차원 스캔
      • 각 질의에 대응되는 객체가 한 개 이상 장면에 존재하도록 질의어를 만듦.
    • 검색 방법
      • CLIP
        • 질의를 임베드한 후 유사도가 제일 높은 표현을 갖는 객체 선택
        • 장점: 설명적 질의를 줬을 때 객체 검색 능력이 뛰어남.
        • 단점: 가능한 동작과 부정 질의를 줬을 때 잘못된 객체를 선택하는 경우가 아래의 LLM을 통한 객체 선택에 비해 많았음.
      • LLM
        • 질의어와 객체의 설명글 그리고 적절한 프롬프트를 LLM에 줘서 객체 선택
  • 복잡한 자연어/시각적 질의어로 검색하는 능력 평가
    • 실제 환경에서 실험함
      • VLP-16 라이다와 Realsense D435i를 센서로 사용
    • 현재 카메라 이미지를 LVLM에 넣어서 설명글을 생성한 뒤, 이 생성글을 LLM에 프롬프트와 함께 넣어주면 시각적 질의에도 답변할 수 있다.
      • 예시: 마이클 조단 사진과 함께 질의 "이 사람이 갖고 놀만한 물건"을 제공하면 로봇이 농구공을 찾음.
  • 객체로 이동하는 작업과 횡단 가능성 판단 작업 수행 능력 평가
    • 객체로 이동하기
      • 질의가 주어졌을 때, 질의에 대응되는 꼭짓점을 찾고 해당 위치로 이동한다. 이때 만약 객체가 없다면, 3차원 장면 그래프에 존재하는 다른 객체의 설명글을 LLM에 줘서 대응되는 객체가 있을 만한 장소를 파악한 뒤 해당 위치로 이동하도록 만듦.
        • 상자와 같이 물건을 담아둘 수 있는 곳을 고려하도록 LLM에 프롬프팅함.
    • 횡단 가능성 추정
      • 로봇이 객체에 둘러싸여 있는 상황에서, 주변 객체를 안전하게 밀면서 목표 상태로 도달하는 작업
      • LLM이 안전하게 밀 수 있거나 횡단할 수 있는 객체와 너무 무겁거나 로봇의 움직임을 방해할 만한 객체가 무엇인지 식별하도록 프롬프팅함.
  • 위치 추정과 지도 업데이트
    • ConceptGraphs 지도에서 입자 필터를 사용하여 위치 추정한 뒤, 위에서 설명한 방법으로 객체를 연관 지음으로써 새롭게 객체를 추가하거나 없어진 객체를 삭제할 수 있음.

의문점

  • 3차원 장면 그래프의 객체와 새로 들어온 프레임에서 인식한 객체를 연관 짓기 위해 3차원 거리 공간을 복원한다. 이게 꼭 필요한 게 맞나? 정확히는 연관 지을 수 있는 객체인지 판단하고 기하적 유사성을 계산하기 위해 3차원 거리 공간이 필요한 것.
    • 기하적으로 겹치는 객체만 연관 짓는 게 맞나?
      • 기하적으로 겹치지 않는 객체를 연관 지을 수 없나?
    • 기하적 유사성이 필요한 게 맞나?
    • 기하적 유사성이 필요하다면, 3차원 거리 공간을 복원하지 않고서 수행할 방법이 있을까?
  • 10개의 설명글을 작성한 다음에 LLM이 요약하게 할 필요가 있을까?
    • 한 개의 설명글만 작성하거나 요약하지 않아도 괜찮지 않았을까?
  • 객체를 잇는 변을 생성할 때, 일차적으로 IOU를 가중치로 사용한다. 왜 이렇게 만든 거지?
    • MST를 확보하여 변의 수를 줄이기 때문에 IOU가 높은 두 객체를 잇는 변이 생기지 않도록 유도하는 것과 같다.
      • 아 두 객체가 너무 겹치면 두 객체를 잇는 변이 생기지 않게 하는 거구나. 많이 겹치는 객체 간의 관계가 덜 중요하다고 판단한 이유가 뭘까?
  • 객체의 3차원 위치는 어떻게 확보했지?
    • 생성한 점구름을 입력으로 받는 3차원 이미지 처리 모델을 사용했나?
  • 지도 제작 알고리즘으로 지도를 생성하려면 공간을 탐색할 수 있어야 하는데, 어떻게 탐색했지?

한계

  • 객체를 연관 지을 때, 새로운 객체와 기존 객체의 점구름이 '충분히' 겹쳐야, 동일한 객체로 인식한다. 그렇기에 객체가 빠르게 움직이거나, 로봇이 감지하지 않는 부분에서 객체가 충분히 움직이면 동일한 객체로 인식하지 못할 것이다.
    • ex) 화장실의 지도를 제작한 뒤, 로봇이 다른 환경으로 이동했다고 하자. 만약 이때 화장실의 샴푸를 기존의 위치와 겹치치 않도록 충분히 옮기면, 로봇이 다시 화장실로 돌아왔을 때, 새로운 샴푸가 생겼다고 판단할 것이다.
  • 3차원 지도를 생성하는 중에 객체를 옮기면 점구름이 이상하게 생성될 수 있다.
  • ConceptGraphs를 통해 얻은 그래프의 노드는 모두 객체를 나타냄. 개인적으로 3차원 장면 그래프의 계층적 구조가 큰 의미를 갖는다고 생각하기에, 모든 노드가 동일한 계층에 속하는 3차원 장면 그래프를 생성하는 것이 아쉽다.
  • 동적 그래프를 생성할 수 없다는 것 또한 아쉬운 부분이다.
    • 사람/동물/이동 수단이 계속해서 움직이고 사물을 가리고 동일한 대상이 시야각에 자유롭게 들락거리는 동적인 환경에서 이 방식이 제대로 동작하리라 기대하기 어렵다.
  • LLM으로 계획 수립하는 건, 작업 수행에 제일 중요한 객체를 고르는 것이 전부. 이건 사실 객체 검색에 가까운 듯.
  • Downstream 작업에 따라 물체의 설명글과 경계 상자로는 충분하지 않을 수 있다. 다양하고 섬세한 manipulation및 active perception(ex. 샴푸 통이 얼마나 차있는지 알기 위해 흔들기)을 수행하는 데 필요한 feature를 사람이 엔지니어링하는 것은 좋지 못한 방법이다. 저수준의 manipulation을 학습하는데 필요한 데이터 세트를 구성하는 것이, 고수준의 작업 계획을 수행하는 모듈을 학습하는데 필요한 데이터 세트를 구성하는 것 보다 쉬울 것이다. 그렇다면, 애초에 3차원 경계 상자가 필요한지 의문. 그냥 해당 객체의 위치를 얼추 나타내는 3차원 점 하나만 있어도 충분하지 않을까?
  • 노드의 설명글이 작업 특정적이지 않다.
  • 실험의 문제
    • 장면 그래프 생성 실험의 한계
      • 타당한 객체를 나타내는 꼭짓점의 수를 공개했지만, 장면에 실제 존재한 객체의 수가 몇 개인지는 공개하지 않음. 이러면 실제 존재하는 객체 중에, 시스템이 식별한 객체가 얼마나 되는지 파악할 수 없기에 성능을 평가하기 어려움.
    • 객체 검색 실험의 한계
      • 질의어에 대응되는 객체가 장면에 한 개 이상 존재하도록 질의어를 생성함. 그렇기에 질의어에 대응되는 객체가 없을 때, 어떻게 동작할지 판단할 수 없음.

0개의 댓글