- By
**nili** - Follow User

- 210 Views
- Uploaded on

Download Presentation
## Eigenimage Methods for Face Recognition

**An Image/Link below is provided (as is) to download presentation**

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

**Eigenimage Methods for Face Recognition**Professor Padhraic Smyth CS 175, Fall 2007**Outline of Today’s Lecture**• Progress Reports • due 9am Monday • Eigenimage Techniques • Represent an image as a weighted sum of a small number of “basis images” (eigenimages) • Basis images and weights can be found by eigenvector calculations • Can be used for feature detection in images • MATLAB code provided**Project Progress Reports**• Full details on Web page • 2 to 3 pages in length • write clearly, use figures • Section 1: List of overall goals of the project • At least 3 to 5 goals • Section 2: discuss what parts of goals you have achieved so far • e.g., getting data, writing feature extraction code, etc • Section 3: what remains to be done on the project • Project demo script Script that runs in less than 1 minute to illustrate progress Upload all code and data needed for your script • Report is due 9am Monday morning**Basis functions**Recall from linear algebra: We can write a vector as a linear combination of orthogonal basis functions: Basis: v1 = (1, 0, 0) v2 = (0, 1, 0), v3 = (0, 0, 1) => x = [4.2, 8.7, 3.1] = 4.2 v1 + 8.7 v2 + 3.1 v3**Basis functions for images**What are possible basis functions for images? One possible set of basis functions are “individual pixels” : Basis: v1 = (1, 0, 0, 0) v2 = (0, 1, 0, 0), v3 = (0, 0, 1, 0), v4 = (0, 0, 0, 1)**Basis functions for images**What are possible basis functions for images? One possible set of basis functions are “individual pixels” : Basis: v1 = (1, 0, 0, 0) v2 = (0, 1, 0, 0), v3 = (0, 0, 1, 0), v4 = (0, 0, 0, 1) Visually: v1 v2 v3 v4**Other basis functions for images?**• Perhaps there are other (better) sets of basis functions? • Imagine that a set of images are composed of a • a weighted sum of “basis images” • plus some additive noise**Other basis functions for images?**• Perhaps there are other (better) sets of basis functions? • Imagine that a set of images are composed of a • a weighted sum of “basis images” • plus some additive noise Given a set of basis images v1, v2, … vN, we can represent any real image as a weighted linear combination of basis images, i.e., Image I is approximately equal to w1 v1 + w2 v2 + … wn vN We can represent I exactly if N = number of pixels in image I We are often interested in representing an image I approximately by a small set of N weights, [w1, w2, …. wN]**Visual example**v1 v2**Visual example**v1 v2 I = 0.9 v1 + 0.5 v2**Visual example**• Note that with only 2 basis vectors we can only “recreate” a subset of all possible 3 x 3 images v1 v2 I = 0.9 v1 + 0.5 v2**Data Compression**Original image**Data Compression**Original image Approximate image = 0.9 v1 + 0.5 v2**Data Compression**Original image Approximate image = 0.9 v1 + 0.5 v2 Error image (note white = 0 in these images, black = 1)**Data Compression**• We can transmit the 2 coefficients 0.9 and 0.5 to approximately represent the original image • So instead of 9 pixels values we just need to transmit 2 weights • This is “lossy data compression” • Note: only works well if the real images can (approximately) be thought of as “superpositions” of a set of basis images Original image Approximate image = 0.9 v1 + 0.5 v2**Applying this idea to face images: eigenimages**M. Turk, A. Pentland, Eigenfaces for Recognition, Journal of Cognitive Neuroscience, Vol. 3, No. 1, 1991, pp. 71-86**Singular Value Decomposition (SVD)**c columns • Let D be a data matrix: D has n rows (one for each image) D has c columns (c = number of pixels) n rows D**Singular Value Decomposition (SVD)**c columns • Let D be a data matrix: D has n rows (one for each image) D has c columns (c = number of pixels) Basic result in linear algebra (when n > c) D = U S V where U = n x c matrix of weights S = c x c diagonal matrix V = c x c matrix, with rows = basis vectors (also known as singular vectors or eigenvectors) This is known as the singular value decomposition (SVD) of D All matrices can be represented in this manner n rows D**SVD Representation of a Matrix**c columns n rows D U S V = c x c c x c n x c Scale Factors Basis vectors Weights**SVD Example**• Data D = 10 20 10 2 5 2 8 17 7 9 20 10 12 22 11**SVD Example**• Data D = 10 20 10 2 5 2 8 17 7 9 20 10 12 22 11 • Note the pattern in the data above: the center column • values are typically about twice the 1st and 3rd column values: • So there is redundancy in the columns, i.e., the column values are correlated**SVD Example**D = U S V where U = 0.50 0.14 -0.19 0.12 -0.35 0.07 0.41 -0.54 0.66 0.49 -0.35 -0.67 0.56 0.66 0.27 where S = 48.6 0 0 0 1.5 0 0 0 1.2 and V = 0.41 0.82 0.40 0.73 -0.56 0.41 0.55 0.12 -0.82 • Data D = 10 20 10 2 5 2 8 17 7 9 20 10 12 22 11**SVD Example**D = U S V where U = 0.50 0.14 -0.19 0.12 -0.35 0.07 0.41 -0.54 0.66 0.49 -0.35 -0.67 0.56 0.66 0.27 where S = 48.6 0 0 0 1.5 0 0 0 1.2 and V = 0.41 0.82 0.40 0.73 -0.56 0.41 0.55 0.12 -0.82 • Data D = 10 20 10 2 5 2 8 17 7 9 20 10 12 22 11 • Note that first singular value • is much larger than the others**SVD Example**D = U S V where U = 0.50 0.14 -0.19 0.12 -0.35 0.07 0.41 -0.54 0.66 0.49 -0.35 -0.67 0.56 0.66 0.27 where S = 48.6 0 0 0 1.5 0 0 0 1.2 and V = 0.41 0.82 0.40 0.73 -0.56 0.41 0.55 0.12 -0.82 • Data D = 10 20 10 2 5 2 8 17 7 9 20 10 12 22 11 • Note that first singular value • is much larger than the others • First basis function (or eigenvector) carries most of the information and it “discovers” the pattern of column dependence**Rows in D = weighted sums of basis vectors**• 1st row of D = [10 20 10] • Since D = U S V, then D(1,: ) = U(1, :) * S * V • = [24.5 0.2 -0.22] * V • V = 0.41 0.82 0.40 • 0.73 -0.56 0.41 • 0.55 0.12 -0.82 • D(1,: ) = 24.5 v1 + 0.2 v2 + -0.22 v3 where v1, v2, v3 are rows of V and are our basis vectors Thus, [24.5, 0.2, 0.22] are the weights that characterize row 1 in D In general, the ith row of U*S is the set of weights for the ith row in D**Approximating the matrix D**• We could approximate any row D just using a single weight • Row 1: • D(:,1) = 10 20 10 • Can be approximated by D’ = w1*v1 = 24.5*[ 0.41 0.82 0.40] = [10.05 20.09 9.80] • Note that this is a close approximation of D(:,1) • Similarly for any other row • Basis for data compression: • Sender and receiver agree on basis functions in advance • Sender then sends the receiver a small number of weights • Receiver then reconstructs the signal using the weights + the basis function • Results in far fewer bits being sent on average – trade-off is that there is some loss in the quality of the original signal**Summary of SVD Representation**D = U S V Data matrix: Rows = data vectors V matrix: Rows = our basis functions U*S matrix: Rows = weights for the rows of D**How do we compute U, S, and V?**• SVD decomposition is related to a standard eigenvalue problem • The eigenvectors of D’ D = the rows of V • The eigenvectors of D D’ = the columns of U • The diagonal matrix elements in S are square roots of the eigenvalues of D’ D • Notation: D’D referred to as the covariance matrix of D => finding U,S,V is equivalent to finding eigenvectors of D’D • Solving eigenvalue problems is equivalent to solving a set of linear equations – time complexity is O(n c2 + c3) • In MATLAB, we can calculate this using the svd.m function, i.e., [u, s, v] = svd(D); • If matrix D is non-square, we can use svd(D,0)**Properties of SVD**• n x c matrix has n c-dimensional eigenvectors (rows of V) • We can represent any vector in D as a weighted sum of these c basis vectors • Approximating a vector: • The best k-dimensional approximation to a vector v, k < c, and where best means “closest in squared error”, is the weighted sum of the first k eigenvectors • Can use this for data compression, • i.e., instead of storing (or transmitting) the full c-dimensional vector (all c numbers) • Instead just store/send the k “basis weights”**Modification: more columns than rows**• D = n x c matrix: n rows, c columns • Theory on previous slides holds for n > c • But if c = number of pixels, n = number of images, we can easily have the situation where n < c • In the situation where n < c, we compute: D = U S V where U = n x n, S = n x n, V = n x c • Use svd(D,0) or svds(D) function when n < c • [u, s, v] = svds(D, k) gives the first k basis functions (eigenvectors) for D • Number of basis functions k must be less than or equal to n • (this is in effect the number of degrees of freedom we have)**Applying this to images**• Convert each image to vector form • n = number of images • c = number of pixels in each image • D = n x c data matrix**Applying this to images**• Convert each image to vector form • n = number of images • c = number of pixels in each image • D = n x c data matrix • Run svds on the matrix D • [u, s, vtranspose] = svds(D, k) • Where k is the number of “eigenimages” we want • The columns of d (reformed as images) are our eigenimages • The diagonal elements of s tell us how much “energy” is in each eigenimage • The columns of vtranspose are our eigenimages • The rows of u give us the basis function weights for each row (image) in D**Examples of results in MATLAB**• Ran svd on all 20 dstraight “happy” images, full resolution • dstraight(1:20,2) • “cut out” top 10 and bottom 30 rows: • newimage = image(10:90, 1:128) • Converted each image to vector form • Removed mean from each image (from each row) • Ran svds.m on resulting matrix • Code to do this is available on class Web page: • Under “MATLAB code for Projects”: eigenimage_code.zip • Call [u,s,vtranspose,eigenimages] = pca_image(dstraight(1:20,2)); [u, s, vtranspose] have been described already eigenimages is the columns of vtranspose (basis vectors) reshaped as eigenimages (ready for display)**Reconstructing images from basis vectors**• D = U S V’ • So each row in D (each image) can be represented as a weighted sum of columns of V (eigenimages) • Weights for row i in D = row i in U .* diagonal of S • MATLAB code in eigenimage_code.zip to implement this: • Call pca_reconstruct.m, e.g., pca_reconstruct(3,dstraight(3,2).image,eigenimages,u,s,8) Individual 3**Reconstruction of First Image with 8 eigenimages (note: uses**only 8 weights, instead of 12000 pixels) Reconstructed Image Original Image**Reconstruction of first image with 8 eigenimages**Weights = -14.0 9.4 -1.1 -3.5 -9.8 -3.5 -0.6 0.6 Reconstructed image = weighted sum of 8 images on left**Reconstruction of 7th image with eigenimages**Reconstructed Image Original Image**Reconstruction of 7th image with 8 eigenimages**Weights = -13.7 12.9 1.6 4.4 3.0 0.9 1.6 -6.3 Weights for Image 1 = -14.0 9.4 -1.1 -3.5 -9.8 -3.5 -0.6 0.6 Reconstructed image = weighted sum of 8 images on left**Reconstruction of Image 17**Reconstructed Image Original Image**Reconstruction of 17th image with 8 eigenimages**Weights = -24.2 -9.3 6.4 -2.2 -4.3 10.2 2.5 -1.5 Weights for Image 1 = -14.0 9.4 -1.1 -3.5 -9.8 -3.5 -0.6 0.6 Reconstructed image = weighted sum of 8 images on left**Weights as Features**Weights 1-14.0174 9.3872 -1.0557 -3.5383 2 -21.8113 -1.9416 -6.0173 1.2616 3 -19.5562 1.8604 3.1435 -1.9078 4 -17.9185 1.8457 0.7836 2.0913 5 -24.8861 1.6758 -2.4818 -1.5604 6 -22.3920 -0.9511 3.4839 -2.0369 7 -13.7527 12.9235 1.5948 4.3836 8 -11.4462 1.3205 -1.5536 -8.1587 9 -13.2034 9.2059 2.8529 4.4483 10 -17.2305 0.6142 0.9991 -3.3872 11 -15.9689 5.0422 -0.1318 -8.3479 12 -21.2763 -10.1233 1.8639 5.2177 13 -22.6525 -2.0573 -1.4602 -2.5266 14 -21.1102 -4.0606 0.6635 -0.5346 15 -18.9986 -1.2998 2.1970 -2.3426 16 -17.0313 -1.6442 -11.0145 2.6578 17 -24.2221 -9.3465 6.4540 -2.1699 18 -11.0047 0.8536 -14.5666 1.7401 19 -24.8944 -2.6833 1.2127 6.3758 20 -17.0712 5.8351 5.6467 6.0825 Individuals**Weights as Features**Weights 1-14.0174 9.3872 -1.0557 -3.5383 2 -21.8113 -1.9416 -6.0173 1.2616 3 -19.5562 1.8604 3.1435 -1.9078 4 -17.9185 1.8457 0.7836 2.0913 5 -24.8861 1.6758 -2.4818 -1.5604 6 -22.3920 -0.9511 3.4839 -2.0369 7 -13.7527 12.9235 1.5948 4.3836 8 -11.4462 1.3205 -1.5536 -8.1587 9 -13.2034 9.2059 2.8529 4.4483 10 -17.2305 0.6142 0.9991 -3.3872 11 -15.9689 5.0422 -0.1318 -8.3479 12 -21.2763 -10.1233 1.8639 5.2177 13 -22.6525 -2.0573 -1.4602 -2.5266 14 -21.1102 -4.0606 0.6635 -0.5346 15 -18.9986 -1.2998 2.1970 -2.3426 16 -17.0313 -1.6442 -11.0145 2.6578 17 -24.2221 -9.3465 6.4540 -2.1699 18 -11.0047 0.8536 -14.5666 1.7401 19 -24.8944 -2.6833 1.2127 6.3758 20 -17.0712 5.8351 5.6467 6.0825 Individuals**Weights as Features**Weights 1-14.0174 9.3872 -1.0557 -3.5383 2 -21.8113 -1.9416 -6.0173 1.2616 3 -19.5562 1.8604 3.1435 -1.9078 4 -17.9185 1.8457 0.7836 2.0913 5 -24.8861 1.6758 -2.4818 -1.5604 6 -22.3920 -0.9511 3.4839 -2.0369 7 -13.7527 12.9235 1.5948 4.3836 8 -11.4462 1.3205 -1.5536 -8.1587 9 -13.2034 9.2059 2.8529 4.4483 10 -17.2305 0.6142 0.9991 -3.3872 11 -15.9689 5.0422 -0.1318 -8.3479 12 -21.2763 -10.1233 1.8639 5.2177 13 -22.6525 -2.0573 -1.4602 -2.5266 14 -21.1102 -4.0606 0.6635 -0.5346 15 -18.9986 -1.2998 2.1970 -2.3426 16 -17.0313 -1.6442 -11.0145 2.6578 17 -24.2221 -9.3465 6.4540 -2.1699 18 -11.0047 0.8536 -14.5666 1.7401 19 -24.8944 -2.6833 1.2127 6.3758 20 -17.0712 5.8351 5.6467 6.0825 Individuals**Weights as Features**Weights 1-14.0174 9.3872 -1.0557 -3.5383 2 -21.8113 -1.9416 -6.0173 1.2616 3 -19.5562 1.8604 3.1435 -1.9078 4 -17.9185 1.8457 0.7836 2.0913 5 -24.8861 1.6758 -2.4818 -1.5604 6 -22.3920 -0.9511 3.4839 -2.0369 7 -13.7527 12.9235 1.5948 4.3836 8 -11.4462 1.3205 -1.5536 -8.1587 9 -13.2034 9.2059 2.8529 4.4483 10 -17.2305 0.6142 0.9991 -3.3872 11 -15.9689 5.0422 -0.1318 -8.3479 12 -21.2763 -10.1233 1.8639 5.2177 13 -22.6525 -2.0573 -1.4602 -2.5266 14 -21.1102 -4.0606 0.6635 -0.5346 15 -18.9986 -1.2998 2.1970 -2.3426 16 -17.0313 -1.6442 -11.0145 2.6578 17 -24.2221 -9.3465 6.4540 -2.1699 18 -11.0047 0.8536 -14.5666 1.7401 19 -24.8944 -2.6833 1.2127 6.3758 20 -17.0712 5.8351 5.6467 6.0825 Individuals**Weights as Features**Weights 1-14.0174 9.3872 -1.0557 -3.5383 2 -21.8113 -1.9416 -6.0173 1.2616 3 -19.5562 1.8604 3.1435 -1.9078 4 -17.9185 1.8457 0.7836 2.0913 5 -24.8861 1.6758 -2.4818 -1.5604 6 -22.3920 -0.9511 3.4839 -2.0369 7 -13.7527 12.9235 1.5948 4.3836 8 -11.4462 1.3205 -1.5536 -8.1587 9 -13.2034 9.2059 2.8529 4.4483 10 -17.2305 0.6142 0.9991 -3.3872 11 -15.9689 5.0422 -0.1318 -8.3479 12 -21.2763 -10.1233 1.8639 5.2177 13 -22.6525 -2.0573 -1.4602 -2.5266 14 -21.1102 -4.0606 0.6635 -0.5346 15 -18.9986 -1.2998 2.1970 -2.3426 16 -17.0313 -1.6442 -11.0145 2.6578 17 -24.2221 -9.3465 6.4540 -2.1699 18 -11.0047 0.8536 -14.5666 1.7401 19 -24.8944 -2.6833 1.2127 6.3758 20 -17.0712 5.8351 5.6467 6.0825 Individuals

Download Presentation

Connecting to Server..