전송 : http://www.cvchina.info/2012/01/13/kmeans-based-indexing-and-asymmetric-distance-computation-for-ann-search-binary-local-feature-part1/#more-3232
에르베 바이 Jegou 해밍 임베딩 및 대형에 대한 약한 기하학적 일관성 -scale 이미지 검색 과 가장 가까운 이웃 검색을위한 제품 양자화 의 지역 기능을 검색하기 위해 가장 가까운 이웃은 Kmeans 클러스터링, 거꾸로 파일, 비대칭 거리 영감 계산이 바이너리 형식에 적용합니다.
주요 아이디어 :
Kmeans는 거친 인덱스 특징 않습니다.
통계적 데이터 압축 특징으로하는 방법.
조회 기능 인덱스 간의 거리를 비대칭 방식을 사용하여 계산되는 것을 특징으로 검색 할 때.
알고리즘 :
교육 :
- 기능 지수 Kmeans 클러스터링 K 센터를 얻을 사용합니다. 기능 바이너리 형식을 클러스터링 수행, 카테고리 센터는 방법을 업데이트 : 각 비트, 해당 비트 0 모든 기능의 범주 내에서 전도의 통계적 빈도, 중 들어 높다.
- 각 클러스터의 경우, 모든 비트 당 1.0, 1 또는 0의 통계적인 특성 주파수의 클래스에 속하는 것이 50 %의 제 M 비트에 가까운 주파수 걸린다. (가까울 50 % 큰 엔트로피)
교육 후, 우리는 두 종류의 데이터를 얻을 수 :
- K 카테고리 센터를 갖추고 있습니다.
- 각 카테고리의 중심 내용을 설정하고 "비트 위치 식별자를 제 M." 이 식별자는 원래의 압축 기능 기초를 형성한다. (이하에서 투영 벡터라고 함)
인덱스 :
- 반전 된 테이블을 만듭니다
- 상기 각 인덱스에 대해 그 종류를 중심 계산되어야하고 M 비트 서명을 얻기 위해, 카테고리의 특징 투영 벡터에 의해 투영된다. sig_templ로서 지칭 서명이 반전 테이블에 삽입된다.
ANN 검색 :
- 센터 조회 기능 분류 query_cluster 및 투영되는 종류의 특징 벡터를 계산하는 단계를 sig_query M 비트를 얻었다.
- 쿼리 중심 범주 투영 벡터의 제거에 대응하는 비트 위치에서 카테고리를 산출하고, dist_base이라.
- 계산 된 sig_query sig_templ에서 테이블 엔트리 반전 입력에 대응 query_cluster 이송, dist_sig이라. 이어서 질의 특징의 거리 및 인덱싱 기능 DIST = dist_base + dist_sig. 최소 거리가 이와 같은 임계 값 미만으로, 획득하는 ANN을 찾기 위해 고려 될 수있다.
시간의 복잡성의 작은 분석 :
우리는 가정이 K = 40, M이 64 = 상기 32Byte 를 ORB (인덱스에 대한 가정이 특징 1K)
그런 다음 각 ANN은 어떻게 검색
32Byte (40)는 약 + 25 8Byte 해밍 거리 계산의 해밍 거리를 계산합니다.
철저한 비교 검색 :
해밍 거리가 1000 32Byte를 계산
빠른 : 20 배
- 예 :
- 실험 구성 :
- 특성 : 오브
- 윈 / 앤 매치 임계 값 : 50
- K = 40
- 다음 그림) :( RANSAC가 일치하지 않고 전체 검색 결과 화상을 도시
RANSAC 후 :
다음 그림은 ANN 검색 모드, 화상 대조 결과 :( 없음 RANSAC를 나타낸다)
RANSAC 후 :
알 수있는 바와 같이, 점의 수와 일치하는 것은 크게 감소 될 것입니다. 그 이유는 고유의 결함이 색인입니다. (두 자체 가까운 기능, 다른 클러스터로 분류됩니다). 아마도 멀티 할당의 사용은 개선 될 것입니다.
그리고 다른 코드는 재발의 파트 2를 대조.
HTTPS : //my.oschina.net/dake/blog/196639 재현