Patent Description:
In many computing environments, user authentication is performed to ensure that certain computing resources are accessed only by authorized users. Facial recognition is one technique for performing user authentication. An instant image of a human face may be compared to previously captured images of human faces to determine or verify the identity to which the human face in the instant image corresponds, for example.

The book "<NPL> comprises chapters related to a number of themes covering different aspects of face recognition. Chapter <NUM> by César San Martin et al. relates to face recognition using thermal images and mentions infrared technology is introduced in face recognition in order to eliminate the dependence on lighting conditions. Chapter <NUM> by Mrinal Kanti Bhowmik et al. is about thermal infrared face recognition for a robust security systems. Section <NUM>. <NUM> of Chapter <NUM> discusses spoofing/copy attacks and discusses liveness detection. This section mentions that thermal images can be a solution to the spoofing problem and detecting live faces as it captures only the heat emitted and so the thermal images generated from the emitted heat by a photograph or video will be totally different from the thermal image of an original human face.

<CIT> discloses a method of bimodal face authentication with a living body detection function and system. <CIT> discloses a dual-certification face anti-counterfeit method and a dual-certification face anti-counterfeit device. <CIT> discloses a negative sample selection method in biometrics identification and an apparatus thereof. <CIT> discloses face recognition technology comprising two layers of classifiers. <CIT> discloses a system and method for identifying a human face including a visible light camera, an infrared (IR) camera, a non-contact temperature sensing device and a processing unit. <CIT> discloses a method and a system for detecting a false face and a method and a system for training a false face model. <CIT> discloses a bio-assay detection method.

Examples are disclosed herein that relate to detecting spoofed human faces. A first embodiment relates to a computing device for performing biometric verification according to claim <NUM>. A second embodiment relates to a method of biometric verification accord to claim <NUM>.

As mentioned above, facial recognition is one mechanism for performing user authentication. In some facial recognition systems, an instant image of a human face is compared to previously captured images of the human face to determine or verify the identity to which the human face in the instant image corresponds. However, some such facial recognition systems are vulnerable to spoofing, in which a real human face is simulated by a fake face to fool the facial recognition system. Spoofing may occur in a variety of manners - for example, a nefarious user may present a printed image of a human face, or a three-dimensional model such as a face mold, to an image capture device to achieve user authentication as a different user. If the spoofing technique fools the facial recognition system, a nefarious user can gain unauthorized access to computing resources and/or data.

To address these issues, devices and methods described below for detecting spoofed human faces are provided. <FIG> schematically depicts a computing device <NUM> for performing biometric verification of a user <NUM>. In particular, computing device <NUM> determines whether image data captured by a camera <NUM> corresponds to a real human face of user <NUM> presented via the physical presence of the user, or whether the image data corresponds to a spoofed face printed on paper, presented on a three-dimensional model, or spoofed in some other manner. As such, references made herein to image data of a user's face may also refer to image data of a spoofed face of the user.

Camera <NUM> is a multispectral camera operable to capture image data in two or more regions of the electromagnetic spectrum. As such, camera <NUM> includes a first spectral capture module <NUM> operable to capture image data in a first spectral region of the electromagnetic spectrum, and a second spectral capture module <NUM> operable to capture image data in a second spectral region of the electromagnetic spectrum. The first and second spectral regions may correspond to any suitable regions of the electromagnetic spectrum, such as an infrared spectral region (e.g., <NUM>-<NUM>) and a visible spectral region (e.g., <NUM>-<NUM>), respectively, two different regions of the visible spectrum, or two different regions of the non-visible spectrum. Further, the first and second spectral regions are chosen such that the respective outputs of first and second spectral capture modules <NUM> and <NUM> exhibit detectable differences. These differences are characteristic of human skin, and as such may be unreproducible by spoofing objects not comprised of human skin. The differences may result at least in part from subsurface scattering of light by human skin, which may cause a detectable color and/or brightness difference between visible and infrared image data, in one example.

First and second spectral capture modules <NUM> and <NUM> are hardware modules that may be implemented in any suitable manner. In one example, first and second spectral capture modules <NUM> and <NUM> may comprise distinct, respective photosensitive surfaces each comprised of suitable materials that facilitate their sensitivity to the desired wavelengths. In another example, first and second spectral capture modules <NUM> and <NUM> may be implemented in a common photosensitive surface above which filtration optics separate and route first and second spectral light to respective areas of the photosensitive surface. In yet another example, a common photosensitive surface may receive first and second spectral light and produce output based on the first and second spectral light, where processing of the output creates separate first and second spectral image data. First and second spectral capture modules <NUM> and <NUM> may comprise any suitable image sensing technologies, including but not limited to charge-coupled device (CCD) and complementary metal-oxide-semiconductor (CMOS) technologies, for example.

