TypeError:从Keras-Openface项目

时间:2018-06-07 06:51:50

标签: python keras deep-learning pickle openfaces

我尝试使用Keras-Openface项目中的预训练模型实现面部识别,并由Martin Krasser精心解释和表达here

  

OpenFace项目提供了预训练模型,这些模型使用公共人脸识别数据集FaceScrub和CASIA-WebFace进行训练。 Keras-OpenFace项目将预先训练的nn4.small2.v1模型的权重转换为CSV文件,然后将其转换为可由Keras使用load_weights加载的二进制格式

守则只是:

nn4_small2_pretrained = create_model()
nn4_small2_pretrained.load_weights('weights/nn4.small2.v1.h5')

在转到错误以更深入地了解create_model()中发生的事情之前,您可以查看代码here

现在我的 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')

重新开始,然后预测文件需要花费大量时间进行编译,因为它会再次经历整个过程。所以为了解决这个问题,我尝试将模型转储到像这样的pickle文件中

# 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,我无法弄清楚出了什么问题。 任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

我看到create_model()创建了Keras模型的实例。如果是Keras模型,则可以使用model.save(filepath)保存模型。 有关其他选项,请参阅此link