【问题标题】:How can I cluster SIFT descriptors with Apache Spark kmeans (via pickle or not)如何使用 Apache Spark kmeans 对 SIFT 描述符进行聚类(通过 pickle 与否)
【发布时间】:2016-11-12 10:21:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: apache-spark pyspark distributed-computing sift bigdata


    【解决方案1】:

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

    best 在这里非常具体。你可以试试 pickle 或 protobuf。

    如何从一堆 pickle 文件中获取集群就绪数据集?

    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。

    【讨论】:

    • 在从云存储上的多个 CSV 文件中摄取 rdd 时,我可以让 spark 开始持久化它吗?或者有没有办法查看 rdd 的大小以及我需要 spark 的内存量可以访问吗?
    • @Michael Spark 懒惰地评估语句。结果,它会做一些实际的工作,只有当 action 发生,而不是 transformation 时,所以答案是否定的。顺便说一句,好问题,你很自豪地得到了我的支持! :) 顺便说一句,如果你知道 kmeans 我真的需要一些帮助...
    猜你喜欢
    • 2019-01-07
    • 2021-10-30
    • 2016-06-04
    • 2017-04-23
    • 2018-02-15
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多