2012-06-18 19 views
2

BOW 개체 감지로 작업 중이며 인코딩 단계에서 작업 중입니다. 나는 인코딩 단계에서 kd-tree를 사용하는 몇 가지 구현을 보았지만, 대부분의 글은 kmeans 클러스터링이 갈 길이라고 제안했다. 둘의 차이점은 무엇입니까?은 kmeans 클러스터링 대신 kd-tree입니까?

답변

3

kd-tree AFAIK는 라벨링 단계에 사용됩니다. AFAIK는 많은 그룹에 클러스터링 할 때 훨씬 빠르며, 수천 개가 아니라도 수백 개가 될 경우 훨씬 간단합니다. 각 그룹에 대한 모든 거리의 argmin을 간단하게 가져 오는 순진한 접근 방식 인 k- 다른 사람이 내가 ussually와 함께 http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html을 사용하여 어떤 그룹과 훈련 데이터 세트의 레이블 동안 http://en.wikipedia.org/wiki/K-means_clustering 실제 클러스터링 알고리즘, 빠른 항상 매우 정확한 것은 아니지만 그것의 일부 구현, 그룹을 반환 의미 http://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.vq.kmeans2.html

+0

따라서 명확하게하기 위해 kmeans를 사용하여 이미지 설명자를 양자화합니다. 그런 다음 해당 디스크립터에서 kdtree를 만들어 객체 인식에서 가장 가까운 이웃을 검색 할 수 있습니까? – mugetsu

+0

@mugetsu'그렇다면 당신은 kdtree를 그 descriptors에서 만들 것입니다. 저는 몇 가지 벤치 마크를했습니다. kdtree가 정말 많은 수의 그룹과 작업 할 때 kodtree를 물에서 완전히 날려 버렸습니다. 몇 가지 테스트를 실행하십시오 :) –

+0

그래서 kdtree를 사용하여 히스토그램과 SVM을 건너 뛰시겠습니까? 나는 이것이 어떻게 작동하는지 혼란스러워한다. http://stackoverflow.com/questions/11091972/implementing-bags-of-words-object-recognition-using-vlfeat – mugetsu

5

물체 탐지에서 k-means는 기술자를 양자화하는 데 사용됩니다. kd 트리는 양자화가 있거나없는 디스크립터를 검색하는 데 사용할 수 있습니다. 각 접근 방식에는 장단점이 있습니다. 특히, 디스크립터 차원 수가 20을 초과하는 경우, kd-trees는 무차별 대항 탐색보다 훨씬 뛰어납니다.

+0

SIFT 기술자를 사용하고 있는데, 128 차원, 그래서 내 인코딩 단계에서 나는 단지 k- 수단으로 양자화해야한다고 생각해? – mugetsu

+1

각 레벨에서 어휘 검색 및 무차별 대항 검색을 통해 계층 적 K- 평균 클러스터링을 사용하여 뛰어난 성능을 달성했습니다. 성능을 더 향상시켜야 할 필요가 있다면 PCA를 통한 차원 감소와 결합 된 지역 민감한 해싱 또는 kd 트리를 살펴 보았습니다. –

+0

'PCA를 통한 차원 축소'에 +1 –