【流し読みできる論文解説】 Robotics Transformer (RT-1)

# 注意書きなど
:::note warn
本記事の説明はかなり簡略化してる為、論文の本質と若干異なる可能性があります。流し読み用としてご利用くださいませ。
:::

# RT-1とは
### RT-1って何？
> Google Researchが考案した**様々なタスクに対応**したロボット制御モデル

### RT-1って何がすごいの？
- 画像 + 言語指令(<INS>マルチモーダル</INS>)でロボットアームを動かせるよ
- <INS>ばかでかデータセット</INS>で学習させてるよ
- 様々なタスクを<INS>高精度</INS>で実行できたよ
- <INS>リアルタイム</INS>で推論できるよ

RT-1が含まれている*Open X-Embodiment: Robotic Learning Datasets and RT-X*という論文は最近行われたICRA2024でIEEE ICRA Best Conference Paper Awardを受賞

![Screenshot 2024-05-22 004713.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569952/9c303baa-1c82-ef1c-1d0a-eed3cd1c87a2.png)
<font color="LightSlateGray"> *Supplementary video for RT-1: Robotics Transformer for Real-World Control at Scale*より引用　</font>
>700個のタスクを13種類のロボットで13万回って…😇

# 仕組み

RT-1は以下の要素を組み合わせてできています：
- Universal Sentence Encoder
- EfficientNet
- Feature-wise Linear Modulation (FiLM)
- TokenLearner
- Positional Encoding
- Transformer

それぞれ超ざっくり解説していきます。

## Universal Sentence Encoder

RT-1は言語指令を取り扱うため、自然言語を処理(ベクトル化)する**エンコーダ**というものが必要になります。

### Universal Sentence Encoder (USE)って何？

> Googleが作った強い**エンコーダ**（雑）
- 様々な言語を同じように処理できるよ

https://arxiv.org/abs/1803.11175

## EfficientNet

RT-1は画像入力も取り扱うため、画像を処理(特徴摘出)する**CNNアーキテクチャ**というものが必要になります。

### EfficientNetって何？

> Googleが作った強い**CNNアーキテクチャ**（雑）
- ばかでかデータセット(ImageNet)で事前学習させたものを使用
- 少ないパラメータ数と比較的シンプルな構造ですごいパフォーマンスを叩き出してるよ

https://arxiv.org/abs/1905.11946

## Feature-wise Linear Modulation (FiLM)

RT-1は画像と言語を統合するためにFiLMというものを使っています。

### FiLMって何？
> 外部の情報を元に特徴をいじる(線形変調)手法
- RT-1ではEfficientNetで摘出した画像の特徴をUSEで処理した言語情報を元にいじってるよ
    - 画像から<INS>言語指令に関連した特徴を摘出</INS>するようにいじってるイメージ？
- CNNアーキテクチャの中間層に**FiLMをぶち込むだけでマルチモーダル**（RT-1の場合だと画像+言語）にできるよ

https://arxiv.org/abs/1709.07871

## TokenLearner

RT-1はリアルタイムで推論したいため 、TokenLearnerという手法を使って計算コスト減らしています。

### TokenLearnerって何？
> 重要なトークン（画像や言語を単位に分割したもの）だけを選別して**トークン数を減少・圧縮**する手法
- RT-1ではFiLM Conditioned EfficientNet（画像処理に言語情報盛り込んだもの）が出力した特徴をトークン化したもの(Vision-Language Tokens)を圧縮しているよ

https://arxiv.org/abs/2106.11297

## Positional Encoding

RT-1の一部であるTransformer(次に解説するもの)はPositional Encodingという入力の前処理が必要になります。

#### Positional Encodingって何？
> トークンに**位置/順序情報**を盛り込む手法

- 位置情報が無いと以下のようなことが起こりうる：
    - 「勉強楽しい」をトークン化したものを「勉強」「楽しい」だとすると「勉強楽しい」と「楽しい勉強」では表現が違うのに同じ特徴が得られてしまう

- RT-1ではTokenLearnerで圧縮されたトークンをTransformer(次に紹介するもの)に渡すが、その前に必ずpositional encodingでトークンに位置/順序情報を与えないといけない
    - Transformerは位置情報を犠牲にしているため（RNNのようにトークンの順序を処理する仕組みが無い）

## Transformer

後は摘出した画像言語トークン(TokenLearnerで圧縮したもの)をロボット指令に変換する方法が必要になります。

### Transformerって何？

> 系列の**依存関係を見つけて意味や文脈を学習**するすごいモデル


- 一般的なTransformerはエンコーダ+デコーダで構成されているよ
    - エンコーダ部分が入力シーケンスの依存関係を学習
    - デコーダ部分はエンコーダ部分の出力を元に新しいシーケンスを推論/生成

- RT-1は**デコーダ部分**だけを使用
- RT-1は画像言語情報(TokenLearnerで圧縮したもの)をデコーダに渡してロボット指令(系列)に変換してるよ

# 全体像を見てみよう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569952/da8aa25d-35d2-3fc2-9ae9-56b4f511299e.png)

### RT-1全体の流れ
1. 言語指令がUSEで処理(ベクトル化)される
1. 6枚の入力画像をそれぞれ違うEfficientNetにぶち込む
1. FilMを使ってEfficientNetが出力する画像特徴を処理された言語指令を元にいじる（EfficientNetが画像言語情報を出力するように）
1. FilMを適用したEfficientNetが出力する画像言語特徴をトークン化し、それをTokenLearnerで圧縮
1. それぞれのTokenLearnerが出力したものを一つにまとめる（FiLMを適用したEfficientNetとTokenLearnerのセットが画像(計６枚)ごとにあるため、計６層用意している）
1. まとめられた画像言語トークンに位置/順序情報を付与
1. 位置情報付き画像言語トークンをTransformerデコーダにぶち込むとロボット指令が出力される

### 流れのまとめ

![RT-1Flow.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569952/89bcdc04-972c-52c7-8d2a-8754951993ed.png)

# まとめ
- Robotics Transformer 1 (RT-1)はGoogle Researchが考案した様々なタスクを高精度で遂行できるマルチモーダル(言語+画像)ロボット制御モデルだよ
- USEで言語処理、EfficientNetで画像処理、FiLMで統合、TokenLearnerでトークン圧縮、Transformerでロボット指令出してるよ

## 最後に
模倣学習はやはり面白い。
次回は*Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware*という論文にある **Action Chunking with Transformers**という模倣学習方をざっくり解説しようと考えてます。スタンフォードのALOHAロボットで使われてるやつです。

https://tonyzhaozh.github.io/aloha/

# 参考文献
- https://2024.ieee-icra.org/awards-and-finalists/
- https://www.youtube.com/watch?v=UuKAp9a6wMs
- https://arxiv.org/abs/1803.11175
- https://arxiv.org/abs/1905.11946
- https://arxiv.org/abs/1709.07871
- https://arxiv.org/abs/2106.11297
- https://machinelearningmastery.com/a-gentle-introduction-to-positional-encoding-in-transformer-models-part-1/
- https://qiita.com/omiita/items/83643f78baabfa210ab1