Я пытался реализовать распознавание лиц с использованием предварительно обученных моделей из Keras-Openface Project и удивительно объяснил и реализовал его Мартин Красер здесь
Проект 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 в моем файле Foregnet.py (изначально он является частью 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Недавно изучаю модели и рассола, и я не могу понять, в чем дело.Любая помощь будет высоко ценится.
Спасибо.