Camera <NUM> may include an illuminator <NUM> for illuminating user <NUM>. A portion of the light produced by illuminator <NUM> and reflected from the face of user <NUM> may be captured by first and second spectral capture modules <NUM> and <NUM> to image the user's face. Illuminator <NUM> may assume any suitable form, including but not limited to that of an optical assembly comprising a diffuser and a light emitting diode (LED), and may be configured to emit light in any suitable spectral region. A spectral region such as infrared may be chosen in view of the reflectance and scattering properties of human skin and/or to maximize signal-to-noise ratio (SNR), for example. Further, in some examples the light output of illuminator <NUM> may be modulated - e.g., spatially and/or temporally, which may enable camera <NUM> to sense depth. Alternatively or additionally, light emitted by illuminator <NUM> may be polarized (e.g., linearly, circularly), for example to reduce glint/glare produced by specular reflective surfaces. While a single illuminator <NUM> is depicted in <FIG>, two or more illuminators are contemplated, which may or may not differ in their output of light.

Image data produced by camera <NUM>, along with previously stored image data of user <NUM>, is used to determine whether the user's face as perceived by the camera is real or spoofed. As such, <FIG> shows test image data <NUM> of the user's face in the first spectral region, produced based on light captured by first spectral capture module <NUM>, test image data <NUM> of the user's face in the second spectral region, produced based on light captured by second spectral capture module <NUM>, and previously stored registered image data <NUM> of the user's face in the first spectral region being fed to computing device <NUM> where biometric verification takes place. The correspondence of registered image data <NUM> to the real face of user <NUM>, and not a spoofed face of the user, may have been verified, and an identity of the user may have been associated with the registered image data. Registered image data <NUM> may thus provide a verified reference against which to test first and second test image data <NUM> and <NUM> for spoofing.

<FIG> shows registered image data <NUM> obtained from a database <NUM> of registered human face image data. Database <NUM> may store verified human face image data for a plurality of users, and may further store an identity for each user. When configured in such a manner, database <NUM> may partially facilitate detection of identity spoofing for each user in the database. Further, via the association of a verified identity with each user, database <NUM> may partially facilitate identity verification for each user in the database. Registered human face image data stored in database <NUM> may correspond to any suitable spectral region(s) - in one example, the registered image data may correspond to the first spectral region.

Computing device <NUM> includes or is coupled to one or more of a processor <NUM>, and may include or be coupled to volatile memory <NUM> (e.g., random access memory), an input device <NUM> (e.g., keyboard, mouse, game controller, joystick, touch sensor, microphone), non-volatile memory <NUM>, and an output device <NUM> (e.g., display, speaker). Computing device <NUM> may assume any suitable form, including but not limited to a desktop computer, laptop computer, tablet computer, smartphone, smart screen, console computing device, head mounted display device, etc..

Output device <NUM> may output a determination <NUM> as to whether first and second test image data <NUM> and <NUM> correspond to a real human face or a spoofed human face. Computing device <NUM>, and/or other devices, takes various actions on the basis of determination <NUM>, such as permitting or denying access to secured computing resources and/or data, displaying a graphical user interface (e.g., on output device <NUM>) indicating whether user authentication passed or failed, etc. "Secured data" as used herein may refer to data to which access is controlled on the basis of determination <NUM> - e.g., access to secured data may be permitted when a human face is determined to be a real human face, and denied when the human face is determined to be a spoofed human face. Secured data may be encrypted or non-encrypted.

Non-volatile memory <NUM> may include a feature distance module <NUM>, which is a software program for computing a feature distance between features (or data structures including features) extracted from image data. As described in further detail below, "feature" may refer to a wide variety of data types that can be extracted from image data and used to represent the content therein. By computing the distance between features, an assessment of the similarity of image data sets represented by the features is determined. <FIG> shows how feature distance module <NUM> computes a first feature distance 133A between registered image data <NUM> of the human face of user <NUM> in the first spectral region and test image data <NUM> of the user's human face in the first spectral region, a second feature distance 133B between the registered image data and second test image data <NUM> of the user's face in the second spectral region, and a test feature distance 133C between the test image data in the first spectral region and the test image data in the second spectral region.

