Pollen-Vision: ロボティクスにおけるゼロショットビジョンモデルの統一インターフェース
Pollen-vision は、未知の物体を把握できるロボットの自律性を提供することを目的としたオープンソースライブラリです。キュレーションされたゼロショットビジョンモデルのコレクションを提供し、事前学習なしで物体の空間座標 (x, y, z) を推定できる 3D 物体検出パイプラインの構築を可能にします。
Pollen-Vision におけるコアビジョンモデル
コンシューマ向け GPU での汎用性とリアルタイム性能を確保するため、ライブラリは以下の 3 つの主要なゼロショットモデルを統合しています。
- OWL-ViT (Open World Localization - Vision Transformer): Google Research が開発したこのモデルは、テキスト条件付きで RGB 画像中の 2D 物体位置を検出し、バウンディングボックスを出力します。
- Mobile SAM (Segment Anything Model): Meta AI の SAM の軽量版で、バウンディングボックスやポイントでプロンプトされたときにゼロショット画像セグメンテーションを提供します。
- RAM (Recognize Anything Model): OPPO Research Institute が作成した RAM は、テキスト記述に基づいて画像中の物体の有無をゼロショットでタグ付けし、他モデルの性能最適化に役立ちます。
3D 物体検出パイプラインと実装
pollen-vision は、独立したモジュールを組み合わせて 2D 画像データを 3D 空間座標に変換するパイプラインを構築できるようにします。
2D 検出からセグメンテーションへ
ライブラリを使用すると、OWL-ViT が物体(例: "paper cups")を検出しバウンディングボックスを生成し、その結果を Mobile SAM に渡して精密なセグメンテーションマスクを作成するパイプラインを構築できます。
3D 位置の算出
2D 画像を 3D 座標に変換するために、ライブラリは以下のプロセスを利用します。
- 重心推定: バイナリセグメンテーションマスクの重心を計算し、ピクセル空間上の (u, v) 位置を求めます。バウンディングボックスではなくマスクを使用することで、背景ピクセルが深度平均を歪めるのを防ぎます。
- 深度統合: ピクセル座標と深度情報(メートル単位)およびカメラの内部行列 (K) を組み合わせ、カメラ座標系における物体重心の (x, y, z) 位置を算出します。
- ロボットフレームへの変換: カメラ位置がロボット原点に対して既知であれば、座標をロボットフレームに変換し、エンドエフェクタが物体位置へ移動して把持できるようにします。
パフォーマンスと最適化
OWL-ViT の推論時間はプロンプト数に応じて変化します。RTX 3070 GPU 搭載のノートパソコンで測定したレイテンシは以下の通りです。
- 1 プロンプト: ~75ms/フレーム
- 2 プロンプト: ~130ms/フレーム
- 5 プロンプト: ~330ms/フレーム
- 10 プロンプト: ~650ms/フレーム
このようにレイテンシが線形に増加するため、RAM モデルを先に使用して画像中に存在する物体だけを特定し、OWL-ViT に対するプロンプトを絞ることで処理速度を最適化しています。
現在の制限事項と今後のロードマップ
pollen-vision は基本的なロボット操作の土台を提供しますが、Pollen Robotics チームは以下の改善点を挙げています。
- 検出の一貫性: OWL-ViT は一貫性に欠け、すべての物体を検出できないことがあります。より優れた代替手段の探索が進められています。
- 時間的・空間的一貫性: 現在はフレームごとに全データを再計算しています。ポイントトラッキングを統合して一貫性を向上させる作業が進行中です。
- 把持の高度化: 現在は前方把持に限定されています。将来的には 6D 検出と把持姿勢生成の改善を目指します。
- システム速度: パイプライン全体の実行速度向上の余地があります。