我正在尝试将keras模型转换为tensorflow模型,然后将其加载到react本机应用程序中。但是,在转换之后,一些权重似乎丢失了。模型生成和保存代码:
import os
# from face_recognition import FaceRecognition
import keras_vggface
from mtcnn.mtcnn import MTCNN
from PIL import Image
from keras_vggface.utils import preprocess_input
from matplotlib import pyplot
from numpy import asarray
from keras_vggface.vggface import VGGFace
from scipy.spatial.distance import cosine
from tensorflow.keras.models import load_model
def get_embeddings(filenames):
# extract faces
faces = [extract_face(f) for f in filenames]
# convert into an array of samples
samples = asarray(faces, 'float32')
# prepare the face for the model, e.g. center pixels
samples = preprocess_input(samples, version=2)
# create a vggface model
model = VGGFace(model='resnet50', include_top=False, input_shape=(224, 224, 3), pooling='avg')
# perform prediction
yhat = model.predict(samples)
return yhat, model
def is_match(known_embedding, candidate_embedding, thresh=0.5):
# calculate distance between embeddings
score = cosine(known_embedding, candidate_embedding)
if score <= thresh:
print('>face is a Match' % (score, thresh))
else:
print('>face is not a match' % (score, thresh))
if __name__ == '__main__':
filenames = ["test1.jpg", "test2.jpg", "test3.jpg", "test4.jpg"]
embeddings, model = get_embeddings(filenames);
ahmed_id = embeddings[1];
is_match(embeddings[0], embeddings[1])
is_match(embeddings[2], embeddings[3])
is_match(embeddings[1], embeddings[2])
model.save("model", include_optimizer=True)
该模型在python中运行良好,预测准确。然后我使用tensorflowjs_向导将其转换为javascript。命令是:
tensorflowjs_converter --input_format=keras_saved_model --metadata= --quantize_uint8=* C:\Users\user\Documents\Face_Recognition_Tensorflow\model .
生成的模型缺少某些层的权重。当我尝试在react native应用程序中加载它时,我收到以下错误:
[Unhandled promise rejection: Error: 212 of 265 weights are not set: conv1/7x7_s2/bn/gamma,conv1/7x7_s2/bn/beta, ...
如果我真的打开model.json,我可以看到在 model_config
第节,但仅与中的53个相关的元数据 weightsManifest
节。
你知道我做错了什么吗?塔尔
暂无答案!
目前还没有任何答案,快来回答吧!