AWS Sagemakerで異常検知ライブラリAnomalibの環境構築をした際
いくつかエラーに遭遇したのでまとめ
【ゴール】
condaで仮想環境を作成し、新しいカーネルをsagemaker上に追加する
学習用コードが動くことを確認する
condaで環境の構築
- Sagemakerでjupyterlabを立ち上げる(やり方は省略)
- Terminalを開いて仮想環境を作成
conda create -n anomalib python=3.11
- いったんTerminalを閉じて新しいTerminalを開く
- 作成した環境をactivate
conda activate anomalib
- pytorchをインストール
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- Anomalibをインストール
pip install anomalib
カーネルの追加
- 仮想環境をactivateした状態でipykernelをインストール
conda install -c anaconda ipykernel
- カーネルを追加
ipython kernel install --user --name=anomalib
- カーネルの追加を確認
jupyter kernelspec list
これでカーネルの追加は完了
Launcherを開いたときにanomalibというカーネルが表示されるのを確認(jupyter再起動が必要かも)
学習用コードの実行確認
※Anomalibのライブラリ入れたはいいもののエラーでうまく動かなかったため
git clone https://github.com/openvinotoolkit/anomalib.git
してanomalib/src ディレクトリ内に学習用コード(patchcore_train.py)とdatasetsフォルダを作成して使用
カスタムデータは以下のフォルダ構成
└─anomaly
├─ground_truth(abnormalのマスク画像(png))
├─test
│ ├─abnormal(異常画像)
│ └─normal(正常画像)
└─train
└─normal(正常画像)
追加でimportしたものたち
pip install lightning
pip install imgaug
pip install kornia
pip install timm
pip install einops
pip install FrEIA
pip install open-clip-torch
pip install mlflow
pip install wandb
pip install openvino
pip install jsonargparse
# Import the required modules
from anomalib.models import Patchcore
from anomalib.engine import Engine
from anomalib.data import Folder
# Create the datamodule
# 引数はdata/image/folder.py参照
datamodule = Folder(
name="anomaly",
root="datasets/anomaly",
normal_dir="train/normal",
abnormal_dir="test/abnormal",
mask_dir="ground_truth",
normal_test_dir="test/abnormal",
train_batch_size=32,
eval_batch_size=32,
)
# Setup the datamodule
datamodule.setup()
model = Patchcore(
backbone="wide_resnet50_2",
layers=("layer2", "layer3"),
pre_trained=True,
coreset_sampling_ratio=0.1,
num_neighbors = 9)
engine = Engine()
# Train the model
engine.fit(datamodule=datamodule, model=model)
cv2のimportでエラー
libGL.so.1: cannot open shared object file: No such file or directory
Docker環境なんかでも同じエラーが出る模様
opencv-python-headlessのimportで解決
pip install opencv-python-headless
openvinoのimportでエラー
cannot import name 'runtime' from partially initialized module 'openvino'
openvino-devのimportで解決
pip install openvino-dev
以上!