Towards Total Recall in Industrial Anomaly Detection

Towards Total Recall in Industrial Anomaly Detection

1. どんなもの?

  • pretrained modelを用いたUnsupervised Anomaly Detection
  • 正常状態のPatch特徴を効率的にメモリ内に保存
  • Topに近い特徴量を使用しないことでImageNetのバイアスを低減

2. 先行研究と比べてどこがすごい?

  • Mahalanobis ADみたいにkNNを使う手法は計算時間が長い
    • 重要な情報のみをメモリに残すことで解決
  • Topに近い層から数層の特徴量を持ってくると,ImageNetのバイアスがある
    • 中間くらいの層からのみ特徴を持ってくる

3. 技術や手法の"キモ"はどこ?

  • patch featureのcoreset (重要な情報のみのmemory bank)を形成する

変数の定義

sybmol description
$x_i$ i番目の入力画像
$\phi_j(x_i) = \phi_{i, j} \in \mathbb{R}^{c^* \times h^* \times w^*} $ pretraind model $\phi$の$j$層目の特徴量
$\phi_{i, j}(h, w) = \phi_j(x_i, h, w) \in \mathbb{R}^{c^*}$ $\phi_{i, j}$の位置$(h, w)$の特徴ベクトル
$p$ パッチサイズ
$f_{agg}$ average poolingなどの近傍のfeatureを集約する関数
$\psi \colon \mathbb{R}^d \rightarrow \mathbb{R}^{d^*} $ random linear projections

学習

Locally aware patch features

  • パッチの近傍を定義

  • そのパッチに対応するfeatureを定義

    • $f_{agg}$はaverage poolingなどの近傍のfeatureを集約する関数
  • $\phi_{i, j}$から生成されるpatch featureの集合を定義

  • Patchcoreでは$j$層目の特徴と$j+1$層目の特徴をresize & concat

  • 全訓練データ(正常)の特徴メモリバンクを定義

Coreset-reduced patch-feature memory bank

  • SPADEのように全サンプルに対して,距離計算するのは時間がかかる → coresetを生成して短縮したい
  • coresetの定義
  • $\mathcal{M}^*_c$ はNP-hardなので,iterative greedy approximationで近似

推論

  • $x_{\text{test}}$のパッチ特徴集合$\mathcal{P}(x_{\text{test}}) = \mathcal{P}_{s,p}(\phi_j(x_{\text{test}}))$のそれぞれとcoreset内で最も近い特徴ベクトルを探し,その中でも最も距離が大きいものを求める

  • その時の最大距離$s^*$は

  • 近接パッチの情報を考慮したimage-levelの異常度は

    • $\mathcal{M}$内の の$b$個の近傍パッチの集合を$\mathcal{N}_b(m^*)$とすると
  • patch-levelの異常度は

4. どうやって有効だと検証した?

  • MVTec で実験
    • Image-levelでSoTA
    • %はcoresetの大きさ
    • 近傍サイズとどの層の特徴を使うとよかったか → 近傍サイズ3,層は2+3(topから)
    • SPADEよりも高速,PaDiMと同等
    • 正常サンプルの数が減っても強い

5. 議論はあるか?

  • SoTA更新
  • min maxがいっぱいあるが,非公式実装は正しく実装できているか?

6. 次に読むべき論文はある?

Avatar
中塚 俊介
R&D Engineer

My research interests are in computer vision, especially in anomaly detection and XAI.

comments powered by Disqus