Sleep like a pillow

Deep Learning関係の話。

論文読み TOOD: Task-aligned One-stage Object Detection

論文リンク

arxiv.org

実装リンク

github.com

どんなもの?

  • CVPR 2021。
  • 物体検出では、分類と位置推定の2つのサブタスクを学習するが、2つのタスクに最適なアンカーが空間的にずれていることがある。
    • 例えば、下図の上段のようにATSSでは、ダイニングテーブルの分類スコアが最大のアンカー(上段中央)と、IoUが最大のアンカー(上段右)の位置が大きくずれている。
  • その問題に対応するために、2つのタスクの最適アンカーを明示的に近づけるための、TOOD (Task-aligned One-stage Object Detection)を提案。
    • T-Head (Task-aligned Head): タスク固有の特徴と、2つのタスクに相互に作用する特徴をバランス良く学習するヘッド。
    • TAL (Task Alignment Learning): サンプル割り当てとロスを工夫した学習方法。
  • TOODによって、下図の下段のように、分類スコアが最大のアンカーと、IoUが最大のアンカーが一致する。
  • MS COCOにおいて、既存の物体検出手法にTOODを導入することでAP 51.1%を達成。

  • 後発の物体検出手法でも採用されている。

技術のキモ

Task-aligned Head (T-Head)

  • 上図の(a)が既存の物体検出手法のヘッドで、(b)がTOODで採用されているT-Head。(c)は(b)のTAPの詳細。
  • (a)既存の物体検出手法のヘッドは、分類と位置推定のヘッドが完全に分かれていると、2つのタスクに相互に作用する特徴を学習できない。そのため、(b)T-Headは最終層まで2つのタスクのヘッドを共通化し、そこから(c)TAPによって各タスクに必要な特徴を抽出するという構造になっている。

TAP

  • TAPの構造を詳しく見ていく。

  • ①の構造で、まずヘッドの複数(論文では6)の特徴マップをチャネル方向でconcatし、Squeeze&Excitationのようなチャネル方向のattentionによって、2つのタスクに相互に作用する特徴($X^{task}_{1 \sim N}$)を抽出する。それにconvとreluをかけて、分類用のマップ(P)と位置推定用のマップ(B)を得る。
  • ②の構造で、2つのタスクの最適アンカーを明示的に近づける。ヘッドの複数の特徴マップをチャネル方向でconcatし、convとreluとsigmoidをかけて分類用のアラインメントマップ(M)と位置推定用のアラインメントマップ(O)を得る。次に、図中のAの部分で、分類用のマップについてはPとMを要素ごとに掛け合わせて平方根をとる。位置推定用のマップについては、Oをオフセットと考えて、Bの各ピクセル位置にオフセットを足したサブピクセル位置の値を、バイリニアサンプリングする(実装ではdeform_convを利用している)。

Task Alignment Learning (TAL)

  • TALは学習時のアンカーの選択方法の工夫であるTask-aligned Sample Assignmentと、ロスの工夫であるTask-aligned Lossから構成されている。

Task-aligned Sample Assignment

  • 各アンカーの分類スコア(s)とGTのbboxとのIoU(u)から、以下の指標(t)を定義する。

  • αとβはハイパーパラメータで、論文ではそれぞれ1.0と6を採用している。
  • 学習時はtの値が上位m個のアンカーをpositiveサンプルとして選択し、それ以外のアンカーをnegativeサンプルとして選択する。

Task-aligned Loss (分類)

  • GTのbboxとのIoUが大きいアンカーの分類スコアを明示的に増加させ、逆にIoUが小さいアンカー(=tが小さい)の分類スコアは減少させるために、BCEロスを計算する際の二値ラベルをpositiveなアンカーに関しては、1からtに置き換える。
  • そのままtに置き換えると、値が小さすぎたりするため、tの最大値が各GT bboxに紐づくアンカー内で最大のIoU(u)に等しくなるように正規化したt^を使用する。
  • さらにFocal Lossとも組み合わせた以下のロスを使用する。

Task-aligned Loss (位置推定)

  • 全体のロスは分類ロスと位置推定ロスを単純に足し合わせたものを使用する。

学習初期はATSSを使用

  • 論文には(多分)記載されてないが、著者実装を見ると学習初期(4epochまで)はATSS(ロスも含めて)を使用している。
  • おそらく、学習初期はすべてのアンカーのtが低くて学習が安定しないため。

