Anomalib ライブラリのインストールと使用

Anomalib: 異常検出のための深層学習ライブラリ
PDF:https://arxiv.org/pdf/2202.08341.pdf
代番号:https://github.com/openvinotoolkit/anomalib

1。概要

Anomalib は、異常検出に焦点を当てた深層学習ライブラリです。その目標は、最先端の異常検出アルゴリズムを収集し、パブリック データセットとプライベート データセットのベンチマークのためのツールを提供することです。このライブラリは、最近の文献に記載されている一連の実装された異常検出アルゴリズムを提供します。さらに、Anomalib は、開発者がカスタム モデルを開発および実装することを容易にする一連のツールも提供します。このライブラリは、画像ベースの異常検出に特に焦点を当てており、データセット内の異常な画像または画像内の異常なピクセル領域を特定することを目的としています。Anomalib を使用すると、ユーザーは特定のニーズを満たすさまざまな異常検出アルゴリズムを迅速に構築して評価できます。

2 インストール

リポジトリのクローンを作成する

git clone https://github.com/openvinotoolkit/anomalib.git
cd anomalib

2-1 窓

パッケージをインストールする

python -m pip install --upgrade pip wheel setuptools
pip install -r .[full]

2-2 Ubuntu

パッケージをインストールする

python -m pip install --upgrade pip
pip install wheel setuptools
pip install -r requirements.txt

2-3 CentOS

パッケージをインストールする

python -m pip install --upgrade pip
pip install -r requirements.txt

3 トレーニング

各モデルには独自の構成ファイル config.yaml があり、データ、モデル、およびトレーニングの構成可能なパラメーターが含まれています。モデルをトレーニングするときに構成ファイルを指定する必要があります。

python tools/train.py --config <path/to/model/config.yaml>

または

python tools/train.py --model stfpm

4 推論

推論関連パラメータ
ここに画像の説明を挿入します

4-1 PyTorch (Lightning) 推論

python tools/inference/lightning.py --config padim.yaml --weights results/weights/model.ckpt --input image.png

推論時にしきい値を変更するには、metrics.threshold.method を manual に設定し、metrics.threshold.manual_image および metrics.threshold.manual_pixel でカスタムしきい値を指定するだけです。

  threshold:
    method: manual #options: [adaptive, manual]
    manual_image: null
    manual_pixel: null

4-2 OpenVINOの推論

OpenVINO IRのエクスポート時にmetadata.jsonファイルも同時に生成されるので、OpenVINOの推論時に一緒に指定する必要があります。

python tools/inference/openvino.py --weights results/openvino/model.xml --input image.png --metadata results/openvino/metadata.json

4-3 勾配推論

python tools/inference/gradio_inference.py \
    --weights ./results/padim/mvtec/bottle/weights/model.ckpt

または

python python tools/inference/gradio_inference.py \
    --weights ./results/padim/mvtec/bottle/openvino/openvino_model.onnx \
    --metadata ./results/padim/mvtec/bottle/openvino/metadata.json

5 エクスポートと最適化

次の設定を config.yaml ファイルに追加すると、トレーニング後にモデルが OpenVINO IR にエクスポートされます。

optimization:
  export_mode: openvino

ONNX 形式のみをエクスポートする場合

optimization:
  export_mode: onnx

Anomalib は、エクスポートされた OpenVINO モデルのパフォーマンスをさらに向上させるために、OpenVINO のニューラル ネットワーク圧縮フレームワーク (NNCF) をサポートしています。NNCF はトレーニング中に異常モデルのニューラル ネットワーク コンポーネントを最適化するため、トレーニング後の方法よりも優れたパフォーマンスと精度のバランスを実現できます。

NNCF を有効にするには、次の設定を config.yaml ファイルに追加します。

optimization:
  nncf:
    apply: true

注: 現在、NNCF をサポートしているのは STFPM モデルのみです

6 ベンチマーク

実験の追跡と最適化の機能を追加するために、Anomalib にはモデル、パラメーター、データセット カテゴリのさまざまな組み合わせの結果を収集するベンチマーク スクリプトも含まれています。モデルのパフォーマンスとスループットは CSV ファイルに記録され、モデルのドリフトを追跡する手段としても使用できます。
CPU と GPU のカスタム フォルダー データセットの両方のカテゴリで Padim モデルと STFPM モデルのスループットとパフォーマンス メトリックを計算したプロファイルは次のとおりです。

seed: 42
compute_openvino: false
hardware:
  - cpu
  - gpu
writer:
  - comet
  - wandb
  - tensorboard
