2016-07-10 4 views
1

OpenCV 3.1 사용 이미지 묶음에 대한 SIFT 기술자를 계산했습니다. 각 디스크립터의 모양은 (x, 128)이며 pickle 기반의 .tofile 함수를 사용하여 각 디스크립터를 디스크에 기록했습니다. 이미지 샘플에서 x는 2000 ~ 3000입니다.아파치 스파크 kmeans와 함께 SIFT 기술자를 클러스터링하는 방법 (피클을 사용하거나 사용하지 않음)

저는 Apache Spark의 kmeans를 pyspark를 통해 클러스터링하고 싶지만 제 질문은 2 부분입니다.

  1. 가 어떻게 클러스터 준비 데이터 세트에 피클 파일의 무리에서받을 수 있나요 기술자 데이터를 전송하는 가장 좋은 방법을 산 세척하고 어떤 함정은 내가 (스파크, 산세, SIFT)
  2. 알고 있어야합니다

내 관심은 순서가 기술자 생성 코드와

답변

1

가 선택되는 클러스터링 환경 사이의 일반적인 저장이 가정 파이썬 2 코드를 어떻게 보이는지에 설명자 데이터를 전송하는 가장 좋은 방법은 무엇입니까?

가장 좋은 것은입니다. 피클이나 프로토 불을 시험해 볼 수 있습니다.

피클 파일 묶음에서 클러스터 준비 데이터 세트로 어떻게 이동합니까?

  1. 데이터를 비 직렬화하십시오.
  2. 벡터를 줄이는 RDD를 만듭니다 (즉, RDD의 모든 요소는 128 차원 벡터의 기능입니다)).
  3. kMeans에서 반복해서 사용하기 때문에 RDD를 캐시하십시오.
  4. 클러스터를 얻으려면 kMeans 모델을 교육하십시오.

는 예를 들어, LOPQ의 사람은, 수행 first 내가 언급하고있는 RDD입니다

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

, V은 클러스터의 수와 C0 계산 클러스터 (GitHub에 라인 67에서 그것을 확인입니다).

  1. RDD를 푸시합니다.
+0

클라우드 저장소에있는 여러 개의 CSV 파일에서 가져 오는 동안 rdd를 계속 유지하려면 스파크 시작을 할 수 있습니까? 그렇지 않으면 rdd가 얼마나 커질지 그리고 따라서 RAM에 액세스 할 수 있도록 스파크가 필요한지 확인하는 방법이 있습니까? ? – mobcdi

+0

@Michael Spark은 지연 진술을 평가합니다. 결과적으로 실제 작업을 수행하게됩니다. * 작업 *이 발생했을 때만 * 변환 *이 발생하지 않기 때문에 해당 작업에 대한 대답은 '아니오'입니다. 좋은 질문, u 자존심과 함께 내 upvote있어! :) BTW, 당신이 [kmeans] (http://stackoverflow.com/questions/39260820/is-sparks-kmeans-broken)에 대해 알고 있다면 나는 정말로 도움이 필요합니다 ... – gsamaras