はじめに
Azure Machine Learning Studio で Anomalib を使って画像の異常検知を試してみた際の備忘録です。
特に、「Notebooks」で実行しようとしたときにハマった点を中心に書いています。
使用環境
- Azure Machine Learning Studio
- Notebooks(「作成」→「Notebooks」から新規作成)
Anomalib のインストール
Notebook を開いて、以下のように pip install
を試みました。
!pip install anomalib timm
しかし、この状態で import
しようとすると モジュールが見つからない エラーが発生しました。
import anomalib # ← ImportError
!pip list
ではインストールされているように見えるのに、なぜ?
原因:!pip
が使っている Python 環境と Notebook のカーネルが違う
ChatGPT によると、!pip
はシステムの Python を使っていることがあり、Notebook のカーネルが見ている Python と違うとのこと。
それを確認するために、以下のコードを実行しました。
import sys
print(sys.executable)
結果:
/anaconda/envs/azureml_py38_PT_TF/bin/python
つまり、カーネルはこの環境を使っているようです。
解決策: python 指定して pip を使う
正しい環境にパッケージをインストールするために、以下のように変更しました。
!/anaconda/envs/azureml_py38_PT_TF/bin/python -m pip install anomalib timm
さらに必要なパッケージがあった
Anomalib で PatchCore を動かすには、さらにいくつかのパッケージが必要で、エラーを見て追加していきました。
PyPI で調べて問題なさそうなパッケージをどんどん追加。
最終的に、以下のようにしてようやく動作しました。
!/anaconda/envs/azureml_py38_PT_TF/bin/python -m pip install anomalib timm lightning opencv-python kornia tifffile scikit-learn scikit-image einops FrEIA open_clip_torch openvino
補足:コンピューティングの変更 → pandas エラー?
途中、処理が遅かったので Azure ML の コンピューティングリソースを停止し、再度以下のように新しく作成しなおしました:
- コア数:2 → 4コア
すると、なぜかエラーが発生。
Error running script: partially initialized module ‘pandas’ has no attribute ‘_pandas_datetime_CAPI’
再実行したら今度は
AttributeError: module 'pandas' has no attribute 'core'
…意味がわかりません。
最終手段:カーネルの変更&戻す
とりあえずやったこと:
- カーネルを変更(適当になんでもいいので)
- 元のカーネルに戻す
これだけで、なぜか コードが無事動きました。
おわりに
Azure ML Studio の Notebooks は便利ですが、以下のような点でつまずくことがありました。
-
pip
とカーネルの Python 環境が一致していない - パッケージが不足している
- コンピューティング変更後に環境が不安定になることがある?
それでも何度か試行錯誤することで、最終的には Anomalib を使って PatchCore による画像の異常検知を実行できました。
同じようにハマっている方の参考になれば嬉しいです!
参考文献
-
Mikeinu さん「Azure Machine Learning Studio で Anomalib を使う際のメモ」
https://qiita.com/Mikeinu/items/b3869b876638f21e7412 -
Discourse「Python Unable to import pandas in Python3component」
https://discourse.mcneel.com/t/python-unable-to-import-pandas-in-python3component/174951 -
Stack Overflow「Importing pandas gives error AttributeError: module ‘pandas’ has no attribute ‘_pandas_datetime_CAPI’」
https://stackoverflow.com/questions/36521691/importing-pandas-gives-error-attributeerror-module-pandas-has-no-attribute-c
以上です!このままQiitaに投稿してご活用ください。 ChatGPTが溢れ出てしまった。