日々のメモ書き

論文読みメモ [途中]

End-to-End Object Detection with Transformers

注意 本記事の画像は下動画から引用しています。

これは何?

arxiv.org - Facebook AIが提案した、画像からの物体検出手法に一つ

簡単な中身としては:

  1. CNN

  2. Transformer

訓練にはBipartite matchingを使っている。

であり、これまでのエンジニアリング的なハードルや閾値決定、パラメーターチューニングに比べたら、中身は非常にシンプルな構造になっている。

Object detection?

  • 画像からの物体検出では、まず画像中に写った物体を全て検出することを想定する。またそれら物体が画像中のどこにあるのか、それら物体が何であるかも推定する。(これが物体検出)

性能の良い識別機は、下図の画像が入力された時に、二羽の鳥それぞれを認識してバウンディングボックスで囲ってくれる。 この時、バウンディングボックスはオーバーラップしてもOK。

f:id:hagihayuki:20200629105158p:plain

この時、二羽の鳥を識別するためには様々な難しさが存在する。 代表的なのは、

画像中に何羽の鳥が存在するのか知る必要がある - 画像中の鳥の数は常に同じ数だとは限らない。(画像によっては0匹かもしれないし100匹かもしれない) - 画像中に鳥だけが写っているとは限らない、犬も一緒かもしれない。 - 画像中の物体はどこにでも、どんなサイズでも現れる可能性がある

この問題を解決するために、これまでに様々な設計がされてきた。 分類器を設計して、画像中の全ピクセルに対してラベルを付けたりして、 画像上での距離を見て、同じラベル同士のピクセルが近かったら、これは同じ物体に違いない、と分類したり。 非常に複雑な構造の識別機を使って、この問題を解決しようとしてきた。

一方で、この論文で提案されている手法は非常にシンプル。

じゃあ具体的な内容は?どうやってこの問題を解いているの?

  1. 画像を入力する。
  2. CNNエンコーダーを通して、set of image featuresを取得する(図2)
  3. CNNを通すことで、画像サイズが縮小され、奥行きが特徴量チャネルを表した三次元形式で表現される。縮小されているが、画像としての形式は保持されており、奥行きがそれら大量の特徴を表している。

f:id:hagihayuki:20200629110959p:plain
図2

  1. set of image featuresがTransformer encoder-decoderへ入力される
  2. これがとても重要なところ
  3. その後、set of box predictionsへ入力される
  4. それぞれのボックスがタプル形式(Class、座標)でデータを出力する。(図3)
  5. set of box predictionsだから、このタプルでClassが0じゃない座標のところにバウンディングボックスが描かれる。
    f:id:hagihayuki:20200629111912p:plain
    図3

じゃあどうやってトレーニングするのか?

ロス関数は?
  • Bipartite matching loss Loss関数は2つの変数をとる。 予測値のクラスとバウンディングボックス、正解のクラスとバウンディングボックス。 そしてこれらがどれだけマッチしているかを評価する。 L{{c_pre,b_pre}, {c_ans,b_ans}}

f:id:hagihayuki:20200629104717p:plain

f:id:hagihayuki:20200706014148p:plainf:id:hagihayuki:20200706014319p:plain