有効性の検証

  • TOODは既存の物体検出手法よりも高い精度を示している。

  • T-HeadとTALはそれぞれ単体でも精度向上の効果があるが、組み合わせて使うことでさらに効果的になる。

  • 定性評価。T-HeadとTALを使うことで、分類と位置推定の最適アンカーの位置(それぞれ赤と緑)が近づいている。

  • tを計算する際のハイパーパラメータα、βのablation study。そこまでセンシティブではない。

論文読み Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive (ATSS: Adaptive Training Sample Selection)

論文リンク

arxiv.org

実装リンク

github.com

どんなもの?

  • CVPR 2020。
  • 物体検出におけるアンカーベースとアンカーフリーの本質的な違いは、学習サンプルのpositive/negativeを選択方法の違いにあることを示した。
    • アンカーベースのRetinaNetとアンカーフリーのFCOSで、RetinaNetにFCOSで使われている汎用的な工夫を導入するとともに、学習サンプルの選択方法を同じにすることで、性能が一致した。
  • さらに、物体の統計的特徴に応じて学習サンプルのpositive/negativeを自動的に選択するAdaptive Training Sample Selection (ATSS)という学習方法を提案。
  • MS COCOにおいて、既存の物体検出手法にATSSを導入することでAP 50.7%を達成。

技術のキモ

