Keras img_to_array 中有什么?(与 C# 中的位图数组相比)

PCG*_*PCG 2 c# rgb keras

我试图了解什么是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] ......
Run Code Online (Sandbox Code Playgroud)

似乎它们是图像的 RGB 通道,但为什么是分数?但是,如果我查看 C# 中的位图,它们是整数,例如 (Alpha,R,G,B)

[100,123,024,132],[021,055,243,015].... 
Run Code Online (Sandbox Code Playgroud)

有人能解释一下 C# 中从 img_to_array 和 Bitmap 数组格式生成的图像数组有什么区别吗?

谢谢,PCG

sdc*_*cbr 5

img_to_arrayKeras 实现的文档字符串中有很好的解释:

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.
    """
Run Code Online (Sandbox Code Playgroud)

因此,它将采用 PIL Image 实例并将其转换为 numpy 数组,dtype 为 float32。如果从 PNG 图像开始,图像中的值将介于 0 和 255 之间。这通常由 8 位无符号整数表示;img_to_array但是会投射到浮动。在您的代码示例中,数组除以 255,这就是为什么最终浮点数介于 0 和 1 之间的原因。