LoginSignup
0
0

AWS sagemakerでAnomalibの環境構築

Last updated at Posted at 2024-05-29

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
patchcore_train.py
# 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

以上!

0
0
0

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
0
0