CLIP-Fields:基盤モデルによるセマンティックな表現とニューラル場の統合
「基盤モデル×Robotics」 Advent Calendar 2022 5日目
はじめに
こんにちは! 松尾研究室学部4年の池田悠也です。
今日の記事では、CLIPなどの大規模モデルとNeRFのようなニューラル場表現を組み合わせることでセマンティックな表現を空間に保持し、ロボットのタスクへと活用する論文であるCLIP-Fieldsを紹介します。
目次
CLIP-Fieldsは何ができる?
CLIP-Fieldsを用いた学習を行うと、マップ上の空間的位置に対応するセマンティックな表現ベクトルを得ることができます。それにより、セグメンテーション、ナビゲーション、ビジュアルローカライゼーションなどのタスクを実行することができます。
セグメンテーションの例(出典:CLIP-Fields 説明動画)
言語指示によるナビゲーションを行う例(出典:CLIP-Fields: Weakly Supervised Semantic Fields for Robotic Memory)
CLIP-Fieldsは何がすごい?
私が考えるCLIP-Fieldsのすごさは主に以下の2点です。
・人手によるラベル付けを必要としない1点
CLIPやSentence BERTなどの学習済み大規模モデルから得たセマンティックな表現(意味的表現)を使用して学習を行うため、人手によるラベリングデータは必要ありません。
・情報を統合することでロボットにとって利用しやすくしている点
セマンティックな表現と空間的位置の対応をニューラル表現で学習することで、情報を統合して扱うことができるようになるため、高い精度でタスクの実行を可能になっています。
使用する基盤モデル
CLIP-Fieldsで使用される基盤モデルを紹介します。
CLIP
CLIPは2021年2月にOpenAIによって公開された、言語と画像の大規模マルチモーダルモデルです。詳細はアドベントカレンダーの2日目の松嶋達也さんの記事をご覧ください!
Detic
Deticは2022年1月にMetaAIによって公開されたセグメンテーションモデルです。ImageNet21kの1400万枚もの画像で学習しており、20000以上のクラスを識別可能です。また、CLIPの特徴量を使用することで任意のラベルを検出することができるようになります。
Sentence BERT
Sentence BERTは2019年8月に発表された自然言語処理モデルです。Sentence BERTを使うと自然言語の文を数値化(ベクトルへ変換)することができ、文章同士の演算が可能となります。
CLIP-Fieldsの概要
それでは実際にCLIP-Fieldsの概要について説明していきます。
データセット
まずはデータセットの作成方法について説明します。まず環境に対して、オドメトリ付きで記録されたRGB-D画像セットを準備します。続いて、図2の枠組みでデータセットを作成していきます。
まず、RGB画像に対しDeticを用いてセグメンテーションを行います。
さらに、セグメンテーションにより得られた各ラベルと各バウンディングボックスに対してそれぞれSentence BERTとCLIPを適用し、セマンティックなラベル表現ベクトルとCLIP特徴ベクトルを得ます。
この処理を各画像に対して行ったのち、各画像およびセマンティック表現を三次元空間に投影します。具体的には、オドメトリ情報とカメラパラメータが既知であるため、RGB-D画像をワールド座標系の点群に変換することで実現します。
この処理を行うことで、ラベルデータセットと画像データセット D label = {(P, labelP, confP)}と D image = {(P, clipP, distP)} を得ることができます。
ここで、P は点群を、labelP はラベル表現ベクトルを、clipP はCLIP特徴ベクトルを表します。また、confP はセグメンテーション時のラベル信頼度を、distP はカメラからの距離です。
モデルアーキテクチャ
続いて、モデルアーキテクチャについて説明します。CLIP-Fieldsのモデルは根幹部分とヘッド部分から構成されます。図3がモデルアーキテクチャ図です。
根幹部分は空間の位置座標を共通表現ベクトル2に変換するニューラル場になっています。その際に、InstantNGP3という論文で提案されたMultiresolution Hash Encodingというアルゴリズムを用いています。
ヘッド部分はバックボーン部分で取得した共通表現ベクトルを単純な2層のMLPを用いて、ラベル表現ベクトルやCLIP特徴ベクトルなどの具体的なセマンティック表現に変換します。
学習
CLIP-Fieldsでは対照学習という枠組みを用いて学習を行なっています。 モデルの出力とデータセットの正解および不正解間の類似度を計算することで、似たデータを近づけ異なるデータを遠ざけるように学習を進めることができます。
検証結果
セグメンテーション性能の観点での検証と、ロボットを使用したナビゲーション実験検証の2種類を行なっています。
セグメンテーション
まず、既存の2Dセグメンテーションモデルとの比較を行なっています。比較対象は、ResNet50-FPNのバックボーンを持つMask-RCNNとResNet50のバックボーンを持つDeepLabV3です。今回の検証では人間によるアノテーションデータを使っています。
インスタンスセグメンテーション、セマンティックセグメンテーションの両方でCLIP-Fieldsの性能が比較対象を上回っていることが検証されました。
また、ニューラル場表現を用いて学習することの利点を調査するために、ベースラインとしてDeticだけを用いたものと比較実験を行なっています。今回の設定では人間によるアノテーションデータを使用していません。
結果を見ると、テスト時の予測が大幅に改善されており、ニューラル場を用い多視点での一貫性を持たせることが、シーン特性の学習に有効であることがわかります。また、3Dに情報を統合することで部分的に見える物体の識別性能が上がっていると考えられます。
ロボットを使用したナビゲーション
学習したシーン表現が本当にロボットタスクに適しているかを、実機を使って検証しています。
タスク設定としては、自然言語でクエリが与えられるたときに、対応した場所にナビゲーションするというものです。
ナビゲーションの手順としては、クエリをSentence BERTとCLIPテキストモデルを使い、ラベル表現ベクトルとCLIP特徴ベクトルに変換します。そして、学習したCLIP-Fieldsから得られるセマンティック表現との内積が最大となる領域を求め、そこをゴールとして移動することでナビゲーションを行います。
図7がナビゲーションタスク検証の結果です。“Warm up my lunch"などの間接的な指示でもナビゲーションタスクが成功していることが分かります。
動かしてみた
CLIP-Fieldsの実装を動かしてみました。
環境構築にやや手間取ったので自分が再現できた手法をまとめておきます。
再現実装手順
ダウンロードしてきたサンプルデータを学習してみました。 RTX3090を用いて100epoch学習を行い、学習時間は4時間程度でした。
ちゃんと学習できてそうですね!
少し分かりにくいですが、確かに対応する箇所にクエリが表示されています。
今回はサンプルデータの学習でしたが、Lidar付きのiPhoneがあればRecord3Dというアプリを使うことで自分で撮影したシーンを試すことができます4。
まとめ
CLIP-Fieldsは、基盤モデルで得たセマンティックな表現をニューラル場に埋め込むことで、ナビゲーションタスクを行えることを示しました。 このニューラル場に重要な表現を埋め込むという枠組みを応用すると、行うことのできるタスクの幅をより広げられると考えられます。 さらに、ニューラル場の特徴である三次元表現や微分可能性に注目したプランニングなどの応用にも期待できそうです。
また、CLIP-Fieldsのような既存の大規模モデルをロボットにうまい形で適用する研究は最近盛んである一方で、ロボット用の大規模モデルがどのようなものであるべきかという研究はあまりされておらず、そこを探ることも今後重要になってくると感じます。
論文中には人手によるラベリングデータを用いてより効率的に学習を進める方法も提案されています ↩︎
図3ではLocation vectorと言われていますが、うまく訳せず共通表現ベクトルと言っています ↩︎
Instant Neural Graphics Primitives with a Multiresolution Hash Encoding ↩︎
もちろんオドメトリ付きのRGB-D画像を用意することでも独自シーンを学習できます ↩︎