【发布时间】:2014-09-27 04:17:18
【问题描述】:
我之前保存了一个映射 image_name -> 特征向量列表的字典,文件约为 32 Gb。我一直在使用 cPickle 来加载字典,但由于我只有 8 GB 的 RAM,这个过程需要很长时间。有人建议使用数据库来存储所有信息并从中读取,但这会比从磁盘读取文件更快/更好的解决方案吗?为什么?
【问题讨论】:
-
真的 REALLY 取决于数据的类型和数量。如果计算上可行,您可能还需要考虑仅存储主要组件并即时重新计算其余部分
-
我正在存储筛选描述符,这需要很长时间才能构建,所以我真的不能每次都计算它们。它们是 1 x 128 个向量 docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/…
-
您确实需要考虑是否需要同时提供所有这些数据。如果你有很多图像,你可能一次只需要一个,你可能不会对其他图像做任何事情。我很确定从数据库中一张一张地选择几张图片比一次加载 32GB 数据要快得多;)
-
我确实同时需要它,因为我在整个描述符列表上运行 kmeans 集群,所以我认为没有办法将它们放在主内存中
-
如果您确实在进行需要 32GB 数据存储在内存中的计算,那么数据库将无济于事。我会重新考虑你的算法或获得更多的内存。另见stackoverflow.com/questions/6372397/…
标签: python database computer-vision pickle