Difference Analysis of Anchor-based and Anchor-free Detection

  • 物体検出におけるアンカーベースとアンカーフリーの本質的な違いを調査。
  • アンカーベースのRetinaNetとアンカーフリーのFCOSを比較。
  • 両者の条件を揃えるために以下を変更。
    • RetinaNetのアンカーを正方形に限定 (1:3, 3:1の長方形のアンカーを使わない)→RetinaNet (#A=1)と表記。
    • FCOSはRetinaNetよりも新しい手法なので、FCOSで使われている以下の汎用的な工夫をRetinaNetに導入。
      • GroupNorm: バッチサイズが小さいときの性能がBatchNormよりも良い正規化層。
      • GIoULoss: IoUをlossとして使えるように一般化したもの。
      • In GT Box: positiveサンプルをGTのBBox内に限定。
      • Centerness: BBoxの中心点からの距離を推定するブランチを追加。
      • Scaler: FPNの各スケールの特徴マップからの回帰値に学習可能なスカラー値を掛け合わせる。
  • しかし、まだギャップがある(FCOS: 37.8%、RetinaNet: 37.0%)。
  • その理由はpositiveサンプルの各スケールの特徴マップへの割り当て方法にあることを発見。
    • RetinaNetでは、positiveサンプルを各特徴マップのスケール関係なく、とにかくIoUが最も高いアンカーに割り当てるのに対して、FCOSでは各特徴マップのスケールに合わせて、割り当てるpositiveサンプルの大きさを制限する。
  • RetinaNetの割り当て方法をFCOSと同じ方法にすることで精度がほぼ一致した。

Adaptive Training Sample Selection

  • アンカーのpositive/negativeを選択するための閾値を自動で算出する方法。
  • まず各スケールについて、GTのBBoxの中心座標とアンカーの中心座標のL2距離が近い上位k個のアンカーを選択する。
  • 次に選択されたアンカーとGTのBBoxのIoUの平均mgと標準偏差vgを算出する。
  • GTのBBoxとのIoUが、閾値tg = mg + vg以上のアンカーをpositiveとし、それ以外をnegativeとする。

有効性の検証

  • RetinaNet(#A=1)とFCOSのそれぞれにATSSを導入することで精度が向上した。

論文読み FCOS: Fully Convolutional One-Stage Object Detection

論文リンク

arxiv.org

実装リンク

tinyurl.com

どんなもの?

  • ICCV 2019。
  • アンカーフリーな物体検出手法のFCOSを提案。
  • MS COCOにおいて、従来のCenterNetなどのアンカーフリー手法や、RetinaNetなどのアンカーベース手法をはるかに凌駕するAP 44.7%を達成。

技術のキモ

Fully Convolutional One-Stage Object Detector

  • 特徴マップの各画素で物体のクラスc(背景の場合はc=0)と、その画素から物体のbounding box (bbox)の上下左右の4サイドまでの距離(l, t, r, b)を推定する。
    • (l, t, r, b)は必ず0より大きいため、ネットワークの出力xに対してexp(x)をとる。

  • 学習時には、画素がGTのbbox内にある場合はその画素のクラスは前景(=positiveサンプル)、bbox外の場合は背景(=negativeサンプル)とする。
  • 画素が複数の物体のbboxの重なり内にある場合は、bboxの面積が小さい方の物体の(l, t, r, b)をその画素から推定する。

  • 従来のアンカーベースの手法がGTのbboxとIoUが高いアンカーのみをpositiveサンプルと見做していたのに対して、FCOSはbbox内の画素をすべてpositiveサンプルと見做すため、より多くの前景サンプルを学習に利用することができる。このことが、FCOSが従来のアンカーベース手法を凌駕する検出精度を達成した理由の一つだと著者は述べている。

Loss Function

  • クラス分類はfocal loss、回帰はIoU lossで学習する。

Multi-level Prediction with FPN for FCOS

  • Recallを高めるのと、複数の物体のbbox重なり内にある画素を、どの物体のbboxの推定に使えばよいか曖昧になる問題(性能を下げる要因)を回避するために、FPNを使用する。
  • オリジナルのFPNと同様に、異なるレベルの特徴マップ(P3~P7)それぞれで、異なるサイズの物体を検出する。
  • アンカーベース手法のFPNでは、GTのbboxを各特徴マップのスケール関係なく、とにかくIoUが最も高いアンカーに割り当てていたのに対して、FCOSではGTの(l, t, r, b)の大きさでどの特徴マップに割り当てるか決定する。
    • 例えば、特徴マップP4にはGTの(l, t, r, b)の最大値が64~128のbboxを割り当てる。
  • これによって、前述の曖昧さを緩和し、検出精度を高めることができる。
  • オリジナルのFPNと同様に、各レベルの特徴マップに対するヘッドは、重みを共有する。しかし、各レベルの回帰ヘッドはそれぞれ異なる範囲の値を推定する必要がある(例えば、P3は[0, 64]なのに対して、P4は[64, 128])。そのため、各レベルの回帰ヘッドは学習可能なスカラーs_iを持ち、exp(s_i*x)を出力することで対応する。

Center-ness for FCOS

  • 物体の中心から離れた画素から推定された低質なbboxによって、検出精度が低下するのを防ぐために、centernessを推定するヘッドを導入する。
  • centernessのGTは以下の式のようなGTのbboxの中心からの距離で定義される。

  • centernessを推定するヘッドは、BCE lossで学習する。
  • 推論時は推定したcenternessの値を検出スコアに掛け合わせることで、低質なbboxを抑制する。

  • centernessを推定するヘッドは、分類ヘッドの分岐に追加する。

さらなる精度向上のためのtrick

  • 以下のような変更を施すことでAPが1.5%向上する。
    • centernessを推定するヘッドは、分類ヘッドの分岐ではなく、回帰ヘッドの分岐に追加する。
    • bboxの中心領域のみをpositiveサンプルと見做す。
      • centernessはあったほうが精度がよい。centernessを使いつつ中心領域のみをpositiveサンプルと見做すことで、低質なbboxをより減らすことができる。
    • GIoU lossを用いる。
    • 回帰のGTをFPNストライドで正規化する。

有効性の検証

  • MS COCOにおいて従来手法を上回る検出精度を示している。

Going deeper with Image Transformers

論文リンク

実装リンク

どんなもの?

  • ViTにLayerScaleclass-attention layersを導入することで、層数の多いViTの性能を大幅に向上させることができた。
  • LayerScale
    • 学習可能な対角行列 (対角成分は0に近い値で初期化) を各residual blockの出力に追加する。
  • class-attention layers
    • ViTのようにCLSトークンをネットワークの入力に追加するのではなく、途中のTransformer層から追加することで、パッチ間のself-attentionを行うのに専念するTransformer層と、各パッチの情報をCLSトークンベクトルに集約することに専念するclass-attention層とに明確に分ける。
    • これによって、class embeddingを処理しながらattention機構を獲得するという矛盾した目的を回避することができる。
  • Imagenetのtop-1 accuracyで86.5%。現在のSOTAに匹敵する性能をより少ないFLOPSとパラメータ数で達成した。
  • さらにImagenet-RealとImagenet-V2でSOTAを達成した。

f:id:uiiurz1:20210418172944p:plain

f:id:uiiurz1:20210418172958p:plain

TransFG: A Transformer Architecture for Fine-grained Recognition

論文リンク

実装リンク

どんなもの?

  • Fine-grained Visual Classification (FGVC, 詳細画像分類: ある特定の対象領域における高粒度の多クラス画像分類。例えば動植物の種類識別など) タスクにVision Transformerを応用した論文。
  • FGVCの最近の研究では識別性が高い画像領域を特定し、そこからクラス間の微妙な差異を捉えることで性能を向上させている。
  • 本研究ではTransformerベースのフレームワークとしてTransFGを提案する。TransFGはViTのAttention Mapを利用して識別性の高い画像領域を特定する。具体的な手順は以下。
    1. ViTのTransformer層がL層あるとしたら、第1~(L-1)層のattention weightsを統合してattention map (shapeは[batch_size, num_heads, num_tokens - 1])を生成する。
    2. Part Selection Moduleによって、各ヘッドのattention map上で最大値を持つトークンのインデックスを取得する(attention mapのaxis=2のargmaxを取得する)。
    3. インデックスに対応する第(L-1)層のトークンベクトルとCLSトークンベクトルのみを第L層のTransformer層に入力する。
  • 上記のフレームワーク + 特徴表現の識別性を高めるためにconstastive lossを導入することで、FGVC系のデータセットのCUB-200-2011, Stanford Cars, Stanford Dogs, NABirds, iNat2017でSOTAを達成。
  • TransFGに対する理解を深めるために、Part Selection Moduleで選択されたトークンを可視化するなどの定性的な結果も示している。

f:id:uiiurz1:20210418112650p:plain

有効性の検証

  • FGVC系のタスクでCNNベースのSOTAとViTの精度を上回る結果。

f:id:uiiurz1:20210418112706p:plain

  • Part Selection Moduleで選択された領域の可視化。1,3行目が選択されたパッチ領域で、2,3行目がattention map。

f:id:uiiurz1:20210418112722p:plain

Training data-efficient image transformers & distillation through attention (DeiT)

どんなもの?

  • Vision Transformer(ViT)は画像分類タスクでSOTAを達成しているが、大規模な学習データ(JFT-300M, 約3億枚)と計算コスト(680~2,500 TPUv3-days)を必要とする。
  • DeiTはトークンベースの蒸留と学習方法の工夫によって、ViTよりも精度とスループットトレードオフに優れたモデルの学習に成功した。トークンベースの蒸留は具体的には以下。
    • CLSトークンとは別に蒸留トークンを用意する。
    • 学習時にGTラベルを当てさせるのはCLSトークンによって行い、Teacherモデルの推論結果を当てさせるのは蒸留トークンによって行う。
    • 推論時はCLSトークンの出力と蒸留トークンの出力の平均を用いる。
  • 学習データはImageNet(100万枚)のみで、計算コストはシングルPCで3日未満。

f:id:uiiurz1:20210418112213p:plain

技術や手法のキモ

Distillation through attention

Distillation token

  • 蒸留用のトークン(distillation token)を追加。CLSトークンと同様にtrainable。最終レイヤの蒸留トークンに対応する出力を、蒸留用のロス計算に使用する。蒸留トークンによってクラス分類用のembeddingを残しつつ、通常の蒸留のように教師モデルの出力からの学習が可能。
  • 蒸留トークンとCLSトークンは異なるベクトルに収束した。二つのコサイン類似度は0.06。各レイヤの蒸留トークンとCLSトークンに対応するembeddingの類似度を見ると、レイヤが深くなるにつれて徐々に高くなり、最終レイヤでは0.93になるがそれでも1未満。各トークンは互いに似ているが、同一ではないようなembeddingを学習しようとしていると予想。

DeepViT: Towards Deeper Vision Transformer

論文リンク

どんなもの?

  • Vision Transformer (ViT) は、層数を深くした際にCNNよりも性能がサチりやすい。
  • ViTは層が深くなるにつれてattention mapが似てくる傾向があり、ある層を過ぎるとほとんど同一になってしまう。これはViTの深い層では、self-attentionが表現学習のための効果的な機構を学習できず、モデルが期待した性能を得られないことを示している。
  • 上記の洞察に基づき、シンプルかつ効果的な方法であるRe-Attentionを提案。
  • Re-Attentionは、通常のMulti-Head Self-Attention (MHSA) に、「各ヘッドの正規化前のattention mapにヘッド数×ヘッド数のtrainableな行列を掛ける」という手順を加えたもの (手順適用後の各ヘッドは全ヘッドの重み付き和になる)
  • これによって、異なるヘッド間の相互作用を利用して相補的な情報を収集することで、attention mapの多様性を向上させる。
  • 32層のViTモデルのMHSAをRe-Attentionに置き換えることで、ImageNetのTop-1 accuracyが1.6%向上した。

f:id:uiiurz1:20210415205647p:plain

f:id:uiiurz1:20210415205632p:plain