【问题标题】:How to convert matrix to a keras compatible image?如何将矩阵转换为与 keras 兼容的图像?
【发布时间】:2018-02-10 20:06:22
【问题描述】:

我想要做的是转换类似这个矩阵的东西(python中的二维列表)

0 0 0

1 1 1

0 0 0

到这样的图像

黑色黑色黑色

白白白

黑色黑色黑色

哪个会兼容keras的卷积层?

附言

我缺乏对 keras 使用的“图像”的实际数据结构的了解,因此我陷入了困境。如果可能的话,如果有人也能告诉我图像是哪种数据结构,那就太好了。我目前的猜测是宽度、高度和 RGB 值的 3 维数组,或者单色图像的 2 维数组。但是,我不确定它是 0 到 1 还是 0 到 255 之间的值。我还怀疑该值必须是“float32”类型,但我不确定如何处理这些事实。

【问题讨论】:

    标签: python python-3.x keras


    【解决方案1】:

    Keras 是数字,所以,01 非常适合该任务,您无需执行任何其他操作,除了观察第一层所需的 input_shape

    如果您使用 0 到 255 也不是什么大问题,但标准是使用 0 到 1。重要的是您的输出与您使用的最后一个“激活”相匹配。 (例如:'sigmoid' 激活将给出 0 到 1 之间的输出)。

    卷积层输入形状:

    为了将数据作为卷积层的输入,您必须像这样对数据进行整形:

    (NumberOfImages, Width, Heigth, channels) #W and H may be inverted, but it doesn't matter much as long as they will not be swapped along the model.    
    

    例如,通道代表具有红色、绿色、蓝色通道的图像。有些图像可能有 4 个通道。黑白图像只有一个通道。

    图像是什么数据结构?

    这在很大程度上取决于您使用哪个库来加载图像。 如果您有 numpy 数组,只需像以前一样使用从 0 到 1 的数字。

    当使用pillow(一个图片库)时,它会返回 0 到 255 之间的值,你所要做的就是从中创建一个 numpy 数组,然后除以 255。

    from PIL import Image
    import numpy as np
    
    im = Image.open(filename)
    im = im.resize(size,Image.LANCZOS) #if your images are not already the size you want    
    im = np.asarray(im)/255
    

    【讨论】:

    • 非常感谢!我的代码现在可以工作了!我还希望能够将这些矩阵显示为渲染图像(而不是疯狂地打印到我的控制台上的 0 和 1)。我只需要将形状数组(宽度、高度、通道)转换为 0 到 255 之间的值,是吗?
    • 使用matplotlib,您可以绘制从 0 到 1 的 numpy 数组,没问题。可能还有许多其他库用于将 numpy 数组绘制为图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多