Что находится в Keras img_to_array?(по сравнению с массивом растровых изображений в C #) - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь понять, что в keras.preprocessing.image.img_to_array?

https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/python/keras/_impl/keras/preprocessing/image.py

Когда я посмотрел на содержимое массива, они выглядят следующим образом (все элементы находятся в float):

image1 = img_to_array(image.load_img(ImagePath, target_size=(128,128))) / 255

[0.16470588743686676, 0.3019607961177826, 0.07450980693101883], [0.1we23423423486676, 0.3023423423423423, 0.01353463453458483] ......

Кажется, они RGBканалы изображения, но почему это в долях?Тем не менее, если я посмотрю на растровое изображение в C #, они представлены в целых числах, таких как (альфа, R, G, B)

[100,123,024,132],[021,055,243,015].... 

Может кто-нибудь объяснить, в чем разница в массив изображения, созданный из img_to_array и Bitmapформаты массивов в C #?

Спасибо, PCG

1 Ответ

0 голосов
/ 13 февраля 2019

img_to_array хорошо объяснено в строке документации реализации Keras :

def img_to_array(img, data_format='channels_last', dtype='float32'):
    """Converts a PIL Image instance to a Numpy array.
    # Arguments
        img: PIL Image instance.
        data_format: Image data format,
            either "channels_first" or "channels_last".
        dtype: Dtype to use for the returned array.
    # Returns
        A 3D Numpy array.
    # Raises
        ValueError: if invalid `img` or `data_format` is passed.
    """

Таким образом, он возьмет экземпляр PIL Image и превратит его в массив numpy с dtype.float32.Если вы начинаете с PNG-изображения, значения внутри изображения будут находиться в диапазоне от 0 до 255. Обычно это представляется 8-разрядным целым числом без знака;img_to_array однако будет брошен на плавание.В вашем примере кода массив делится на 255, поэтому в результате вы получаете значения с плавающей точкой от 0 до 1.

...