如何在插入LMDB数据集之前压缩numpy数组?

时间:2017-06-06 14:55:19

标签: numpy lmdb

我有[82,3,780,1024]张量的大小 - 合并82个不同的图像帧 - 采用uint8格式。一旦我开始插入LMDB,LMDB在大小方面就会变得疯狂。在插入之前有没有办法压缩这些张量?

要插入,请按照问题here

我找到了cv2.encodecv2.decode的解决方案,但它并不适用于此类缩略词。

1 个答案:

答案 0 :(得分:0)

您可以使用众多快速内存中压缩算法之一。一个非常好的选择是使用blosc库,它本身允许您在这种情况下使用一些专门(或表现良好)的算法。

您可以通过调用(在blosc版本1.4.4中)获得支持的压缩算法列表

import blosc
blosc.compressor_list()
['blosclz', 'lz4', 'lz4hc', 'snappy', 'zlib', 'zstd']

您可以使用通常的blosc.compress(bytesobj, typesize=8, clevel=9, shuffle=1, cname='blosclz')blosc.decompress(bytesobj)方法压缩/解压缩任何二进制数据或字符串。

如果我需要速度,我通常使用blosc变体之一,如果我想要非常好的压缩比(但运行时间较慢),我通常使用bz2库。