Предварительная обработка для использования модели VGG с весами VGGFace

Какие шаги предварительной обработки необходимо выполнить для обучения тонко настроенной модели VGG с предварительно обученными весами VGGFace?

Я пытаюсь поместить массив изображений размером 224x224x3 в мою тонкую модель VGG (заморозил последние 4 слоя сети) и добавил несколько плотных слоев поверх нее. Обучение занимает много времени, но результирующая точность, которую я получаю, очень низкая, менее 1%, и модель вообще никогда не учится.

Я использовал это:

vgg16.preprocess_input(img_array)

Я ожидаю, что моя модель научится, по крайней мере, если не даст хорошую точность. Что я могу делать неправильно?


person Amruth Lakkavaram    schedule 21.01.2019    source источник
comment
Каков диапазон img_array? Функции предварительной обработки будут использовать необработанные изображения от 0 до 255.   -  person Daniel Möller    schedule 21.01.2019


Ответы (1)


Вы можете посмотреть точную логику предварительной обработки на github. Для VGG16 общие используется целевая функция предварительной обработки для imagenet. Функцию можно найти здесь . Это довольно многословно, потому что работает как с массивами 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.
person sdcbr    schedule 21.01.2019