Как сэмплировать тензор изображения в тензорном потоке

У меня есть один тензор данных изображения с формой B*H*W*C и один тензор положения с формой B*H*W*2. Значения в тензоре положения являются координатами пикселей, и я хочу выполнить выборку пикселей в тензоре данных изображения в соответствии с этими координатами пикселей. Я пробовал один способ сделать это, например преобразовать тензор в одномерный тензор, но я думаю, что это действительно неудобно. Интересно, смогу ли я реализовать это более удобным подходом, например, сопоставлением матриц (например, переназначением в opencv).


person lhao0301    schedule 08.10.2016    source источник


Ответы (1)


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

Возможно, в качестве отправной точки бег

sess = tf.Session()
np_img, np_pos = sess.run([tf_img, tf_pos], feed_dict={...})

преобразует тензоры в массивы numpy, что может упростить ваши операции.
В противном случае 1D-тензор не так уж и плох, и есть функции TF для легкого изменения формы.

person SuaveSouris    schedule 25.10.2016