Альтернатива Tensorflow для crop_and_resize для ТПУ - PullRequest
0 голосов
/ 01 апреля 2020

Я пытался использовать crop_and_resize , чтобы получить способ увеличения определенных областей изображения в качестве механизма внимания для распознавания мелкозернистых изображений.

Я делаю это хотя на TPU, и при попытке обучения я получаю сообщение об ошибке, говорящее о том, что операция недоступна.

Поэтому я пытаюсь найти способ взять пакет изображений и партия соответствующих координат ограничивающего прямоугольника и размер возвращаемых посевов, размер которых соответствовал размеру исходных изображений.

Я не мог понять, как это сделать в качестве операции над полными тензорами, поэтому я попытался все oop:

result = tf.Variable([tf.image.resize(images[0][tx[0]:tx[0]+tl[0], ty[0]:ty[0]+tl[0], :], [1200, 1200])])
for i in range(1, tf.shape(images)[0]):
    result = tf.concat([result, [tf.image.resize(images[i][tx[i]:tx[i]+tl[i], ty[i]:ty[i]+tl[i], :], [1200, 1200])]], axis=0)

Итак, на словах я делаю следующее:

  1. Инициализация переменной с измененным размером первого изображения в пакете (с соответствующей ограничительной рамкой) )
  2. Зацикливание на остальной части пакета и конкатенация на мою переменную.

Это прекрасно работает, если я запускаю его как отдельный скрипт, но не работает при попытке обучить или с помощью модели предсказывают:

ValueError: "result" has shape (1, 1200, 1200, 3) before the loop, but shape (2, 1200, 1200, 3) after one iteration. TensorFlow control flow requires it stays the same or be more specific.

Кто-нибудь знает правильный способ сделать это? Могу ли я выполнить операцию обрезки без необходимости l oop?

Мне также интересно, собирается ли Tensorflow узнать, как распространять обратно на этом.

Кстати, я использую Tensorflow 2

1 Ответ

1 голос
/ 01 апреля 2020

Это прояснит для вас. Tensorflow хочет, чтобы все переменные l oop оставались согласованными с каждой итерацией. Так что слияние на тензор и рост не допускается. Вы должны определить больший тензор и заполнить его в пределах al oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...