【问题标题】:Resize CSV data using Python and Keras使用 Python 和 Keras 调整 CSV 数据的大小
【发布时间】:2019-01-21 17:21:18
【问题描述】:

我有 CSV 文件需要提供给深度学习网络。目前我的 CSV 文件大小为 360*480,但网络限制它们的大小为 224*224。我在深度学习部分使用 Python 和 Keras。那么如何调整矩阵的大小呢?

我在想,因为纵横比是 3:4,所以如果我将它们调整为 224:(224*4/3) = 224:299,然后将矩阵的宽度裁剪为 224,它可以为目的。但我找不到合适的功能来做到这一点。请提出建议。

【问题讨论】:

    标签: python python-3.x python-2.7 keras deep-learning


    【解决方案1】:

    我找到了一种解决此问题的简短方法。这使用 Python 图像库/Pillow

    import numpy as np
    import pylab as pl
    from PIL import Image
    
    matrix = np.array(list(csv.reader(open('./path/mat.csv', "r"), delimiter=","))).astype("uint8")  #read csv
    imgObj = Image.fromarray(matrix)  #convert matrix to Image object
    resized_imgObj = img.resize((224,224))  #resize Image object
    imgObj.show()
    resized_imgObj.show()
    resized_matrix = np.asarray(img)  #convert Image object to matrix
    

    虽然 numpy 模块也有 resize 功能,但不如上述方式有用。

    当我尝试它时,调整大小的矩阵已经失去了原始矩阵的所有复杂性和美学方面。这可能是由于 numpy.ndarray.resize 不插入 并且 缺少的条目用零填充

    所以,对于这种情况,Image.resize() 更有用。

    【讨论】:

    • 一直在寻找这个,但我有一个问题,我可以使用 pandas 来读取我的 csv 文件而不是 csv.reader 行,然后在 for 语句中运行以下代码一次处理每张图像
    • @Dhouibiiheb 是的,当然可以使用 pandas 来读取 .csv 文件。你只需要在下一步之前确保它是一个 np 数组。
    • 并确保它是一个数组矩阵后,所有图像都在同一个数组矩阵中,对吗?所以 imgObj 变量将包含所有图像还是仅包含第一个图像?你能解释一下吗
    【解决方案2】:

    图像处理

    如果您想对数据作为图像进行重大更改(即在像素值之间进行插值,假设它们代表照片),那么您可能需要为此使用适当的图像处理库。您不需要将它们视为原始矩阵(数字的 csv),而是将它们转换为 rgb 图像,进行所需的转换,然后将它们转换回 numpy 矩阵。

    OpenCV (https://docs.opencv.org/3.4/da/d6e/tutorial_py_geometric_transformations.html) 或 Pillow (https://pillow.readthedocs.io/en/3.1.x/reference/Image.html) 可能有用。

    【讨论】:

      【解决方案3】:

      如果您使用图像,我认为您正在寻找 cv.resize()。 如果没有,请尝试numpy.ndarray.resize()

      【讨论】:

      • 谢谢。但是在阅读之后和截断之前,如何调整矩阵的大小以保持纵横比相同。 keras 中是否有任何捷径/内置方法可以帮助我将数据调整为传统的 224*224 ?
      • 我不确定你在问什么。你的输入是图像?那么这个编辑应该会有所帮助
      【解决方案4】:

      您还可以将 csv 文件转换为列表,截断列表,然后将列表转换为 numpy 数组,然后使用 np.reshape。

      【讨论】:

      • 谢谢。但是与将 3 * 6 转换为 2 * 9 之类的东西无关,就像那样。我的意思是重塑元素的总数保持不变。但是在这里我想得到一个具有相同纵横比但元素较少的矩阵。更像是“作物”……
      • 在这种情况下,我不知道如何提供帮助。我会尽快删除这篇文章。
      猜你喜欢
      • 1970-01-01
      • 2020-01-15
      • 2019-06-27
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2012-06-30
      • 2018-07-14
      • 2021-08-26
      相关资源
      最近更新 更多