論文紹介『Point Transformer』

今回は点群データに対してTransformerを適用する『Point Transformer』という論文を紹介します。

出典 : https://arxiv.org/abs/2012.09164

前書き

近年、自然言語処理を筆頭にコンピュータビジョンや音声認識など、Transformerが様々な分野で成果をあげています。Transformer自体の詳細な解説は他記事に譲りますが、一つ重要な性質として、Transformerでは位置エンコーディングによって系列の順番情報を入力しています。すなわち、位置エンコーディングを除くと入力情報の系列位置関係を無視することになり、順序を無視した集合に対する操作として見なすことができます。

集合としてのデータとしては、たとえば点群データが挙げられます。レーザーセンサなどで得ることができる座標(x, y, z)を持つ点群については、各点の測定順番や入力順番は重要ではなく、点全体を集合として考慮することで全体の形状などを把握するのに役立つと考えられます。

集合に対する処理をニューラルネットワークで実現することは意外と難しく、Maxプーリングや、要素和の計算などによりなんとか対処されていました。そんな中、Transformerが有効な手段になるのではないかという研究が今回紹介する『Point Transformer』となります。

Point Transformerの手法

Transformer内のSelf-Attentionモジュールにおいて、Attentionを計算する手法にはいくつかバリエーションがあります。Point Transformerでは通常のAttentionとやや異なり、

  • クエリ、キーからの計算において、内積ではなく差分を取って線形変換を行う
  • 通常の位置エンコーディングの代わりに、点データとしての相対位置を変換して加算する
  • 集約時にベクトルの各要素ごとの積を用いる

という特徴を持ちます。

詳しく見てみましょう。基本的なPoint Transformerブロックの構造は以下の図で示されます。

正確な式は以下の通りです。ここでΧ(i)は点xiの近傍の点集合となります。

φ,ψはそれぞれ通常のSelf-Attentionにおけるクエリ、キーに相当する変換であり、αがバリューに相当する変換となります。そのあたりは通常のAttentionと変わりません。

しかし、クエリ、キーからAttentionを計算する際に、単純に内積を取るのではなく、差分を取ってからγというMLPでの変換を更に施すようにしています。

また、系列的な順番を示す位置エンコーディングの代わりに点データとしての相対位置をθという2層MLPによって変換し、それらをAttention計算やバリューに追加しています。

このPoint Transformerを基本として、以下のように全体のネットワークを構築します。

セマンティックセグメンテーションタスクであれば上半分で示すようにU-Netのようなスキップコネクションを用いた構造にし、分類であれば下半分で示すような単純なフィードフォワード構造とします。

Point Transformerブロックや、点の数を絞っていくためのTransition down / upについては以下のようになっています。

Transition downブロックにおいて点を削減する手法にはfarthest point samplingというPointNet++(https://arxiv.org/abs/1706.02413)で用いられている手法を利用しています。実際に実装する際にはそちらの理解も重要になると思われます。

実験結果

点群データをもとにしたセマンティックセグメンテーションタスク、あるいは分類タスクで従来の手法を上回る結果となっています。点群データに対する性能に詳しいわけではないため、インパクトはわかりかねるとこもありますが、数値上はそれなりな改善となっているように見えます。詳しくは論文をご覧ください。

所感

Transformerが集合的なデータに対して有力であるというのは興味深い事実だと思います。データ各点の中身(画像であれば各ピクセル、自然言語処理であれば各単語)についての処理と、それらの位置的な関係性を分離したというのがTransformerの大きな利点なのかもしれません。

一方で単純なSelf-Attentionでは、N個の系列に対して計算量がO(N^2)となってしまいます。今回の手法でも点群は非常に多いため、近傍の点のみが考慮されていました。センサ情報は高速な処理が求められる場合もあるため、計算量については注意が必要だと思われます。

また、Attention計算部分にも工夫が見られるなど、単にTransformer構造をそのまま適用しているわけではありませんでした。やはり性能向上のためには問題ドメインを深く理解し、適切な構造を考えることは重要であると思われます。

以上、Point Transformerの紹介でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です