画像の異常検知 MVTec-Anomaly-Detection をカスタムデータで学習させる【Python】

AI
スポンサーリンク

スポンサーリンク

はじめに

前回までは、MVTec-Anomaly-Detection を MVTec データセットで実施しました。

今回は、カスタムデータを使用して、MVTec-Anomaly-Detection で推論する方法について、説明します。

前提条件

前提条件は以下の通りです。

  • Tensoflow == 2.9.3
  • numpy == 1.23.5
  • ktrain == 0.33.2
  • Windows11
  • Python3.10

データの準備

データはこちらのサイトの、Class1, Class1_def を使用します。

データをダウンロードしたら、以下のようにフォルダを作成します。

  • MVTec-Anomaly-Detection/data/custom/train/good … Class1の画像
  • MVTec-Anomaly-Detection/data/custom/test/good … Class1の画像
  • MVTec-Anomaly-Detection/data/custom/test/defect … Class1_defの画像

train と test の比率は適当に調整してください。

学習

前回と同じコマンドを使用して学習します。

python train.py -d data/custom -a mvtecCAE -b 12 -l ssim -c grayscale

保存先を確認し、ファインチューニングを実行します。

python .\finetune.py -p .\saved_models\data\custom\mvtecCAE\ssim\17-02-2023_06-59-39\mvtecCAE_b12_e99.hdf5 -m ssim -t float64

最後に、テストを実行します。

python .\test.py -p .\saved_models\data\custom\mvtecCAE\ssim\17-02-2023_06-59-39\mvtecCAE_b12_e99.hdf5 -s

score: 0.52 でした。これだけスコアは低いのですが、検出結果画像を確認するとある程度不良の場所は検出できていそうです。
次回で説明しますが、検出部の面積のしきい値を調整することで、スコアが上がると思われます。

結果の画像を確認してみます。

検出場所は大体あっていそうです。

mssim にして学習

今度は、ssim から mssim に変更し、RGB画像で学習させます。

python train.py -d data/custom -a mvtecCAE -b 12 -l mssim -c rgb

ファインチューニングを実行します。

python .\finetune.py -p ./saved_models/data/custom/mvtecCAE/mssim/17-02-2023_18-34-22/mvtecCAE_b12_e97.hdf5 -m ssim -t float64

最後に、テストを実行します。

python .\test.py -p ./saved_models/data/custom/mvtecCAE/mssim/17-02-2023_18-34-22/mvtecCAE_b12_e97.hdf5 -s

スコアは 0.52 とあまり変わりませんでした。

この辺も次回で改善していきます。

おわりに

今回は、MVTec-Anomaly-Detection をカスタムデータで学習させる方法について説明しました。

良 / 不良 の判定をしきい値で判別するので、ここら辺は人の手で設備やシステムに合わせて変更していく必要があります。

次回は、微調整部分の変更方法について説明していきます。

コメント

タイトルとURLをコピーしました