Feature distances computed by feature distance module <NUM> may be supplied to a run-time classifier <NUM> configured to differentiate between real human face image data and spoofed human face image data classes. As part of training of classifier <NUM>, a predetermined relationship <NUM> for differentiating between real human face image data and spoofed human face image data may be derived. Determination <NUM> is generated by supplying feature distances 133A-C to predetermined relationship <NUM> - for example, as described in further detail below with reference to <FIG>, the determination is made based on whether or not a linear combination of the feature distances 133A-C exceeds or falls below a threshold specified by the predetermined relationship.

Run-time classifier <NUM> may be trained with training data <NUM>. Training data <NUM> may include data sets of the same type as those used to assess spoofing of the face of user <NUM>. To this end, training data <NUM> may include a registered training image data set <NUM>, a test training image data set <NUM> in the first spectral region, and a test training image data set <NUM> in the second spectral region. Registered training image data set <NUM> may include image data corresponding to real human faces, and not spoofed human faces. Conversely, first and second test training image data sets <NUM> and <NUM> may include a subset of image data corresponding to real human faces, and a subset of image data corresponding to spoofed human faces. The inclusion of spoofed and non-spoofed image data in training data <NUM> may enable the identification of spoofed and non-spoofed human face image data classes. With training data <NUM> configured in such a manner, run-time classifier <NUM> may be trained to distinguish between spoofed and non-spoofed human face image data real time. An example method of training classifier <NUM> is described below with reference to <FIG>.

Training data <NUM> may be stored as triples of subsets of data sets <NUM>, <NUM>, and <NUM>. Using images as an example representation, a triple of a registered image, a test training image in the first spectral region, and a test training image in the second spectral image, all of a given user, may be stored for the given user. In such a configuration, training data <NUM> may comprise a plurality of triples of registered, first test training, and second test training image data subsets each associated with a respective user. Training data <NUM> may be stored and represented in any suitable manner, however, and in some examples two or more triples may be associated with the same user.

The image data described herein - e.g., image data produced by camera <NUM>, image data in training data <NUM> - may assume any suitable form. In some implementations, such image data takes the form of face images encoded in feature vectors.

<FIG> shows a flow diagram illustrating an example process <NUM> for training run-time classifier <NUM> with training data <NUM>. Reference to <FIG> is made throughout the description of <FIG>. For clarity, process <NUM> is described in connection with local binary patterns (LBPs), though any suitable features and method of feature extraction may be used.

Process <NUM> may include, at <NUM>, receiving registered training image data from registered training image data set <NUM>. For illustrative purposes, the registered training image data is depicted in <FIG> as a registered training image <NUM>, but may assume any suitable form as described above. Image <NUM> includes image data whose correspondence to a real human face is verified. A plurality of regions of interest (ROIs) such as ROI <NUM> may be identified in image <NUM>. Generally, each ROI may correspond to a region in image data where an extractable feature is known or expected to reside. The feature may be useful for subsequent analysis, and may potentially provide data unique to the image data from which it is extracted. In the example depicted in <FIG>, ROI <NUM> corresponds to a corner of the mouth of the user in image <NUM>.

Process <NUM> may include, at <NUM>, performing texture classification in each ROI. <FIG> shows texture classification in the form of LBP analysis performed for ROI <NUM>. ROI <NUM> includes a plurality of pixels, such as a central pixel 208A, that each specify at least one parameter corresponding to the visual content therein. As a non-limiting example, texture classification is described herein with reference to the brightness specified by each pixel, though texture classification may consider any suitable parameter, including two or more parameters (e.g., color, brightness, hue, saturation). While shown as being circular, the geometry of ROI <NUM> may assume any suitable form, including rectangular, triangular, annular, and non-contiguous geometries.

