0

我试图使用来自 Keras-Openface 项目的预训练模型来实现面部识别,并且在这里由 Martin Krasser 进行了惊人的解释和实施

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() 中发生的情况之前,您可以在此处浏览代码

现在我需要nn4_small2_pretrained在我的predict.py文件中(它最初是 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 学习模型和 Pickle,但我不知道出了什么问题。任何帮助将非常感激。

谢谢。

4

1 回答 1

0

我看到create_model()创建了一个 Keras 模型的实例。如果它是 Keras 模型,那么您可以使用model.save(filepath). 有关其他选项,请参阅此链接

于 2018-06-07T10:09:56.293 回答