ind_knn_ad_MyDataset

KNN(k-nearest neighbors)ベースの画像異常検知のgithubであるind_knn_adのサンプルコード。自前のDatasetで実行できるようにした。

Prerequisites

Build environment

# Docker image作成
docker build -t ind_knn_ad -f ./Dockerfile .

# Dockerコンテナ起動してbashで入る
docker run -p 8888:8888 -p 7860:7860 \
-it \
-w /work \
-v $PWD/work:/work \
--rm \
--gpus all \
--shm-size 32g \
ind_knn_ad \
/bin/bash

# ind_knn_adのコードダウンロード
git clone https://github.com/rvorias/ind_knn_ad.git

Run

./work/run_mydataset.py がサンプルコード。使用例は./work/run_test.sh を参照。

  • timmをbackboneに用いて SPADE, PaDiM, PatchCore の3つの異常検知手法が使える。

  • 入力画像のファイルパスが記載されたCSVファイルを入力として使用。

./work/run_timm_cnns.sh は色んなbackboneで実行する例。

./work/gradio_app.py は推論して異常部可視化するgradioのアプリ。

run_mydataset.py とgit cloneした ind_knn_ad を別ディレクトリにコピーして変更すれば任意のデータで学習推論できる。

cp ./work/run_mydataset.py ./xxx
cp -r ./work/ind_knn_ad ./xxx
cp ./work/run_py_folds.ipynb ./xxx

Jupyter notebook

以下のコマンドでJupyter labを起動可能。

# Dockerコンテナ起動してbashで入る
docker run -p 8888:8888 \
-it \
-w /work \
-v $PWD/work:/work \
--rm \
--gpus all \
--shm-size 32g \
ind_knn_ad \
/bin/bash

# Jupyter lab起動
jupyter lab --ip=0.0.0.0 --allow-root --no-browser --NotebookApp.token='' --port=8888

# ind_knn_adを試したnotebook: work/run_import.ipynb, work/run_py_folds.ipynb が実行できる