Я работаю над приложением распознавания лиц и подготовил набор данных, который читает изображения 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