As per a typical LBP process, the brightness of central pixel 208A at the center of ROI <NUM> is compared to the respective brightnesses of its neighboring pixels (e.g., neighboring pixel 208B) all at a common radial distance from the central pixel. Twelve neighboring pixels are considered at the example radial distance shown in <FIG>. If, for a particular neighboring pixel, that neighboring pixel's brightness is greater than the brightness of central pixel 208A, one of two values (e.g., <NUM>) may be associated with that neighboring pixel. If the brightness of the neighboring pixel is less than the brightness of central pixel 208A, the other of the two values (e.g., <NUM>) may be associated with that neighboring pixel. This process may be repeated for the remaining neighboring pixels relative to central pixel 208A, with the numbers for each neighboring pixel collected into a texture value (e.g., a binary number such as <NUM>). In some examples, binary numbers may be determined for multiple sets of neighboring pixels each at different radial differences relative to a given central pixel. LBPs may be determined for every pixel in every ROI <NUM> of image <NUM> for which LBP can be performed - for example, LBPs may not be determined for edge pixels due to a lack of neighboring pixels.

Process <NUM> may include, at <NUM>, extracting at least one feature from each of the plurality of ROIs. <FIG> shows the extraction from ROI <NUM> of a feature <NUM>. Feature <NUM> may assume the form of a histogram that plots the frequency of each texture value (e.g., t<NUM>, t<NUM>, t<NUM>, t<NUM>, t<NUM>) computed for the ROI <NUM> - e.g., the texture values computed for each applicable pixel in the ROI. Any suitable feature or combination of features may be extracted from the plurality of ROIs, however.

Process <NUM> may include, at <NUM>, assembling the extracted features into a feature vector. <FIG> shows the assembly of all features extracted from the plurality of ROIs into a feature vector <NUM>. Since, in the example depicted in <FIG>, the features extracted from image <NUM> are histograms of texture value frequencies, feature vector <NUM> may assume the form of a vector whose basis vectors each correspond to a respective bin of all bins of the collection of histograms. Each basis vector may be associated with a respective scalar indicating the (e.g., relative) frequency of its corresponding texture value. Feature vector <NUM> may assume any suitable form, however, which may be determined by the features on which it is based.

Process <NUM>, as shown and described thus far, may be substantially repeated for test training image data corresponding to the same human face represented by the registered training image data from which feature vector <NUM> was derived. Thus, in some examples substantially the same processing may be performed on each data set in a given triple of training data <NUM>. Process <NUM> may accordingly include receiving test training image data in the first spectral region from first test training image data set <NUM>, and further receiving test training image data in the second spectral region from second test training image data set <NUM>. In this manner, for each of the registered image data, first test training image data, and second test training image data, a plurality of ROIs may be identified, at least one feature may be extracted from each of the plurality of ROIs, and the extracted features may be assembled into a feature vector. Accordingly, <FIG> shows feature vectors <NUM> and <NUM> respectively computed for the first and second test training image data.

With feature vectors <NUM>, <NUM>, and <NUM> assembled for the registered training image data, first test training image data, and second test training image data, respectively, distances between feature vectors may be computed to assess the similarity of the image data from which they are derived. Thus, process <NUM> may include, at <NUM>, computing a feature distance for each pair of image data sets. <FIG> shows a first feature distance <NUM> computed between feature vector <NUM> of the registered training image data in the first spectral region and feature vector <NUM> of the test training image data in the first spectral region, a second feature distance <NUM> computed between feature vector <NUM> of the registered training image data and feature vector <NUM> of the test training image data in the second spectral region, and a third feature distance <NUM> computed between feature vector <NUM> of the first test training image data and feature vector <NUM> of the second test training image data.

Feature distances may be computed in a variety of suitable manners. In one implementation, feature distance computation may be based on a face representation that models both the identity and intra-personal variation (e.g., lighting, pose, expression) of a user - for example, a face x may be represented as x = µ + ε. Face x may refer to any suitable representation of a face (e.g., facial image, feature(s), feature vector), while µ and ε may be independent Gaussian variables respectively representing the identity and intra-personal variation of the face. Face x may be the face of the corresponding user with the mean of a plurality of faces xi subtracted therefrom. The plurality of faces xi may be representative of the gamut of human faces, which may enable the emphasis of unique features in face x when subtracted from face x, for example. The plurality of faces xi may be derived from database <NUM> or any other suitable source. The variables µ and ε may be latent variables that follow two Gaussian distributions N(<NUM>, Sµ) and N(<NUM>, Sε), respectively. Sµ and Sε may be unknown covariance matrices. Such representation of face x may be referred to as a "face prior".

