【问题标题】:The best way of saving array of images in a file (Python)在文件中保存图像数组的最佳方法(Python)
【发布时间】:2018-09-01 19:57:38
【问题描述】:

对于我的游戏内 AI 项目,我使用计算机视觉。因此,对于监督学习,我会捕获屏幕并按下按键。
由于我的硬盘空间有限,我无法存储大量数据(大量大小为 320x240 的图像)。到目前为止,我发现以 jpeg 格式保存帧效果最好(1000 帧 ~20MB)。
我还尝试使用 numpy(.npy,1000 帧 ~220 MB)和 h5py(.h5,1000 帧 ~220MB)保存图像数组。通过这种方式,文件太大而无法存储足够量的数据用于 AI 训练(即使使用 gzip 压缩)。

但是,保存在 jpeg 中会导致读/写速度非常慢。那么,有没有什么办法可以将一组图像存储在一个文件中以具有高读/写速度,同时又很紧凑?
我发现了关于它的有趣研究 (https://stackoverflow.com/a/41425878),但似乎在图像的情况下它没有帮助。

【问题讨论】:

  • 也许使用二进制文件...但问题是您真的需要将所有图像存储在 320x240 中吗?难道你不能“预处理”你的图像在可能的情况下缩小尺寸(不丢失信息),然后在你使用它时重新整形?问题也是为什么你应该存储如此大量的数据......?你需要保留所有东西吗?
  • 很可能是x-y problem。你也没有提到你将如何处理这些数据。压缩可能会使您的数据无法进行进一步处理。我同意达德普的观点。尝试提取特征并存储它们通常是更好的方法
  • @Dadep,它已经“预处理”了,因为图像的原始尺寸是 800x600。是的,我必须首先保留所有数据,因为我的计算机功能不是太强大,无法同时玩和训练 AI。
  • @Piglet,我正在做一辆自动驾驶汽车。因此,我想训练 AI 让汽车保持在一条车道上(目前为止,稍后我将添加功能)。在我的情况下,哪些特征可以很好地提取?我认为即使丢失了 jpeg 格式也能发挥作用——人工智能将能够检测线并保持在一条车道上。
  • @Rustam,我同意 Piglet,你应该提取特征,也可以考虑改变你项目的总体架构。如果你有计算限制,你应该换一种方式思考。您可以编辑您的帖子,以显示您系统的总体图吗?

标签: python machine-learning computer-vision artificial-intelligence


【解决方案1】:

好吧,如果您已经将图像作为(例如 NumPy)数组保存在内存中,那么使用 numpy.saveh5py 保存它们是非常理想的,因为它们都以二进制形式存储数据(与例如 @987654324 相比) @)。要获得更小的文件大小,您可以使用compression filtersHDF5/h5py 之一。

您可以通过另存为 jpeg 来获得更小的文件大小的原因是因为这是一种有损压缩格式,这意味着您实际上会丢失数据。要对“原始数据”和“真实图像”格式进行客观比较,请尝试保存为 png。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2020-10-03
    • 2014-11-27
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多