grid_search:
  dataset:
    category:
      - colour
      - crack
    image_size: [128, 256]
  model_name:
    - padim
    - stfpm

compute_openvino openvino 推論を使用するかどうか。
ライター: [] はログではなく csv ファイルのみを記録します。

カスタム データセットを使用する

seed: 42
compute_openvino: false
hardware:
  - cpu
  - gpu
writer:
  - comet
  - wandb
  - tensorboard
grid_search:
  dataset:
    name: hazelnut
    format: folder
    path: path/hazelnut_toy
    normal_dir: good # name of the folder containing normal images.
    abnormal_dir: colour # name of the folder containing abnormal images.
    normal_test_dir: null
    task: segmentation # classification or segmentation
    mask: path/hazelnut_toy/mask/colour
    extensions: .jpg
    split_ratio: 0.2
    category:
      - colour
      - crack
    image_size: [128, 256]
  model_name:
    - padim
    - stfpm

走る

python tools/benchmarking/benchmark.py --config <relative/absolute path>/<paramfile>.yaml

7 ロギング

Anomalib は、メトリクスと予測されたマスクを記録するための複数のメカニズムを提供します。

7-1 ロギングを有効にする

シングルを有効にする

logging:
    logger: "tensorboard"

または複数を有効にする

logging:
  logger: [comet, tensorboard, wandb]
  log_graph: false

7-2 画像を記録する

Anomalib では、視覚化セクションで log_images: True を設定することで、予測結果をファイル システムに保存できます。これにより、予測結果を画像ファイルとして保存して、後で分析したり表示したりできるようになります。

visualization:
  show_images: False # show images on the screen
  save_images: False # save images to the file system
  log_images: True # log images to the available loggers (if any)
  image_save_path: null # path to which images will be saved
  mode: full # options: ["full", "simple"]

logging:
  logger: [comet, tensorboard, wandb]
  log_graph: false

7-3 レコードモデル図

モデル設定ファイルのログ パラメーターで log_graph を True に設定すると、モデル グラフを Comet、TensorBoard、または Weights and Biases に簡単に記録できます。

logging:
  logger: [comet, tensorboard]
  log_graph: true

8 ハイパーパラメータの最適化

デフォルトで構成されたモデルは、新しいデータ セットに対して常に適切に機能するとは限りません。さらに、パフォーマンスを向上させるには、学習率、オプティマイザ、アクティベーション関数などを調整/選択して、ハイパーパラメータの最適な組み合わせを決定する必要があります。Anomalib は、Comet または重みとバイアスを使用したハイパーパラメータの最適化をサポートしています。

8-1 YAMLファイル

Comet を使用したハイパーパラメータ最適化のサンプル構成ファイルは、次のように tools/hpo/configs/comet.yaml に提供されています。

algorithm: "bayes"
spec:
  maxCombo: 10
  metric: "image_F1Score"
  objective: "maximize"
parameters:
  dataset:
    category: capsule
    image_size:
      type: discrete
      values: [128, 256]
  model:
    backbone:
      type: categorical
      values: ["resnet18", "wide_resnet50_2"]

ここで、maxCombo は実行する実験の総数を定義します。アルゴリズムは、使用される最適化方法です。メトリックは、モデルのパフォーマンスを評価するために使用される指標です。パラメータは、最適化されるハイパーパラメータです。パラメータ設定の詳細については、Comet のドキュメント https://www.comet.com/docs/v2/api-and-sdk/python-sdk/introduction-optimizer/ を参照してください。

重みとバイアスを使用したハイパーパラメータ最適化のサンプル構成ファイルは、次のように tools/hpo/configs/wandb.yaml に提供されています。

observation_budget: 10
method: bayes
metric:
  name: pixel_AUROC
  goal: maximize
parameters:
  dataset:
    category: hazelnut
    image_size:
      values: [128, 256]
  model:
    backbone:
      values: [resnet18, wide_resnet50_2]

ここで、observation_budget は実行する実験の総数を定義します。method は、使用される最適化方法です。メトリックは、モデルのパフォーマンスを評価するために使用される指標です。パラメータは、最適化されるハイパーパラメータです。パラメータ設定の詳細については、重みとバイアスのドキュメント https://docs.wandb.ai/guides/sweeps を参照してください。

8-2 HPO の実行

python tools/hpo/sweep.py --model padim \
  --model_config ./path_to_config.yaml \
  --sweep_config tools/hpo/configs/comet.yaml

または

python tools/hpo/sweep.py --sweep_config tools/hpo/configs/comet.yaml

おすすめ

転載: blog.csdn.net/shanglianlm/article/details/132832778