要使用预训练的VGGFace权重训练经过微调的VGG模型,需要执行哪些预处理步骤?
我正在尝试将尺寸为224x224x3的图像阵列放入经过微调的VGG模型(冻结网络的最后4层)中,并在其顶部添加一些Dense层。训练会花费很多时间,但是我得到的最终准确度非常低,不到1%的准确度,而且该模型根本无法学习。
我用过这个:
vgg16.preprocess_input(img_array)
我希望我的模型至少能学到一点点的准确性。我可能做错了什么?
答案 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.