如何将 SIFT 描述符与 Apache Spark kmeans 聚类(通过 pickle 或不通过)



使用 OpenCV 3.1,我计算了一批图像的 SIFT 描述符。每个描述符都有一个形状(x, 128),我使用基于 pickle 的 .tofile 函数将每个描述符写入磁盘。在图像样本中,x 介于 2000 和 3000 之间

我希望通过pyspark使用Apache Spark的kmeans集群,但我的问题是两部分。

  1. 是腌制是传输描述符数据的最佳方式
  2. 如何从一堆泡菜文件到集群就绪数据集以及我应该注意哪些陷阱(Spark、pickling、SIFT)

我感兴趣的是 python 2 代码的序列会是什么样子,假设描述符生成代码和集群环境之间存在一些公共存储

酸洗是传输描述符数据的最佳方式吗?

最好的在这里非常具体。你可以尝试泡菜或protobuf。

如何从一堆泡菜文件获取到群集就绪数据集?

  1. 反序列化数据。
  2. 创建一个RDD,它将向量(即每个元素RDD将是一个特征,一个128维向量))。
  3. 缓存RDD,因为kMeans会一次又一次地使用它。
  4. 训练 kMeans 模型以获取群集。

例如,LOPQ的家伙,做:

C0 = KMeans.train(first, V, initializationMode='random', maxIterations=10, seed=seed)

其中first是我提到的RDD,V是集群的数量,C0计算的集群(在GitHub的第67行检查)。

  1. 取消持久化您的 RDD。

相关内容

  • 没有找到相关文章

最新更新