IP Library Granted Patent US 10,606,879
Granted Patent B1
US 10,606,879 · App. 15/445,615 · Granted Mar 31, 2020

Indexing fingerprints

Inventor: Matthew James Wilkinson (Emeryville, CA)
Assignee: Gracenote, Inc.
G06F16/44G06F16/41G06F16/48H04N21/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,606,879
App. No.
15/445,615
Granted
Mar 31, 2020
Kind
B1
Abstract

Example methods and systems for indexing fingerprints are described. Fingerprints may be made up of sub-fingerprints, each of which corresponds to a frame of the media, which is a smaller unit of time than the fingerprint. In some example embodiments, multiple passes are performed. For example, a first pass may be performed that compares the sub-fingerprints of the query fingerprint with every thirty-second sub-fingerprint of the reference material to identify likely matches. In this example, a second pass is performed that compares the sub-fingerprints of the query fingerprint with every fourth sub-fingerprint of the likely matches to provide a greater degree of confidence. A third pass may be performed that uses every sub-fingerprint of the most likely matches, to help distinguish between similar references or to identify with greater precision the timing of the match. Each of these passes is amenable to parallelization.

Claims (69)

1. A system comprising:

one or more processors;

a database storing reference fingerprints; and

memory including instructions that, when executed, cause the one or more processors to at least:

obtain a query fingerprint including a plurality of sub-fingerprints;

divide the reference fingerprints into segments, each segment includes a plurality of reference sub-fingerprints;

cause a plurality of threads to determine first bit error rates by performing, in parallel, one or more operations including determining one of the first bit error rates by comparing a portion of the plurality of sub-fingerprints of the query fingerprint with a portion of the plurality of reference sub-fingerprints of a segment;

identify a first predetermined number of lowest bit error rates based on the first bit error rates, each of the first predetermined number of lowest bit error rates corresponding to one of the reference fingerprints;

in response to identifying the first predetermined number of lowest bit error rates based on the first bit error rates, for each of the first predetermined number of lowest bit error rates, determine a second bit error rate by evaluating the query fingerprint against the corresponding one of the reference fingerprints; and

provide a predetermined number of response candidates based on the second bit error rate determined for each of the first predetermined number of lowest bit error rates.

2. The system of claim 1 , wherein one or more graphics processing units (GPUs) perform the one or more operations.

3. The system of claim 1 , wherein the one or more processors are one or more central processing units (CPUs).

4. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to:

divide each of the segments into a plurality of portions, where each portion includes a plurality of the reference sub-fingerprints; and

determine the first bit error rate for each of the plurality of portions.

5. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to determine the first bit error rates by:

sub-sampling the reference fingerprints by a factor of four to determine a subset of the reference sub-fingerprints; and

comparing every fourth sub-fingerprint of the query fingerprint with sequential ones of the subset of the reference sub-fingerprints.

6. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to determine the second bit error rate for each of the first predetermined number of lowest bit error rates by:

sub-sampling the reference fingerprints by a factor of thirty-two to determine a subset of the reference sub-fingerprints; and

comparing every thirty-second sub-fingerprint of the query fingerprint with sequential ones of the subset of the reference sub-fingerprints.

7. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to cause each thread of the plurality of threads to store the first predetermined number of lowest bit error rates.

8. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to cause a first thread of the plurality of threads and a second thread of the plurality of threads to use inter-thread communications to share at least one of the sub-fingerprints of the query fingerprint.

9. The system of claim 1 , wherein the instructions, when executed, cause the one or more processors to:

sub-sample the reference fingerprints by a first factor to determine a first set of the reference sub-fingerprints;

sub-sample the query fingerprint by the first factor to determine a second set of the sub-fingerprints of the query fingerprint;

determine the first predetermined number of lowest bit error rates based on a comparison of the first set and the second set to determine a third set of the reference fingerprints, the third set corresponding to one or more of the reference fingerprints associated with the first predetermined number of lowest bit error rates;

sub-sample one or more of the third set by a second factor to determine a fourth set of the reference sub-fingerprints, the second factor greater than the first factor;

sub-sample the query fingerprint by the second factor to determine a fifth set of the sub-fingerprints of the query fingerprint; and

determine the predetermined number of response candidates based on the comparison of the fourth set and the fifth set.

10. The system of claim 4 , wherein the instructions, when executed, cause the one or more processors to:

assign each of the segments to a different server on a network; and

