Невозможно отобразить изображение после вызова tf.image.rgb_to_grayscale - PullRequest
0 голосов
/ 01 февраля 2020

Я работаю над приложением распознавания лиц и подготовил набор данных, который читает изображения jpg, а затем обучает мою нейронную сеть. Чтобы улучшить точность, я решил преобразовать мои изображения в оттенки серого (внутри функции отображения). Вот способ преобразования изображения в тензор:

from PIL import Image

image_data = tf.io.decode_jpeg(
  image_bytes_string,
  channels=3
)

image_data = tf.reshape(image_data , (277, 370, 3))

label = parsed['label']
label = tf.reshape(label, (1,))

return image_data, label

Код отображения изображения:

image_data = dataset_item[0].numpy()
img = Image.fromarray(image_data)
img

После изменения кода для преобразования в оттенки серого код, отображающий изображение отображает эту ошибку:

KeyError: ((1, 1, 1), '|u1')
During handling of the above exception, another exception occurred:
Cannot handle this data type

Код в градациях серого:

image_data = tf.io.decode_jpeg(
  image_bytes_string,
  channels=3
)

grayscale = tf.image.rgb_to_grayscale(
  image_data
)

image_data = tf.reshape(grayscale, (277, 370, 1))

label = parsed['label']
label = tf.reshape(label, (1,))

return image_data, label

Есть ли проблема с преобразованием изображения в градации серого или проблема с библиотекой PIL?

UPD: Вот колаб с примером: https://colab.research.google.com/drive/1v72_C5i8HZzSLEy_p6d45EWq1byoF3fe

...