🐶

【論文5分まとめ】FastFlow

2022/03/26に公開

概要

画像データに対する画像レベル・ピクセルレベルの異常検出手法であるFastFlowを提案。Normalization Flowを用いて、affine coupling layerのs, bとして2次元Conv層を用いることで、特徴マップのサイズを一切変えずに特徴マップと潜在変数マップの間の双方向な変換を可能にしており、そのために従来手法に比べて高速な推論ができる。

書誌情報

  • Yu, Jiawei, et al. "FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows." arXiv preprint arXiv:2111.07677 (2021).
  • https://arxiv.org/abs/2111.07677

ポイント

Normalization Flowを用いた画像の異常検出手法としてCFlow-ADのような手法がある。何らかの特徴抽出器によって得られた特徴量を入力とし、多次元標準ガウス分布に従う潜在変数を出力とするような、全単射関数をNormalization Flowによって表現できるように学習する。

CFlow-ADが特徴マップをフラットにしつつ、位置情報をPositional Encodingによって付与するという条件付きFlowモデルを採用していた一方で、FastFlowでは特徴マップの変形を一切行わずに、Flowモデル内で使用するcoupling layerのs, bを2次元Conv層にすることにしている。こうすることで、入力特徴量の変形や、Positional Encodingの計算、条件付きFlowモデルにおける結合操作などを必要としない、高速なモデルが実現できている。

下図のように、大まかな構成は非常にシンプル。

Feature Extractor

入力画像から特徴マップを抽出するFeature Extractorは、ConvNet系でもViT系でもいいが、ConvNet系の場合は特徴ピラミッドを抽出し、ViT系では1スケールの特徴マップだけ抽出する。下の表は、モデルごとの入力画像のサイズや得られる特徴マップのサイズを表している。Feature Extractorは何らかの事前学習済みのものを使用し、FastFlowの訓練時にはフリーズさせる。

FastFlowモジュール

特徴マップは(ピラミッドの場合は、各スケールごとに用意された)FastFlowモジュールに入力される。FastFlowモジュールは可逆な構造になっており、特徴マップの解像度とチャネル数を維持したまま潜在変数へとマップされる。FastFlowモジュールを構成する3x3 flowと1x1Flowは、交互に適用され、3x3 flowと1x1 flowの内部では、2次元Conv層が使われるため2次元の特徴マップはその形状を保持したまま処理される。

下図の上側は、ある入力画像からFeature Extractorによって得られた特徴マップ(のあるチャネル)とFastFlowによって得られた出力の確率マップを表す。確率マップに簡単な摂動を加え、FastFlowを逆方向にして戻された特徴マップ(のあるチャネル)を見てみると、(他の部分はそのままだが)摂動を加えた部分に大きな違いが生じており、双方向の変換ができていることが確認できる。

潜在変数マップは、bilinear補間によって入力画像サイズまで拡大される。潜在変数は多次元標準正規分布に従うため、確率密度を簡単に計算でき、ここから異常度が計算できる。特徴ピラミッドが入力の場合は、複数のスケールで得られた結果を平均して最終的な確率マップを得る

計算時間と精度の比較

同じNormalization Flow系のCFlow-ADと比較すると、FastFlowはPositional Encodingによる条件付きFlowモデルのような複雑さはないため、高速に推論できる。特に、ViT系のFeature Extractorを使用することで、CFlowよりも高い精度を実現している。一方で、ConvNet系のモデルでは、大域的な特徴を掴みづらいということが指摘されている。

Discussion