Теория позади изображения вычитает 0,5, а затем умножает на 2

1
with tf.name_scope(scope, 'eval_image', [image, height, width]):
  if image.dtype != tf.float32:
    image = tf.image.convert_image_dtype(image, dtype=tf.float32)

  if height and width:
    # Resize the image to the specified height and width.
    image = tf.expand_dims(image, 0)
    image = tf.image.resize_bilinear(image, [height, width],
                                   align_corners=False)
    image = tf.squeeze(image, [0])

  image = tf.subtract(image, 0.5)
  image = tf.multiply(image, 2.0)
  return image

когда мы делаем предварительную обработку изображения, прежде чем отправлять его в нейронную сеть (более конкретно, GoogLeNet), почему они пишут код:

 image = tf.subtract(image, 0.5)
 image = tf.multiply(image, 2.0)

Какова теория этого? почему нам нужна эта процедура. Если я попытаюсь проверить, как это выглядит, используя:

 plt.imshow(image)

Изображение не может отображаться.

Теги:
tensorflow
image-processing

2 ответа

0

Вычитание и умножение выполняются для масштабирования изображений между -1 и 1.

  • 0
    Спасибо за ваш ответ, вы знаете, почему они делают это масштабирование?
0

Они делают это, чтобы перемасштабировать изображение на [-1, 1] из [0,1]. Они хотят, чтобы все изображения были в одном формате, поэтому они требуют этого шага.

  • 0
    Спасибо за ваш ответ, я получил точку перепродажи, но что я не понимаю: так как значение пикселя изображения находится между [0, 1] (тот же формат, что вы сказали), то почему они должны масштабироваться, чтобы [-1, 1] (другой формат), вы знаете причину этого? Лучше ли сверточной сети обрабатывать изображение? или другая причина.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню