27
1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

Embed Size (px)

Citation preview

Page 1: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

1/26

The Inverted Multi-Index

VGG Oxford, 25 Oct 2012

Victor Lempitsky

joint work with Artem Babenko

Page 2: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

2/26

From images to descriptors

Set of 128D descriptors

Interesting point description:

Interesting point detection:

Page 3: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

3/26

Query process

Dataset of visual

descriptors

Image set:

Query:

Important extras:+ geometric verification+ query expansion

Main operation:Finding similar descriptors

Page 4: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

4/26

Demands

Initial setup:

Dataset size: few million images

Typical RAM size: few dozen gigabytes

Tolerable query time: few seconds

Search problem:

Dataset size: few billion features

Feature footprint: ~ a dozen bytes

Tolerable time: few milliseconds per

feature

Dataset of visual

descriptors

Each image has ~1000 descriptors

nearest neighbor search problem we are tackling

Page 5: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

5/26

Meeting the demandsMain observation: the vectors have a specific structure: correlated dimensions, natural image statistics, etc…Technologies:

• Dimensionality reduction• Vector quantization• Inverted index• Locality-sensitive hashing• Product quantization• Binary/Hamming encodings

Best combinations (previous state-of-the-art):• Inverted index + Product Quantization [Jegou et al.

TPAMI 2011]• Inverted index + Binary encoding [Jegou et al. ECCV

2008]

Our contribution:Inverted Multi-Index

New state-of-the-art for BIGANN:• Inverted multi-index + Product Quantization [CVPR

2012]

Page 6: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

6/26

The inverted index

Visual codebook

"Visual word"

Sivic & Zisserman ICCV 2003

Page 7: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

7/26

Querying the inverted index

• Have to consider several words for best accuracy

• Want to use as big codebook as possible

• Want to spend as little time as possible for matching to codebooks

conflict

Query:

Page 8: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

8/26

Product quantization

[Jegou, Douze, Schmid // TPAMI 2011]:1. Split vector into correlated subvectors2. use separate small codebook for each chunk

For a budget of 4 bytes per descriptor:

1. Can use a single codebook with 1 billion codewords many

minutes 128GB

2. Can use 4 different codebooks with 256 codewords each < 1

millisecond 32KBIVFADC+ variants (state-of-the-art for billion scale datasets) =inverted index for indexing + product quantization for reranking

Quantization vs. Product quantization:

Page 9: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

9/26

The inverted multi-indexOur idea: use product quantization for indexing

Main advantage:For the same K, much finer subdivision achieved

Main problem:Very non-uniform entry size distribution

Page 10: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

10/26

Querying the inverted multi-index

1 2

3 4

5 6

7

8

9

10

Input: queryOutput: stream of entriesAnswer to the query:

Page 11: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

11/26

Querying the inverted multi-index – Step 1

inverted index

inverted multi-index

number of entries K K2

operations to match to codebooks

2K+O(1)

2K+O(1)

Page 12: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

12/26

Querying the inverted multi-index – Step 2

0.60.84.16.18.19.1

2.52.7 6 8 10 11

3.53.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

0.6 0.84.16.18.19.1

2.52.7 6 8 10 11

3.53.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

0.60.8 4.16.18.19.1

2.52.7 6 8 10 11

3.53.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

0.60.84.16.18.19.12.5 2.7 6 8 10 11

3.53.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

0.60.84.16.18.19.1

2.52.7 6 8 10 11

3.53.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

0.60.84.16.18.19.1

2.52.7 6 8 10 113.5 3.7 7 9 11 12

6.56.7 10 12 14 15

7.57.7 11 13 15 1611.5

11.7 15 17 19 20

1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6123456

Step 2: the multi-sequence algorithm

Page 13: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

13/26

Querying the inverted multi-index

Page 14: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

14/26

Experimental protocolDataset:

1. 1 billion of SIFT vectors [Jegou et al.]

2. Hold-out set of 10000 queries, for which Euclidean nearest neighbors are known

Comparing index and multi-index:

Set a candidate set length T

For each query:

• Retrieve closest entries from index or multi-index and concatenate lists

• Stop when the next entry does not fit

For small T inverted index can return empty list

• Check whether the true neighbor is in the list

Report the share of queries where the neighbor was present (recall@T)

Page 15: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

15/26

Performance comparison

Recall on the dataset of 1 billion of visual descriptors:

100x

Time increase: 1.4 msec -> 2.2 msec on a single core(with BLAS instructions)

"How fast can we catch the nearest neighbor to the query?"

K = 214

Page 16: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

16/26

Performance comparison

Recall on the dataset of 1 billion 128D visual descriptors:

Page 17: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

17/26

Time complexity

For same K index gets a slight advantage because of BLAS instructions

Page 18: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

18/26

Memory organization

Overhead from multi-index:

Averaging over N descriptors:

Page 19: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

19/26

Why two?

For larger number of parts:

• Memory overhead becomes larger

• Population densities become even more non-uniform (multi-sequence algorithm has to work harder to accumulate the candidates)

In our experiments, 4 parts with small K=128 may be competitive for some datasets and reasonably short candidate lists (e.g. duplicate search). Indexing is blazingly fast in these cases!

Page 20: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

20/26

Multi-Index + Reranking

• "Multi-ADC": use m bytes to encode the original vector using product quantization

• "Multi-D-ADC": use m bytes to encode the remainder between the original vector and the centroid Same architecture as IVFADC of Jegou et al., but replaces

index with multi-index

faster (efficient caching possible for distance computation)

more accurate

Evaluation protocol:

1. Query the inverted index for T candidates

2. Reconstruct the original points and rerank according to the distance to the query

3. Look whether the true nearest neighbor is within top T*

Page 21: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

21/26

Multi-ADC vs. Exhaustive search

Page 22: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

22/26

Multi-D-ADC vs State-of-the-art

State-of-the-art [Jegou et al.]

Combining multi-index + reranking:

Page 23: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

23/26

Performance on 80 million GISTs

Multi-D-ADC performance:

Index vs Multi-index:

Same protocols as before, but on 80 million GISTs (384 dimensions) of Tiny Images [Torralba et al. PAMI'08]

Page 24: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

24/26

Retrieval examplesExact NNUncompressed GIST

Multi-D-ADC16 bytes

Exact NNUncompressed GIST

Multi-D-ADC16 bytes

Exact NNUncompressed GIST

Multi-D-ADC16 bytes

Exact NNUncompressed GIST

Multi-D-ADC16 bytes

Page 25: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

25/26

Multi-Index and PCA (128->32 dimensions)

Page 26: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

26/26

Conclusions

• A new data structure for indexing the visual descriptors

• Significant accuracy boost over the inverted index at the cost of the small memory overhead

• Code available (will soon be online)

Page 27: 1/26 The Inverted Multi-Index VGG Oxford, 25 Oct 2012 Victor Lempitsky joint work with Artem Babenko

27/26

Other usage scenarios

• Large-scale NN search' based approaches:

Holistic high dimensional image descriptors: GISTs, VLADs, Fisher vectors, classemes…

Pose descriptors

Other multimedia

• Additive norms and kernels: L1, Hamming, Mahalanobis, chi-square kernel, intersection kernel, etc.

(Mostly) straightforward extensions possible: