はじめに
今回は、自然言語界隈に発展をもたらし、デファクトスタンダードとなったTransformerのモデルを物体認識に取り入れた論文(End-to-End Object Detection with Transformers 2020/05/26 on arXiv)を紹介します。
[2005.12872] End-to-End Object Detection with Transformers
(記事中の図は特に言及がなければ論文のもの)
こちらの論文はFacebook AIから出ており、blog記事も公開されています。概要がコンパクトにまとまっており、読みやすいです。概要だけ知りたい方にはおすすめです。
また、DL輪読会にて発表されたスライドもあるので、技術的内容を一通りさらいたい方におすすめです。
www.slideshare.net
さて、この論文の最もキャッチーな部分は系列データの問題、特に自然言語領域でよく用いられるTransformerを画像認識の領域に持ち込んだ部分にあると思います。Facebookのブログ記事を読んでも、この部分は一番の推しポイントであることが分かります。
There is significant interest in tasks that involve simultaneously handling visual and textual inputs. (End-to-end object detection with Transformers | Facebook blog)
これは想像ですが、物体認識の問題を解決することが目的ではなく、自然言語処理のモデルであるTransformerをなんらかの画像認識のタスクに応用すること自体が目的だったと思います。あらゆる領域で汎用的に使えるモデルを研究していこうというFacebook AIの意図を感じました。そのような大局的な方向性の中の足掛かりとしてこの論文を捉えることができます。
一方で、物体認識のタスク側から見ても、物体認識をbboxの集合を予測する問題として捉え直し、それを最適化するような学習方法を提案したことは、面白いと感じました。近年の物体認識モデルはパフォーマンスが重要視される傾向があって、大きなフレームワークレベルで提案がなされることは稀です (細かくみると色々提案されているとは思いますが、インパクトの大きいものに関してはということです。)。最近だと、1年程前に公開された、物体を中心点として捉えたCenterNet以来の感覚です。
現段階では、既存の手法に対してパフォーマンスに大きな優位性があるモデルではありませんが、データ拡張や既存の物体認識の知見を無理やり詰め込むだけでも精度は上がると思いますし、フレームワークの考え方の応用はされていきそうな気がします。とはいえ、現実的に利用されていくにはもうひと工夫必要な感覚があり、今後に期待が高まるモデルであります。
モデル内容
モデルの構造をざっくりと把握するのはtransformerのモデルが初見でなければ難しくはありません。以下のように、transformerのencoderに画像を入れて出力として、bboxの予測を行うだけです。
transfomerについて知らない方は以下の記事などを見てみて下さい。ただし、知らなくてもここではあまり細かいことは気にせず、transformerで系列を扱うように画像を扱っているんだなあくらいのざっくりとした理解で大丈夫です。
モデルの要点は以下です。
- 画像は入力長に合うようにembeddingされる
- positional encodingはtransformer同様に、加える必要がある
- decorderの出力サイズは固定 (論文ではN=100で、物体の予測は最大100個)
- object queriesというのはpositional encodingと同じようなものだが、学習されるパラメータ
- object queriesも出力サイズと同じサイズ (出力サイズN=100なら、これも100)
- オリジナルのtransformerは逐次的に実行されるが (autoregressive)、ここでは並列に処理される
- FFNはclassとbboxを予測するための、3層のレイヤー
- 固定長なので、物体なしのクラスを予測することでNを埋める
- Auxiliary loss ([1808.04444] Character-Level Language Modeling with Deeper Self-Attention)も補助的に使用
損失関数の取り方
次に、モデルの学習のための損失関数の取り方について説明します。 大きく2ステップあります。
- 割り当て: まず、各出力 (N=100)が正解データのどれに対応するか割り当てる
- 損失の計算: 割り当てられたペアごとに損失を計算して和を取る。
割り当て
以下のような式にあたるような処理を行います。やっていることとしては正解データと予測結果の任意のペアの損失を計算し、ハンガリアンアルゴリズムで最も良いペアを算出するということをやっています。なお、ハンガリアンアルゴリズムは一般的な組み合わせ最適化のアルゴリズムです。
は正解データ、は予測結果にあたります。はの正解データに対応する予測結果のインデックスにあたります。は正解データと予測結果がどれだけ合っているかを出力します(よりよいマッチングで小さい値)。これを最小になるような最もよい組み合わせを算出します。
は以下の式で表されます。モデルの出力には、クラスの所属確率と物体のbboxがあります。は該当クラスの所属確率を表し、はbboxのマッチ具合を測る損失を表します。このは物体認識で一般的なL1 lossとIoU Lossから構成されます。 (最近ではIoU関連のロスを取ることが多くなってきているみたい)
損失の計算
正解データと予測結果のペアが分かった後はそれを使って学習に使う損失関数を計算します。割り当てられたペア同士の損失を計算し、その和を取ります。ほとんどと同じですが、クラスの所属確率で対数を取っているところが異なります。(で対数を取らなかったのは各項のスケールを合わせるため。実験的によかったみたい)
あとはこれを使って学習することになります。
transformerの特徴の捉え方
transformerのattentionの可視化によって、transformerのモデルがどのように物体を捉えているかを見てみます。
以下は入力画像に対して、各点に対するencoderのattentionを可視化したものです。それぞれが所属する物体に注視していることが分かります。
一方で以下は各画像のdecoderのattentionを可視化したものです。boxの境界部分にattentionが効いていることが分かります。
以上のように、encoderが個々の物体の位置をざっくり把握し、decoderが物体の境界 (及び所属クラス)を把握していることが分かります。
提案モデルの気になる点
論文には他にも細かく分析がしてあるため、興味がある方は読んでみて下さい。ここでは、特に気になった点について説明します。
appendix内で物体が多くなったときに予測が可能かどうかを説明しています。以下がその結果の図です。大体50個程度までは予測可能ですが、それ以上の数になると予測が難しくなることを示しています。
論文では、50個程度までは予測できているから過学習はしていないというように説明されています。この検証だけでは何とも言えないところはありますが、個人的な感覚としてはモデル自体が過学習しそうな雰囲気を感じました。特にobject queriesの部分はかなりデータセット依存になる要因な気がしています。また、物体の数も学習によって制限されてしまいますし、ハンガリアンアルゴリズムを使うので容易には数を大きくもできない可能性があります。
異なるデータセットに適用して、既存の物体認識と比較するとどのような結果になるのかが気になります。
パフォーマンス
論文中ではFaster-RCNN及びその改良版と比較しています。一方で、最近の物体認識と比較すると以下のように現状の強みはやや劣ります。ただし、今後の改良には期待です。(以下の赤の直線が提案モデル)
(引用: [DL輪読会]End-to-End Object Detection with Transformers)
図は、[2004.10934] YOLOv4: Optimal Speed and Accuracy of Object Detection 中の図にDETRが加わったものです。YOLOv4については先日記事を書いたので、YOLOv4に興味がある方は以下の記事もご覧ください。
終わりに
今回は、自然言語処理で使われるTransformerを取り入れた物体認識モデルのDETRを紹介しました。実用的な選択肢にはすぐにはなりそうではないですが、
の2つの点で今後が楽しみなモデルとなっていました。後継の論文を待ちたいと思います。