tf.image.resize_bilinear () - когда align_corners = False - PullRequest
0 голосов
/ 28 июня 2018

Я использую Tensorflow 1.4.0

Tensorflow tf.image.resize_bilinear () имеет аргумент под названием «align_corners», и я путаюсь с поведением, когда мы устанавливаем его в False. В официальном документе говорится:

align_corners: необязательный bool. По умолчанию False. Если это правда, центры 4 угловых пикселей входного и выходного тензоров выравниваются, сохраняя значения в угловых пикселях. По умолчанию false.

Когда я использую tf.image.resize_bilinear () с align_corners = True в следующей программе:

import tensorflow as tf
sess = tf.Session()
x = tf.Variable(tf.Variable([[[[1],[2]],[[3],[4]]]]))
pooling_output_size = [4, 4]
pool_output = tf.image.resize_bilinear(x, pooling_output_size,align_corners=True)
sess.run(tf.global_variables_initializer())
print pool_output.eval(session=sess)

выводит

[[[[1.       ]
   [1.3333334]
   [1.6666667]
   [2.       ]]

  [[1.6666667]
   [2.       ]
   [2.3333335]
   [2.6666667]]

  [[2.3333335]
   [2.6666665]
   [3.       ]
   [3.3333335]]

  [[3.       ]
   [3.3333333]
   [3.6666667]
   [4.       ]]]]

какие углы правильно выровнены.

Однако, когда я установил align_corners = False, я получил следующие странные выходные данные

[[[[1. ]
   [1.5]
   [2. ]
   [2. ]]

  [[2. ]
   [2.5]
   [3. ]
   [3. ]]

  [[3. ]
   [3.5]
   [4. ]
   [4. ]]

  [[3. ]
   [3.5]
   [4. ]
   [4. ]]]]

Кто-нибудь понимает, почему Tensorflow будет использовать эту странную реализацию? Я нигде не нашел объяснения.

На самом деле билинейная повышающая дискретизация PyTorch также имеет аргумент align_corner, когда вы устанавливаете ее в True, она работает хорошо. Но если вы установите его в False, он будет отличаться от поведения Tensorflow. Сейчас я полностью запутался с их реализациями (возможно, просто используйте align_corners = True, все будет в порядке).

1 Ответ

0 голосов
/ 02 октября 2018

Для обратной совместимости, кажется. Ссылка

https://hackernoon.com/how-tensorflows-tf-image-resize-stole-60-days-of-my-life-aba5eb093f35

предлагает мне всегда использовать align_corners = True

...