Ошибка с tf.image.convert_image_dtype?Значения не масштабируются - PullRequest
0 голосов
/ 03 марта 2019

Я использую Tensorflow's image.convert_image_dtype https://www.tensorflow.org/api_docs/python/tf/image/convert_image_dtype для преобразования png dtype uint16 в float32.

Использование Tensorflow 1.12.0.

Согласно документации: Ожидается, что изображения, представленные с использованием значений с плавающей запятой, будут иметь значения в диапазоне [0,1).Ожидается, что данные изображения, хранящиеся в целочисленных типах данных, будут иметь значения в диапазоне [0, MAX], где MAX - наибольшее положительное представимое число для типа данных. Эта операция преобразует между типами данных, соответственно масштабируя значения перед приведением .

Это должно поместить мои значения в [0,1) для преобразования с плавающей запятой, но при оценке нового float32тензор, мои белые пиксели около 65535 - максимум для uint16.Похоже, что никакого увеличения или уменьшения масштаба не произошло.

Я неправильно выполнял операцию?Должен ли я просто разделить элементы на 65535, чтобы получить правильно отформатированный тензор с плавающей точкой?

1 Ответ

0 голосов
/ 04 марта 2019

Я нашел проблему.Использование функции resize перед преобразованием типов изменяет тип тензора, поэтому Tensorflow не будет правильно выполнять масштабирование.

Я использовал:

#CAUSES SCALING ISSUE
file1 = tf.read_file("my_filename_here.png")
img = tf.image.decode_png(file1, channels=1, dtype=tf.uint16)
sizedImage = tf.image.resize_images(img, shape, shape)
finalimg = tf.convert_image_dtype(sizedImage, tf.float32)

Это не привело к масштабированию.Исправлено преобразованием непосредственно после декодирования.

#CORRECT
file1 = tf.read_file("my_filename_here.png")
img = tf.image.decode_png(file1, channels=1, dtype=tf.uint16)
img = tf.convert_image_dtype(img, tf.float32)
finalImage = tf.image.resize_images(img, shape, shape)

Я думал, что смогу сделать его более эффективным, уменьшив масштаб перед преобразованием, но это нарушает его.В итоге: Делайте convert_image_dtype сразу после декодирования.

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