日々精進

新しく学んだことを書き留めていきます

AI

画像分類・物体検出において、背景を物体と認識してしまう問題

AI

画像分類・物体検出のアノテーションは矩形の枠とラベル(人・犬など)で付ける。 なので、人のアノテーションにはどうしても人の後ろの壁など人以外の部分も含まれてしまう。 そうすると、その壁などもモデルは人の一部であると見なして学習してしまう。 そ…

Deep Learningでは基本乱数は完全には固定できない(なので全く同じモデルは作ることが難しい)

AI

乱数のseedを固定すれば同じInputに対して、同じ推論結果を返す重みファイルが生成できるはず・・と思っていたが、そうではないらしい。 乱数の固定の仕方は以下参照。 qiita.com これを設定しても、cuDNNの中の乱数は固定できないらしい。TensorFlowではこ…

conda create, removeを繰り返すと.conda_trashファイルが増えていく問題

AI

現象は以下。 conda create, conda removeでconda環境の作成・削除を繰り返すとpip3.exe.conda_trash, pip3.exe.conda_trash.conda_trash, ...のように.conda_trashがconda createを実行した回数だけ繰り返すファイルができる これによって超長いファイル名…

PyCharmでSSH Interpreterを使っている時に、リモートホスト上でターミナルからinstallしたpackageをPyCharmにダウンロードさせる方法

AI

sshでリモートホストにログインし、pip installでpackageをinstallした後、ライブラリの更新操作をPyCharm上でやるとダウンロードしてくれる。今までInvalidate Cache&Restartを実行して全部のライブラリをダウンロードし直してた。。 やり方は以下参照。 tk…

Pythonで複数の環境で共有したい、けどpipなどのpackageにするほどでもないコードの共有

AI

「複数の環境」と言っているのは、例えば機械学習で言うと前処理、学習、精度検証のようなイメージ。 そういう環境で、ある程度実装も実行環境も分かれているけど一部の実装を共有したい場合どうするか。 pip packageにすると修正したらアップロードとインス…

tfliteで推論すると「RuntimeError: There is at least 1 reference to internal data」エラー

AI

原因はわかっていないが、再実行したらエラーが出なかった。なぜだ・・

multiprocessing.Poolは各ProcessにGlobal変数をコピーする

AI

マルチプロセスなので当たり前なんだけど、Pythonのmultiprocessing.Poolを使って複数プロセスで並列処理をする時にGlobal変数はそれぞれのプロセスにコピーされる。 なので、以下の例だとmy_funcの中でGlobal変数を変更しても他のプロセスには影響しない。 …

Pythonでオブジェクト==で比較すると「{ValueError}The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()」エラー

AI

発生条件は以下。 @dataclassの付いたclassのオブジェクトを==で比較する そのclassのインスタンス変数にnumpy.ndarrayがある 原因は以下。 @dataclassで自動生成されるeqメソッドは、そのクラスのフィールドからなるタプルを比較する 参考: docs.python.or…

Pythonスクリプトを実行すると「ImportError: cannot import name」エラー

AI

原因は色々ありうるが、今回は同じフォルダ名が複数あることだった。つまり、以下のようなフォルダ構成になっていて root/aとroot/bをPYTHONPATHに追加していた。 root/a/common/a.py root/b/common/b.py そうするとa.pyをimportしようとするとそんなモジュ…

学習中に突然学習が止まる

AI