cause the different servers to determine the first bit error rate for the segments.

11. A method comprising:

obtaining, by one or more processors, a query fingerprint including a plurality of sub-fingerprints;

dividing a set of reference fingerprints into segments, each segment includes a plurality of reference sub-fingerprints;

causing a plurality of threads to determine first bit error rates by performing, in parallel, one or more operations including determining one of the first bit error rates by comparing a portion of the plurality of sub-fingerprints of the query fingerprint with a portion of the plurality of reference sub-fingerprints of a segment;

identifying a first predetermined number of lowest bit error rates based on the first bit error rates, each of the first predetermined number of lowest bit error rates corresponding to one of the set of reference fingerprints;

in response to identifying the first predetermined number of lowest bit error rates based on the first bit error rates, for each of the first predetermined number of lowest bit error rates, determining a second bit error rate by evaluating the query fingerprint against the corresponding one of the set of reference fingerprints; and

providing a predetermined number of response candidates based on the second bit error rate determined for each of the first predetermined number of lowest bit error rates.

12. The method of claim 11 , wherein a plurality of graphics processing units (GPUs) perform the one or more operations.

13. The method of claim 11 , wherein the one or more processors are one or more central processing units (CPUs).

14. The method of claim 11 , further including:

dividing each of the segments into a plurality of portions that each include a plurality of the reference sub-fingerprints; and

determining the first bit error rate for each of the plurality of portions.

15. The method of claim 11 , wherein determining the first bit error rates includes:

sub-sampling the reference fingerprints by a factor of four to determine a subset of the reference sub-fingerprints; and

comparing every fourth sub-fingerprint of the query fingerprint with sequential ones of the subset of the reference sub-fingerprints.

16. The method of claim 11 , wherein determining the second bit error rate determined for each of the first predetermined number of lowest bit error rates includes:

sub-sampling the reference fingerprints by a factor of thirty-two to determine a subset of the reference sub-fingerprints; and

comparing every thirty-second sub-fingerprint of the query fingerprint with sequential ones of the subset of the reference sub-fingerprints.

17. The method of claim 11 , wherein each thread of the plurality of threads stores the first predetermined number of lowest bit error rates.

18. The method of claim 14 , further including:

assigning each of the segments to a different server on a network; and

cause the different servers to determine the first bit error rate for the segments.

19. A non-transitory machine-readable storage medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to at least:

obtain a query fingerprint including a plurality of sub-fingerprints;

divide a set of reference fingerprints into segments, each segment including a plurality of reference sub-fingerprints;

cause a plurality of threads to determine first bit error rates by performing, in parallel, one or more operations including determining one of the first bit error rates by comparing a portion of the plurality of sub-fingerprints of the query fingerprint with a portion of the plurality of reference sub-fingerprints of a segment;

identify a first predetermined number of lowest bit error rates based on the first bit error rates, each of the first predetermined number of lowest bit error rates corresponding to one of the set of reference fingerprints;

in response to identifying the first predetermined number of lowest bit error rates based on the first bit error rates, for each of the first predetermined number of lowest bit error rates, determine a second bit error rate by evaluating the query fingerprint against the corresponding one of the set of reference fingerprints; and

provide a predetermined number of response candidates based on the second bit error rate determined for each of the first predetermined number of lowest bit error rates.

20. The non-transitory machine-readable storage medium of claim 19 , wherein the instructions, when executed by the one or more processors of the machine, cause the machine to:

sub-sample the reference fingerprints by a first factor to determine a first set of the reference sub-fingerprints;

sub-sample the query fingerprint by the first factor to determine a second set of the sub-fingerprints of the query fingerprint;

determine the first predetermined number of lowest bit error rates based on a comparison of the first set and the second set to determine a third set of the reference fingerprints, the third set corresponding to one or more of the reference fingerprints associated with the first predetermined number of lowest bit error rates;

sub-sample one or more of the third set by a second factor to determine a fourth set of the reference sub-fingerprints, the second factor greater than the first factor;

sub-sample the query fingerprint by the second factor to determine a fifth set of the sub-fingerprints of the query fingerprint; and

determine the predetermined number of response candidates based on the comparison of the fourth set and the fifth set.

