我如何将 SIFT 描述符与 Apache Spark kmeans 聚类(通过或不通过 pickle)
How can I cluster SIFT descriptors with Apache Spark kmeans (via pickle or not)
我使用 OpenCV 3.1 计算了一批图像的 SIFT 描述符。
每个描述符都有一个形状 (x, 128)
,我使用基于 pickle 的 .tofile
函数将每个描述符写入磁盘。在图像样本中,x 在 2000 和 3000 之间
我希望通过 pyspark 使用 Apache Spark 的 kmeans 集群,但我的问题分为两部分。
- 酸洗是传输描述符数据的最佳方式
- 如何从一堆 pickle 文件中获取集群就绪数据集以及我应该注意哪些陷阱(Spark、pickling、SIFT)
我感兴趣的是 python2 代码的序列,假设在描述符生成代码和集群环境之间存在一些公共存储
Is pickling the best way to transfer the descriptor data?
best 在这里非常具体。你可以试试 pickle 或 protobuf。
How do I get from the bunch of pickle files to a cluster ready dataset?
- 反序列化您的数据。
- 创建一个 RDD,它将包含向量(即
RDD将是一个特征,一个128维的向量))。
- 缓存 RDD,因为 kMeans 会一次又一次地使用它。
- 训练 kMeans 模型,得到你的集群。
例如,LOPQ 人员,请执行以下操作:
C0 = KMeans.train(first, V, initializationMode='random', maxIterations=10, seed=seed)
其中 first
是我提到的 RDD,V
是簇数,C0
是计算的簇(在 GitHub 的第 67 行检查) .
- 取消坚持你的 RDD。
我使用 OpenCV 3.1 计算了一批图像的 SIFT 描述符。
每个描述符都有一个形状 (x, 128)
,我使用基于 pickle 的 .tofile
函数将每个描述符写入磁盘。在图像样本中,x 在 2000 和 3000 之间
我希望通过 pyspark 使用 Apache Spark 的 kmeans 集群,但我的问题分为两部分。
- 酸洗是传输描述符数据的最佳方式
- 如何从一堆 pickle 文件中获取集群就绪数据集以及我应该注意哪些陷阱(Spark、pickling、SIFT)
我感兴趣的是 python2 代码的序列,假设在描述符生成代码和集群环境之间存在一些公共存储
Is pickling the best way to transfer the descriptor data?
best 在这里非常具体。你可以试试 pickle 或 protobuf。
How do I get from the bunch of pickle files to a cluster ready dataset?
- 反序列化您的数据。
- 创建一个 RDD,它将包含向量(即 RDD将是一个特征,一个128维的向量))。
- 缓存 RDD,因为 kMeans 会一次又一次地使用它。
- 训练 kMeans 模型,得到你的集群。
例如,LOPQ 人员,请执行以下操作:
C0 = KMeans.train(first, V, initializationMode='random', maxIterations=10, seed=seed)
其中 first
是我提到的 RDD,V
是簇数,C0
是计算的簇(在 GitHub 的第 67 行检查) .
- 取消坚持你的 RDD。