在文件中保存图像数组的最佳方法(Python)

时间:2018-03-23 07:38:30

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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