5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HLACによる異常検知

Last updated at Posted at 2022-12-09

背景

EfficientNetで異常検知を試した際に、HLACというものを知ったのでほんの少しだけ試してみました。
結果としては、全然ダメでしたが、ほぼアダコテックさんのブログのコードをただ使っただけで、何の工夫もしていないので、改善の余地は多々あると思います。

HLACとは

アダコテックさんの記事がとてもわかり易いと思います。
https://note.com/ryotakawamura9/n/nb91e8e226dfa

こちらは実際の使い方。今回のコードはほぼこれをそのまま使わせて頂いています。
https://zenn.dev/kotaro_inoue/articles/f0cbbca962313b

HLAC特徴量抽出の流れ

  1. 使用データ
    • MVTECの中から木・ネジ・ボトルで検証
      • ダウンロード時はgood,scratch,hole等にフォルダ分かれているが、good,badフォルダのみに修正
  2. 前処理
    • グレースケール
  3. HLAC特徴量抽出
    • 画像から指定したパッチ毎(20x20等)に特徴量を抽出
  4. PCA
    • HLAC特徴量を主成分分析で一次元に変換し、良品と不良品を比較
    • PCA以外でもマハラノビス距離を求めたり、色々方法はありそう

コード

コードはこちら

結果

木(パッチサイズ20x20)

  • 良品と不良品のPCAの分布、全然分類できてない。
    image.png

  • 特徴量の差分が大きいところを色付け、これを見ても上手く分類できていないのがわかる。
    image.pngimage.png

木(パッチサイズ8x8)

パッチサイズが小さすぎるのかと思って8x8を試したが全然良くならず。
ちゃんと一個ずつ分析しながらやらないとダメですね・・・

image.png

image.pngimage.png

ネジ

  • これもダメ
    image.png
  • これは角度変わっているのでダメ。HLACは位置不変性はあるが、回転の影響は受けるはず。
    image.pngimage.png

ボトル

  • これは位置変わってないと思ったが、これもダメ。もっと深堀しないとダメですね。
    image.png

image.pngimage.png

所感

  • ぱっと使った感じだとEfficientNetの方が精度高いが、実際にビジネスでやる場合はどちらの手法もこの何千倍も探求して、様々な工夫をして使われていると思うので、単純にどちらが良いという話ではない。
  • HLACはシンプルな特徴抽出なので、論理立てて深堀が出来ればかなり使えるのではないか。(自分では出来ないが、アダコテックさんは製造業での難しそうな検査をやられているので腕があれば出来るはず・・・)
  • 本来はこんなシンプルな使い方でなく、対象物や傷の種類等で色々な使われ方をするのだろうか。
5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?