我有[82,3,780,1024]张量的大小 - 合并82个不同的图像帧 - 采用uint8格式。一旦我开始插入LMDB,LMDB在大小方面就会变得疯狂。在插入之前有没有办法压缩这些张量?
要插入,请按照问题here
我找到了cv2.encode
和cv2.decode
的解决方案,但它并不适用于此类缩略词。
答案 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
库。