以下のようなメッセージを残して学習が止まることがあり、困った。 train.sh: line 27: 32529 Killed 原因はOOMだった。 dmesg -T| grep -E -i -B100 'killed process' 上記コマンドを実行すると、以下が表示され、OOMでプロセスが殺されたことが分かる。 [F…

conda env createでyamlを指定しconda環境を作る時にpycocotoolsが含まれていると「ModuleNotFoundError: No module named 'Cython'」エラー

AI

pycocotoolsのsetup.pyがCythonなどをimportしているためエラーになるっぽい。 ホントはやりたくないが、以下のようにyamlに含めず後からpip installでインストールするようにした。 conda env create -f=/root/environment.yaml conda activate myenv pip i…

AWSでどのGPUインスタンスを使えば良いかが分かる資料

AI

GPUインスタンスの種類が多すぎて何を使えば良いかわからない・・と言う場合、以下を参考にするといいかも。 towardsdatascience.com ユースケース別にオススメのインスタンスタイプがかかれていて参考になりました。 ただ、2020年6月の記事なのでちょっと古…

TensorFlowで学習を実行すると「failed call to cuInit: CUDA_ERROR_NO_DEVICE」エラー

AI

原因はGPUが1つしかないのに export CUDA_VISIBLE_DEVICES='1' が環境変数に設定されていたため。 export CUDA_VISIBLE_DEVICES='0' に変更すると直った。 参考: qiita.com また、問題の切り分けのために、以下を実行してtensorflowからGPUが見えているかを…

Pytorchのtorch.cuda.Stream()を実行するとそれ以降PyCharmのDebugger windowで変数の値が見えなくなる

AI

変数の値を見ようとするとCollecting data...と表示されるだけで値が見えなくて困った。 PyCharmの設定でGevent compatibleをONにすると直った。詳細は以下参照。 stackoverflow.com なぜこれで直るか全然分からないがすごく助かった・・・ただし、このオプ…

pycocotoolsを使うと「ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject」エラー

AI

pycocotoolsが依存しているnumpyのバージョンが1.20以上だが1.19以下がインストールされていることが原因。 でもtensorflowが1.19.5に依存していて、1.20以上を入れることができない。。 なのでpycocotoolsのバージョンを2.0.0にダウングレードして回避した…

YOLOXの学習を実行すると「RuntimeError: falseINTERNAL ASSERT FAILED at "../aten/src/ATen/MapAllocator.cpp":300, please report a bug to PyTorch. unable to write to file </torch_4492_0>」エラー

AI

原因はshared memoryの容量が足りないこと。学習環境のdocker composeに以下を追加すると直った。 shm_size: '16gb' 参考: Unable to write to file </torch_18692_1954506624> - #6 by gaily_sun - PyTorch Forums

conda runを実行すると「CommandNotFoundError: No command 'conda run'.」エラー

AI

conda runコマンドは壊れたので4.10.0で削除されたらしい。まじか。。 conda runコマンドがあるバージョンのcondaをインストールして解決した。 参考: github.com

SageMaker PipelinesのStepのOutputに「ClientError: Cannot access S3 key.」と書かれていてもS3にアクセス出来ないことが原因でないことが多い

AI

Pipeline実行がエラーになり、エラーになったStepのOutputを見行くと、以下のメッセージが表示されていた。 This step failed. For more information, view the logs. ClientError: Cannot access S3 key. が、結論としてはS3がエラーの原因ではなかった。上…

SageMaker ProjectのPipelinesタブに自分で作ったPipelineを表示させる

AI

Pipelineのタグを以下のように設定すれば表示される。タグはsagemaker sdkのPipelineクラスのcreate, upsertメソッドの引数で渡せる。 sagemaker:project-name: , sagemaker:project-id: projectとpipelineの紐付け方がわからなかったが、tagで紐付けている…

SageMaker PipelineをCLIから削除する

AI

SageMakerStudioから削除する方法が見付からなかったのでCLIから削除した。 以下のコマンドで削除できる。 aws sagemaker delete-pipeline --pipeline-name pjname 参考: docs.aws.amazon.com

「pycocotools/_mask.pyx ValueError: numpy.ndarray size changed, may indicate binary incompatibility.」エラー

AI

原因はnumpyのバージョンが古いことで、1.20.1以上にすれば直るっぽいが TensorFlowが1.19.5に依存しているのでnumpyのバージョンを上げられない・・ stackoverflow.com しょうがないのでpycocotoolsを使わずアノテーションファイルのparseを独自実装するこ…

SageMakerで学習をしている時のTensorBoardを表示する

AI

Estimatorのinitにtensorboard_output_configという引数があるので、これを設定するとtensorboardのログをS3にアップロードしてくれそうだけど、してくれなかった。。 以下で同じ問題で困っている人がいるけど解決してないっぽい。 stackoverflow.com しょう…

pythonプログラムを実行すると「ImportError: libSM.so.6: cannot open shared object file: No such file or directory」エラー

AI

以下のサイトで紹介されている方法で直りました。 参考: omohikane.com

pythonスクリプトを実行すると「ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory」エラー

AI

export LD_LIBRARY_PATH=/path/to/conda/envs/your_env/lib で直る 参考: github.com

tf.keras.load_modelでモデルを読み込むと「ValueError: Unknown loss function」エラー

AI

学習時にcustom loss functionを使った場合、load時も同じ関数をcustom_objectとして渡してやらないといけないらしい。 ただ、再学習するのではなく推論するためにmodelをloadするのであれば以下のようにcompile=Falseを指定してやればOK。 model = load_mod…

Kaggle Notebookで起きたエラーの原因分析をしやすくする

AI

手元の環境で実行してもエラーが出ないが、Kaggle Notebookで実行するとエラーになる、ということがあった。 手元とNotebookではライブラリのバージョンが違うのでそのせいだと思うが・・ Notebookではデバッグ実行できないし、原因分析しづらかったのでNote…

SageMaker Processingでconda環境をactivateしてpythonを実行できない

AI

例えば、以下のサンプルコードのようにScriptProcessorを使って.pyファイルを実行する場合。 github.com .pyファイルをconda仮想環境myenvで実行するにはどうすればいいか。 ScriptProcessorのcommandでconda activateしてもだめで、理由はdokcerに渡された…

LightGBMで学習を実行すると「[LightGBM] [Fatal] categorical_feature is not a number,if you want to use a column name,please add the prefix "name:" to the column name」エラー

AI

原因はハイパーパラメータとしてcategorical_column=[0]が設定されていたため。 KaggleのNotebookからコピーしてきたのだが、これはまずかったようだ。 categorical_columnはcategorical_featureの別名。categorical_featureの仕様的にはintでfeatureを指定…

TensorFlowのSavedModelをOpenVINO IRに変換すると「UnicodeDecodeError: 'ascii' codec can't decode byte 0xfa in position 1: ordinal not in range(128)」エラー

AI

Scaled YOLOv4 tinyのsaved_model.pbをIR形式に変換したら表題のエラーが発生。 原因はよく分からないが、学習時と変換時のTensorFlowのバージョンを合わせたら直った。 TensorFlowのバージョンによってsaved_model.pbの仕様が違うんだろうな。。 IR形式への…

SageMaker Studioで「You were logged out of your account. Choose 'Sign In' to continue using this workplace.」が繰り返し表示される

AI

現象は以下。SageMaker StudioにSSOログインしている場合しか起きないかも? * SageMaker Studioを開いた状態から、しばらく操作せずログアウト状態になる * Reloadボタンをクリックし、AWSコンソールに再ログインする * 別ウィンドウが開き、SSOログインし…