Assignments (10)
RELEASE (REEL 054066 / FRAME 0064) Recorded May 11, 2023
From: CITIBANK, N.A.
To: A. C. NIELSEN COMPANY, LLC; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; THE NIELSEN COMPANY (US), LLC; NETRATINGS, LLC
Reel/Frame 063605/0001 →
RELEASE (REEL 053473 / FRAME 0001) Recorded May 11, 2023
From: CITIBANK, N.A.
To: A. C. NIELSEN COMPANY, LLC; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; THE NIELSEN COMPANY (US), LLC; NETRATINGS, LLC
Reel/Frame 063603/0001 →
SECURITY INTEREST Recorded May 8, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: ARES CAPITAL CORPORATION
Reel/Frame 063574/0632 →
SECURITY INTEREST Recorded Apr 28, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: CITIBANK, N.A.
Reel/Frame 063561/0381 →
SECURITY AGREEMENT Recorded Jan 31, 2023
From: GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE, INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC
To: BANK OF AMERICA, N.A.
Reel/Frame 063560/0547 →
RELEASE (REEL 042262 / FRAME 0601) Recorded Oct 13, 2022
From: CITIBANK, N.A.
To: GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC
Reel/Frame 061748/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENTS LISTED ON SCHEDULE 1 RECORDED ON 6-9-2020 PREVIOUSLY RECORDED ON REEL 053473 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SUPPLEMENTAL IP SECURITY AGREEMENT. Recorded Oct 7, 2020
From: A.C. NIELSEN (ARGENTINA) S.A.; A.C. NIELSEN COMPANY, LLC; ACN HOLDINGS INC.; ACNIELSEN CORPORATION; ACNIELSEN ERATINGS.COM; AFFINNOVA, INC.; ART HOLDING, L.L.C.; ATHENIAN LEASING CORPORATION; CZT/ACN TRADEMARKS, L.L.C.; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; NETRATINGS, LLC; NIELSEN AUDIO, INC.; NIELSEN CONSUMER INSIGHTS, INC.; NIELSEN CONSUMER NEUROSCIENCE, INC.; NIELSEN FINANCE CO.; NIELSEN FINANCE LLC; NIELSEN INTERNATIONAL HOLDINGS, INC.; NIELSEN MOBILE, LLC; NMR INVESTING I, INC.; TCG DIVESTITURE INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC; VIZU CORPORATION; VNU MARKETING INFORMATION, INC.; NMR LICENSING ASSOCIATES, L.P.; NIELSEN HOLDING AND FINANCE B.V.; THE NIELSEN COMPANY B.V.; VNU INTERNATIONAL B.V.
To: CITIBANK, N.A
Reel/Frame 054066/0064 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Jun 9, 2020
From: A. C. NIELSEN COMPANY, LLC; ACN HOLDINGS INC.; ACNIELSEN CORPORATION; ACNIELSEN ERATINGS.COM; AFFINNOVA, INC.; ART HOLDING, L.L.C.; ATHENIAN LEASING CORPORATION; CZT/ACN TRADEMARKS, L.L.C.; EXELATE, INC.; GRACENOTE, INC.; GRACENOTE DIGITAL VENTURES, LLC; GRACENOTE MEDIA SERVICES, LLC; NETRATINGS, LLC; NIELSEN AUDIO, INC.; NIELSEN CONSUMER INSIGHTS, INC.; NIELSEN CONSUMER NEUROSCIENCE, INC.; NIELSEN FINANCE CO.; NIELSEN FINANCE LLC; NIELSEN INTERNATIONAL HOLDINGS, INC.; NIELSEN MOBILE, LLC; NIELSEN UK FINANCE I, LLC; NMR INVESTING I, INC.; TCG DIVESTITURE INC.; TNC (US) HOLDINGS, INC.; THE NIELSEN COMPANY (US), LLC; VIZU CORPORATION; VNU MARKETING INFORMATION, INC.; NMR LICENSING ASSOCIATES, L.P.; NIELSEN HOLDING AND FINANCE B.V.; THE NIELSEN COMPANY B.V.; VNU INTERNATIONAL B.V.
To: CITIBANK, N.A.
Reel/Frame 053473/0001 →
SUPPLEMENTAL SECURITY AGREEMENT Recorded Apr 13, 2017
From: GRACENOTE, INC.; GRACENOTE MEDIA SERVICES, LLC; GRACENOTE DIGITAL VENTURES, LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042262/0601 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2017
From: WILKINSON, MATTHEW JAMES
To: GRACENOTE, INC.
Reel/Frame 041684/0689 →
Cited By (1)
US 12,639,364