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

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

Apr 01, 2015

Download

Documents

Taylor Gerrish
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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: