tf.image.crop_and_resize с bbox, заданным другой функцией python - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь проверить существующую сеть на обрезанных изображениях. У меня довольно большой набор данных, поэтому я использую API набора данных tenorflow. Сначала я создал набор данных, содержащий все имена интересующих меня изображений, а затем с помощью функции flat_map () сопоставил набор данных имен изображений с набором обрезанных фрагментов изображений.

Итак, вот вопрос. Я не знаю, сколько патчей будет сгенерировано для этого изображения, у меня есть еще одна функция python get_image_regions, которая возвращает массив блоков размером n на 4.

Итак, я хочу использовать что-то вроде:

boxes = tf.py_func (get_image_regions, [im_path], [tf.float32])

, чтобы получить набор ящиков и использовать эти ящики в качестве входных данных для tf.image.crop_and_resize ()

Однако, поскольку возвращаемое значение из py_func имеет неизвестную форму и ранг, его нельзя использовать в качестве входных данных для функции crop_and_resize (). Есть ли другой способ обойти это?

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете tf.reshape() тензор, если вы уверены, что форма будет выглядеть следующим образом:

boxes = tf.reshape( tf.py_func(get_image_regions, [im_path], [tf.float32]), [ n, 4 ] )

Это исправит форму для остальной части графика и позволит вам скорректировать тензор до tf.image.crop_and_resize(), но выдаст ошибку, если ему когда-либо будут предоставлены данные неправильного размера.

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