Keras-Openface Project の事前トレーニング済みモデルを使用して顔認識を実装しようとしていましたが、ここでMartin Krasser によって驚くほど説明され、実装されました。
OpenFace プロジェクトは、公開されている顔認識データセット FaceScrub と CASIA-WebFace でトレーニングされた事前トレーニング済みモデルを提供します。Keras-OpenFace プロジェクトは、事前トレーニング済みの nn4.small2.v1 モデルの重みを CSV ファイルに変換し、その後、ここで load_weights を使用して Keras でロードできるバイナリ形式に変換しました
コードは単純です:
nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')
create_model() で何が起こっているかについてより多くの洞察を得るためにエラーに進む前に、ここでコードを確認することができます
ここで、predict.pyファイルに nn4_small2_pretrained が必要です (最初は、カスタム イメージをトレーニングするための train.py の一部です) 。
from train import nn4_small2_pretrained
またはコードを書く
nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')
もう一度やり直すと、プロセス全体を再度実行するため、予測ファイルのコンパイルに多くの時間がかかります。これを解決するために、モデルをピクルファイルにダンプしようとしました
# Save the nn4 pretrained model to pickle file
f = open('pretrained_model.pickle', 'wb')
pickle.dump(nn4_small2_pretrained, f)
コードを実行すると、このエラーが表示されます
File "train.py", line 24, in <module>
pickle.dump(nn4_small2_pretrained, f)
TypeError: can't pickle _thread.lock objects
最近、Deel Learning Models と Pickle を使い始めましたが、何が問題なのかわかりません。どんな助けでも大歓迎です。
ありがとう。