【问题标题】:Fast way to read and process many JPG images读取和处理许多 JPG 图像的快速方法
【发布时间】:2014-02-16 09:13:43
【问题描述】:

我正在处理一个我处理的项目:

  • 70,000 张 JPG 图片,总计 1 GB
  • 每个文件约为 15kb。
  • 每张图片都是 424x424。

我目前处理这些文件的解决方案是拍摄每个图像,将其裁剪为 150x150,然后将其保存在 NumPy memmap 数组中。我最终得到 1 个尺寸为 70,000 x 150 x 150 x 3(彩色图像)的大型 memmap 数组文件。

我的下一步是遍历这个 memmap 数组并随机采样图像块。然而,我的代码目前运行非常缓慢,最烦人的是,它只使用了大约 10% 的 CPU,HD 读取速度为 1-5 MB/秒。这可能甚至低于不预先计算裁剪的 numpy memmap 数组并每次读取 JPG。

我可以做些什么来更好地利用这里的系统资源?

系统信息

  • Mac OS X
  • 带硬盘的 Macbook Pro

谢谢!

【问题讨论】:

  • 如果您只需要图像的随机子集,为什么不随机选择原始文件并只处理它们呢?此外,您可以启动一个后台线程,它将您的原始图像调整为 150x150 大小。
  • 您使用什么操作系统?我猜你的操作系统在 memmap 后端文件上发出随机 I/O。
  • @nodakai 已编辑额外信息

标签: python image-processing numpy jpeg


【解决方案1】:

首先,@AndreiBoyanov 的评论对我来说听起来很合理。

这是另一种方法。

>>> 7e4 * 150**2 * 3 / 1024.**3
4.400499165058136

memmap 的后端文件将增长到 4.4 GB。如果您的 OS X 机器有更多 RAM,您可以在 5 GB 的 RAM 磁盘上创建后端文件:

这几乎相当于扔掉memmap,但它可以快速解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多