With the face prior described above, the joint distribution of two faces x<NUM>, x<NUM> may be modeled as a Gaussian distribution with a mean of zero. Face x<NUM> may correspond to one of registered training image data, first test training image data, and second test training image data, and face x<NUM> may correspond to a different one of the registered training image data, first test training image data, and second test training image data, for example. The covariance of the two faces x<NUM>, x<NUM> may be expressed as cov(x<NUM>, x<NUM>) = cov(µ<NUM>, µ<NUM>) + cov(ε<NUM>, ε<NUM>). In terms of a binary Bayesian decision problem, an intra-personal hypothesis H<NUM> that the two faces x<NUM>, x<NUM> belong to the same user, and an extra-personal hypothesis HE that the two faces x<NUM>, x<NUM> do not belong to the same user, may be tested. Under the HI hypothesis, the identity pair µ<NUM>, µ<NUM> are the same, and their intra-personal variations ε<NUM>, ε<NUM> are independent. The covariance matrix of the distribution P(x<NUM>, x<NUM> | HI) can be derived as ΣI = [Sµ + Sε, Sµ; Sµ, Sµ + Sε]. Under hypothesis HE, both the identities and intra-personal variations are independent. Thus, the covariance matrix of the distribution P(x<NUM>, x<NUM> | HE) can be derived as ΣE = [Sµ + Sε, <NUM>; <NUM>, Sµ + Sε]. With these conditional joint probabilities, a logarithmic likelihood ratio r(x<NUM>, x<NUM>) can be obtained: r(x<NUM>, x<NUM>) = log[(P(x<NUM>, x<NUM> | HI)/(P(x<NUM>, x<NUM> | HE))] = xT<NUM>*Ax<NUM> + xT<NUM>*Ax<NUM> - 2xT<NUM>*Gx<NUM>. In this example, A = (Sµ + Sε)-<NUM> - (F + G), where [F + G, G; G, F + G] = [Sµ + Sε, Sµ; Sµ, Sµ + Sε]-<NUM>. Sµ and Sε are two unknown covariance matrices which are learned from the corresponding data. In addition to the method described above, other suitable methods of machine learning may be employed, such as by approximation with between-class and within-class covariance matrices used in linear discriminant analysis (LDA). As another non-limiting example, an expectation-maximization-like algorithm may be used to jointly estimate the two matrices.

Continuing with <FIG>, each feature distance <NUM>, <NUM>, and <NUM> may be computed as a likelihood ratio of a probability of a respective pair of feature vectors belonging to a real human face and a probability of the respective pair of feature vectors belonging to a spoofed human face. Feature distances for each data set in a plurality of triples of training data <NUM> may be similarly computed. These feature distances may then be plotted in a two-dimensional feature space for identifying and separating feature distances into two classes respectively corresponding to spoofed human face image data and non-spoofed human face image data.

Process <NUM> may thus include, at <NUM>, separating the first, second, and third feature distances <NUM>, <NUM>, and <NUM> into one of a real human face image data class and a spoofed human face image data class. <FIG> shows a two-dimensional feature distance space <NUM> plotting a plurality of feature distance coordinates. A first axis <NUM> of space <NUM> plots a range of test feature distances (e.g., third feature distance <NUM>) between corresponding pairs of test training image data of a human face in the first spectral region and test training image data of the human face in the second spectral region. A second axis <NUM> of space <NUM> plots a range of differences between corresponding pairs of first feature distances and second feature distances (e.g., first feature distance <NUM> subtracted from second feature distance <NUM>).

The plurality of feature distance coordinates in feature distance space <NUM> may each be separated into a real human face image data class <NUM> and a spoofed human face image data class <NUM>. With the real and spoofed human face image data classes separate, a classifier (e.g., run-time classifier <NUM>) may be trained to differentiate between the real and spoofed image data classes by receiving first, second, and third (e.g., test) feature distances and, based on the feature distances, plotting corresponding feature distance coordinates in space <NUM> to determine which class the feature distance coordinates, and thus the corresponding image data, belongs. As part of training the classifier, a predetermined relationship <NUM> (e.g., predetermined relationship <NUM>) may be derived that provides an efficient determination during run-time for determining which class to which image data belongs. Predetermined relationship <NUM> may be determined according to linear discriminant analysis as described above, and may assume the following example form: c<NUM>*d<NUM> + c<NUM>*(d<NUM>-d<NUM>) > t, where c<NUM> and c<NUM> are constants derived from the feature distance coordinates, d<NUM>, d<NUM>, d<NUM> are first, second, and third (e.g., test) feature distances, respectively, and t is a threshold derived from the feature distance coordinates. Accordingly, by virtue of predetermined relationship <NUM>, the classifier may compare a linear combination of first, second, and test (e.g., third) feature distances (e.g., for a given triple) to the threshold t. The classifier may be configured to determine that a human face is a real human face when the comparison exceeds the threshold t, and to determine that the human face is a spoofed human face when the comparison falls below the threshold t.

Other determinations as to whether a human face is spoofed or real may be made alternatively or in addition to the above. For example, the human face to which test image data in the first and second spectral regions corresponds may be determined to be a real human face when the test feature distance (e.g., between feature vectors of the first and second test image data) exceeds a test feature distance threshold. As another example, the human face to which test image data in the first and second spectral regions corresponds may be determined to be a real human face when the second feature distance (e.g., between corresponding registered image data and the second test image data) exceeds the first feature distance (e.g., between the corresponding registered image data and the first test image data).

The above described systems and processes offer the potential advantage of robust facial recognition that is resistant to human face spoofing. As such, a greater degree of security may be afforded to systems that control access on the basis of such facial recognition, with the potential for identity theft reduced.

<FIG> shows a flowchart illustrating a method <NUM> of determining whether a human face in image data is a real human face or a spoofed human face.

Method <NUM> includes, at <NUM>, computing a first feature distance between registered image data of a human face in a first spectral region and test image data of the human face in the first spectral region. The first feature distance is computed between respective feature vectors of the registered image data and the first test image data, as described above. The first spectral region may be an infrared spectral region, although alternatively other spectral regions may be used, as described above.

Method <NUM> includes, at <NUM>, computing a second feature distance between the registered image data of the human face in the first spectral region and test image data of the human face in a second spectral region. The second feature distance is computed between respective feature vectors of the registered image data and the second test image data, as described above. The second spectral region may be a visible spectral region, although alternatively other spectral regions may be used as the second spectral region, as described above.

Method <NUM> includes, at <NUM>, computing a test feature distance between the test image data of the human face in the first spectral region and the test image data of the human face in the second spectral region. The test feature distance is computed between respective feature vectors of the first test image data and the second test image data.

Each feature distance (e.g., first, second, and test feature distances) may be computed as a likelihood ratio of a probability of a respective pair of feature vectors belonging to the real human face and a probability of the respective pair of feature vectors belonging to the spoofed human face. The feature vectors may be computed based on local binary pattern analysis, as one example, or via another suitable process. Computing the first, second, and test feature distances includes computing a respective pair of feature vectors, each feature vector encoding, for corresponding image data, a histogram of texture values, and optionally one or more of an edge, a point, a shape, and a brightness.

Method <NUM> includes, at <NUM>, determining, based on a predetermined relationship differentiating between real human face image data and spoofed human face image data, whether the human face to which the test image data in the first and second spectral regions corresponds is a real human face or a spoofed human face. The predetermined relationship may be determined by training a classifier (e.g., classifier <NUM> of <FIG>) to differentiate between real human face image data and spoofed human face image data classes in a two-dimensional feature space (e.g., space <NUM> of <FIG>). As one example, a first axis of the two-dimensional feature distance space may plot a range of test feature distances, while a second axis of the two-dimensional feature space may plot a range of differences between corresponding pairs of first and second feature distances.

The predetermined relationship compares a linear combination of the first, second, and test feature distances to a threshold. The classifier may be configured to determine that the human face is a real human face when the comparison exceeds the threshold, and to determine that the human face is a spoofed human face when the comparison falls below the threshold. It may be determined that the human face to which the test image data in the first and second spectral regions corresponds is the real human face when the test feature distance exceeds a threshold. Further, it may be determined that the human face to which the test image data in the first and second spectral regions corresponds is the real human face when the second feature distance exceeds the first feature distance. An example method of training the classifier is described below with reference to <FIG>.

Method <NUM> includes, at <NUM>, modifying a behavior of a computing device (e.g., computing device <NUM> of <FIG>) based on whether the human face is determined to be the real human face or the spoofed human face. Modifying the behavior of the computing device may include permitting access to secured data when the human face is determined to be the real human face, and denying access to secured data when the human face is determined to be the spoofed human face, for example. Other modifications to the behavior of the computing device may include permitting or denying access to computing resources, and/or supplying the determination made at <NUM> to an output device (e.g., output device <NUM>), which may include displaying a graphical user interface (e.g., on the output device) indicating whether user authentication passed or failed, for example. Any suitable modifications to the behavior of the computing device may be made, however. Further, it will be appreciated that the techniques described herein may be combined with other security techniques to enable multifactor authentication of the user prior to permitting access to the secured data.

<FIG> shows a flowchart illustrating a method <NUM> of deriving a classifier for differentiating between real human face image data and spoofed human face image data.

Method <NUM> may include, at <NUM>, receiving registered image data of a human face in a first spectral region, at <NUM>, receiving test image data of the human face in the first spectral region, and at <NUM>, receiving test image data of the human face in a second spectral region.

For each of the registered image data, the test image data in the first spectral region, and the test image data in the second spectral region, method <NUM> may include, at <NUM>, identifying a plurality of regions of interest, at <NUM>, extracting at least one feature from each of the plurality of regions of interest, and, at <NUM>, assembling the extracted features into a feature vector.

Method <NUM> may include, at <NUM>, computing a first feature distance between the feature vector of the registered image data and the feature vector of the test image data in the first spectral region.

Method <NUM> may include, at <NUM>, computing a second feature distance between the feature vector of the registered image data and the feature vector of the test image data in the second spectral region.

Method <NUM> may include, at <NUM>, computing a test feature distance between the feature vector of the test image data in the first spectral region and the feature vector of the test image data in the second spectral region.

Method <NUM> may include, at <NUM>, separating the first, second, and test feature distances into one of a real human face image data class and a spoofed human face image data class in a two-dimensional feature distance space.

Method <NUM> may include, at <NUM>, deriving a classifier from the separated feature distances, the classifier configured to differentiate between real human face image data and spoofed human face image data.

The above described methods illustrated in <FIG> and <FIG> and the process illustrated in <FIG> may be implemented on the hardware and software described in relation to <FIG>, or in another suitable hardware and software environment.

It will be appreciated that the computing device <NUM> illustrated in <FIG> and described herein may take the form of one or more personal computers, server computers, tablet computers, home-entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phone), and/or other computing devices.

