Keras VGGFace提取功能

时间:2019-06-14 00:11:14

标签: python tensorflow keras vgg-net

我正在尝试使用TensorFlow和Keras从VGGFace模型的卷积层中提取特征。

这是我的代码:

# Layer Features
layer_name = 'conv1_2' # Edit this line
vgg_model = VGGFace() # Pooling: None, avg or max
out = vgg_model.get_layer(layer_name).output
vgg_model_new = Model(vgg_model.input, out)

def main():
    img = image.load_img('myimage.jpg', target_size=(224, 224))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    x = utils.preprocess_input(x, version=1)
    preds = vgg_model_new.predict(x)
    print('Predicted:', utils.decode_predictions(preds))
    exit(0)

但是,在print('Predicted:', utils.decode_predictions(preds))行中,出现以下错误:

  

Message = decode_predictions期望进行一系列预测(即   V1的2D形状形状数组(样本,2622)或V1的形状(样本,8631)   V2。找到形状为(1,224,224,64)的数组

我只想提取特征,此时我不需要对图像进行分类。该代码基于https://github.com/rcmalli/keras-vggface

1 个答案:

答案 0 :(得分:1)

您不应在此处使用utils.decode_predictions(preds),因为它仅用于分类。您可以在https://github.com/rcmalli/keras-vggface/blob/master/keras_vggface/utils.py#L66

处看到函数的定义

如果要打印功能,请使用print('Predicted:',preds)