使用带有VGGFace权重的VGG模型进行预处理

时间:2019-01-21 15:13:59

标签: keras vgg-net

要使用预训练的VGGFace权重训练经过微调的VGG模型,需要执行哪些预处理步骤?

我正在尝试将尺寸为224x224x3的图像阵列放入经过微调的VGG模型(冻结网络的最后4层)中,并在其顶部添加一些Dense层。训练会花费很多时间,但是我得到的最终准确度非常低,不到1%的准确度,而且该模型根本无法学习。

我用过这个:

vgg16.preprocess_input(img_array)

我希望我的模型至少能学到一点点的准确性。我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以在github上查找确切的预处理逻辑。对于VGG16,使用imagenet的通用预处理功能。您可以找到函数here。它非常冗长,因为它既可以在numpy数组上使用,也可以在张量上使用,但是在文档字符串中描述了什么:

x: Input Numpy or symbolic tensor, 3D or 4D.
    The preprocessed data is written over the input data
    if the data types are compatible. To avoid this
    behaviour, `numpy.copy(x)` can be used. data_format: Data format of the image tensor/array. mode: One of "caffe", "tf" or "torch".
    - caffe: will convert the images from RGB to BGR,
        then will zero-center each color channel with
        respect to the ImageNet dataset,
        without scaling.
    - tf: will scale pixels between -1 and 1,
        sample-wise.
    - torch: will scale pixels between 0 and 1 and then
        will normalize each channel with respect to the
        ImageNet dataset.