Each such computing device includes a processor, volatile memory, and non-volatile memory, as well as a display, input device, and communication system configured to enable the computing device to communicate with other devices via a computer network.

The processor of each computing device is configured to execute instructions that are part of one or more applications, programs, routines, libraries, objects, components, data structures, or other logical constructs.

The processor of each device is typically configured to execute software instructions that are stored in non-volatile memory using portions of volatile memory. Additionally or alternatively, the processor may include one or more hardware or firmware processors configured to execute hardware or firmware instructions. Processors used by the devices described herein may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the processor optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the processor may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.

Non-volatile memory is configured to hold software instructions even when power is cut to the device, and may include optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), solid state memory (e.g., EPROM, EEPROM, FLASH memory, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Volatile memory is configured to hold software instructions and data temporarily during execution of programs by the processor, and typically such data is lost when power is cut to the device. Examples of volatile memory that may be used include RAM, DRAM, etc..

Aspects of processor, non-volatile memory, and volatile memory may be integrated together into one or more hardware-logic components.

The terms "module," "program," and "engine" may be used to describe an aspect of computing device <NUM> implemented to perform a particular function. In some cases, a module, program, or engine may be instantiated via a processor executing instructions stored in non-volatile memory using portions of volatile memory at execution time. It will be understood that different modules, programs, and/or engines may be instantiated from the same application, service, code block, object, library, routine, API, function, etc. Likewise, the same module, program, and/or engine may be instantiated by different applications, services, code blocks, objects, routines, APIs, functions, etc. The terms "module," "program," and "engine" may encompass individual or groups of executable files, data files, libraries, drivers, scripts, database records, etc. The term module may also designate hardware in some cases, and when used in this context the description will clearly indicate whether that a module is hardware.

Each computing device may include an associated display, which may be used to present a visual representation of data computed and output by the processor. Such display devices may be combined with processor, volatile memory, and non-volatile memory in a shared enclosure, or such display devices may be peripheral display devices. Touch screens may be utilized that function both as a display and as an input device.

Each computing device may include a user input device such as a keyboard, mouse, touch pad, touch screen, microphone or game controller.

Each computing device may include a communication subsystem configured to communicatively couple the computing device with one or more other computing devices. The communication subsystem may include wired and/or wireless communication devices compatible with one or more different communication protocols. As non-limiting examples, the communication subsystem may be configured for communication via a wireless telephone or data network, or a wired or wireless local- or wide-area network. In some embodiments, the communication subsystem may allow the computing device to send and/or receive messages to and/or from other devices via a network such as the Internet.

Another example provides a computing device comprising a processor configured to compute a first feature distance between registered image data of a human face in a first spectral region and test image data of the human face in the first spectral region, compute a second feature distance between the registered image data of the human face in the first spectral region and test image data of the human face in a second spectral region, compute a test feature distance between the test image data of the human face in the first spectral region and the test image data of the human face in the second spectral region, determine, based on a predetermined relationship differentiating between real human face image data and spoofed human face image data, whether the human face to which the test image data in the first and second spectral regions corresponds is a real human face or a spoofed human face, and modify a behavior of the computing device based on whether the human face is determined to be the real human face or the spoofed human face. In such an example, the predetermined relationship alternatively or additionally may be determined by training a classifier to differentiate between real human face image data and spoofed human face image data classes in a two-dimensional feature distance space. In such an example, a first axis of the two-dimensional feature distance space alternatively or additionally may plot a range of test feature distances. In such an example, a second axis of the two-dimensional feature space alternatively or additionally may plot a range of differences between corresponding pairs of first and second feature distances. In such an example, the predetermined relationship compares a linear combination of the first, second, and test feature distances to a threshold. In such an example, the classifier alternatively or additionally may be configured to determine that the human face is a real human face when the comparison exceeds the threshold, and to determine that the human face is a spoofed human face when the comparison falls below the threshold. In such an example, each feature distance alternatively or additionally may be computed as a likelihood ratio of a probability of a respective pair of feature vectors belonging to the real human face and a probability of the respective pair of feature vectors belonging to the spoofed human face. In such an example, the feature vectors alternatively or additionally may be computed based on local binary pattern analysis. In such an example, the first spectral region alternatively or additionally may be an infrared spectral region. In such an example, the second spectral region alternatively or additionally may be a visible spectral region. In such an example, it alternatively or additionally may be determined that the human face to which the test image data in the first and second spectral regions corresponds is the real human face when the test feature distance exceeds a threshold. In such an example, it alternatively or additionally may be determined that the human face to which the test image data in the first and second spectral regions corresponds is the real human face when the second feature distance exceeds the first feature distance. In such an example, computing the first, second, and test feature distances includes computing a respective pair of feature vectors, each feature vector encoding, for corresponding image data, a histogram of texture values, and optionally one or more of an edge, a point, a shape, and a brightness. Any or all of the above-described examples may be combined in any suitable manner in various implementations.

Claim 1:
A computing device (<NUM>) for performing biometric verification, comprising:
a processor (<NUM>) configured to:
compute (<NUM>) a first feature distance (<NUM>) between registered image data (<NUM>) of a human face in a first spectral region and test image data (<NUM>) of the human face in the first spectral region, the test image data having been captured by a camera comprising a first spectral capture module and a second spectral capture module;
compute (<NUM>) a second feature distance (<NUM>) between the registered image data (<NUM>) of the human face in the first spectral region and test image data (<NUM>) of the human face in a second spectral region, wherein the first and second spectral regions are such that the respective outputs of the first and second spectral capture modules exhibit detectable differences characteristic of human skin wherein the detectable differences may be unreproducible by spoofing objects not comprised of human skin;
compute (<NUM>) a test feature distance (<NUM>) between the test image data (<NUM>) of the human face in the first spectral region and the test image data (<NUM>) of the human face in the second spectral region;
determine (<NUM>), based on a predetermined relationship (<NUM>) differentiating between real human face image data and spoofed human face image data, whether the human face to which the test image data in the first (<NUM>) and second (<NUM>) spectral regions corresponds is a real human face or a spoofed human face, wherein the predetermined relationship (<NUM>) compares a linear combination of the first feature distance (<NUM>), second feature distance (<NUM>), and test feature distance (<NUM>) to a threshold; and
modify (<NUM>) a behavior of the computing device based on whether the human face is determined to be the real human face or the spoofed human face;
wherein computing the first (<NUM>), second (<NUM>), and test feature (<NUM>) distances includes computing a respective pair of feature vectors, each feature vector encoding, for corresponding image data, a histogram of texture values.