Bird
Raised Fist0
Computer Visionml~5 mins

Face embedding and comparison in Computer Vision - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a face embedding in face recognition?
A face embedding is a list of numbers that represents the unique features of a person's face. It is like a digital fingerprint for the face, used to compare and recognize faces.
Click to reveal answer
beginner
Why do we use face embeddings instead of raw images for comparison?
Face embeddings simplify the face data into numbers that capture important features. This makes comparing faces faster and more accurate than using raw images, which have too much unnecessary detail.
Click to reveal answer
intermediate
What is the common method to compare two face embeddings?
We usually calculate the distance between two face embeddings using methods like Euclidean distance or cosine similarity. Smaller distances mean the faces are more likely to be the same person.
Click to reveal answer
intermediate
How does a neural network create a face embedding?
A neural network processes the face image through layers that learn to extract important features. The output is a fixed-size vector (embedding) that captures the face's unique traits.
Click to reveal answer
beginner
What role does a threshold play in face comparison?
A threshold is a set value for the distance between embeddings. If the distance is below this threshold, the faces are considered a match; if above, they are different people.
Click to reveal answer
What does a face embedding represent?
AA unique numeric representation of a face
BA raw image of a face
CA text description of a face
DA video of a face
Which distance metric is commonly used to compare face embeddings?
AJaccard index
BHamming distance
CEuclidean distance
DManhattan distance
Why is a threshold needed in face comparison?
ATo detect faces in images
BTo resize face images
CTo convert images to grayscale
DTo decide if two faces match based on embedding distance
What is the output size of a face embedding vector typically?
AA fixed-length numeric vector
BA variable-length text string
CA color image
DA binary mask
Which of these is NOT a benefit of using face embeddings?
AFaster face comparison
BShows the original face image
CRequires less storage than raw images
DMore accurate recognition
Explain how face embeddings are created and used for face comparison.
Think about how a face image turns into numbers and how those numbers tell if two faces are the same.
You got /4 concepts.
    Describe why face embeddings improve face recognition compared to using raw images.
    Consider the difference between comparing full pictures versus comparing summaries.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of face embedding in face recognition systems?
      easy
      A. To detect faces in an image
      B. To change the face image colors
      C. To crop the face from the image
      D. To convert a face image into a unique list of numbers

      Solution

      1. Step 1: Understand face embedding

        Face embedding transforms a face image into a unique numeric vector representing its features.
      2. Step 2: Identify the purpose

        This numeric vector helps compare faces by their features, not by raw pixels.
      3. Final Answer:

        To convert a face image into a unique list of numbers -> Option D
      4. Quick Check:

        Face embedding = unique number list [OK]
      Hint: Face embedding means turning face into numbers [OK]
      Common Mistakes:
      • Confusing embedding with face detection
      • Thinking embedding changes image colors
      • Assuming embedding crops the face
      2. Which Python code snippet correctly computes the Euclidean distance between two face embeddings emb1 and emb2 stored as lists?
      easy
      A. distance = sum((a - b)**2 for a, b in zip(emb1, emb2)) ** 0.5
      B. distance = abs(emb1 - emb2)
      C. distance = emb1 + emb2
      D. distance = max(emb1, emb2)

      Solution

      1. Step 1: Recall Euclidean distance formula

        Euclidean distance is the square root of sum of squared differences between corresponding elements.
      2. Step 2: Match code to formula

        distance = sum((a - b)**2 for a, b in zip(emb1, emb2)) ** 0.5 uses a generator to compute squared differences, sums them, then takes square root, matching the formula.
      3. Final Answer:

        distance = sum((a - b)**2 for a, b in zip(emb1, emb2)) ** 0.5 -> Option A
      4. Quick Check:

        Euclidean distance = sqrt(sum of squared differences) [OK]
      Hint: Euclidean distance = sqrt of sum of squared differences [OK]
      Common Mistakes:
      • Using abs() on lists causes error
      • Adding lists concatenates, not distance
      • Using max() does not measure distance
      3. Given the following code, what is the printed output?
      import numpy as np
      emb1 = np.array([0.1, 0.2, 0.3])
      emb2 = np.array([0.1, 0.25, 0.35])
      distance = np.linalg.norm(emb1 - emb2)
      print(round(distance, 3))
      medium
      A. 0.050
      B. 0.100
      C. 0.071
      D. 0.150

      Solution

      1. Step 1: Calculate difference vector

        emb1 - emb2 = [0.1-0.1, 0.2-0.25, 0.3-0.35] = [0, -0.05, -0.05]
      2. Step 2: Compute Euclidean norm

        Distance = sqrt(0^2 + (-0.05)^2 + (-0.05)^2) = sqrt(0 + 0.0025 + 0.0025) = sqrt(0.005) ≈ 0.0707
      3. Final Answer:

        0.071 -> Option C
      4. Quick Check:

        Distance ≈ 0.071 [OK]
      Hint: Subtract vectors, then sqrt of sum squares for distance [OK]
      Common Mistakes:
      • Forgetting to square differences
      • Rounding incorrectly
      • Mixing up emb1 and emb2 order
      4. The following code tries to compare two face embeddings but raises an error. What is the error and how to fix it?
      emb1 = [0.1, 0.2, 0.3]
      emb2 = [0.1, 0.25, 0.35]
      distance = (emb1 - emb2).norm()
      print(distance)
      medium
      A. Lists do not support subtraction; convert to numpy arrays first
      B. norm() is not a valid method; use length() instead
      C. emb1 and emb2 must be strings, not lists
      D. Missing import statement for math module

      Solution

      1. Step 1: Identify the error cause

        Subtracting two Python lists causes a TypeError because lists do not support '-' operator.
      2. Step 2: Fix by converting lists to numpy arrays

        Convert emb1 and emb2 to numpy arrays to enable element-wise subtraction and use numpy.linalg.norm() for distance.
      3. Final Answer:

        Lists do not support subtraction; convert to numpy arrays first -> Option A
      4. Quick Check:

        List subtraction error fixed by numpy arrays [OK]
      Hint: Use numpy arrays for math on lists [OK]
      Common Mistakes:
      • Trying to use norm() on lists
      • Ignoring TypeError from list subtraction
      • Assuming norm() is built-in for lists
      5. You have two face embeddings: embA = [0.3, 0.4, 0.5] and embB = [0.31, 0.39, 0.52]. You want to decide if they belong to the same person using a threshold of 0.05 on Euclidean distance. Which code correctly implements this decision?
      hard
      A. distance = max(abs(a - b) for a, b in zip(embA, embB)) if distance > 0.05: print('Same person') else: print('Different person')
      B. distance = sum((a - b)**2 for a, b in zip(embA, embB)) ** 0.5 if distance < 0.05: print('Same person') else: print('Different person')
      C. distance = sum(abs(a - b) for a, b in zip(embA, embB)) if distance < 0.05: print('Different person') else: print('Same person')
      D. distance = sum((a + b)**2 for a, b in zip(embA, embB)) ** 0.5 if distance < 0.05: print('Same person') else: print('Different person')

      Solution

      1. Step 1: Calculate Euclidean distance correctly

        distance = sum((a - b)**2 for a, b in zip(embA, embB)) ** 0.5 if distance < 0.05: print('Same person') else: print('Different person') computes Euclidean distance as sqrt of sum of squared differences, which is the right metric.
      2. Step 2: Apply threshold logic

        If distance is less than 0.05, print 'Same person'; else 'Different person'. This matches the problem statement.
      3. Final Answer:

        distance = sum((a - b)**2 for a, b in zip(embA, embB)) ** 0.5 if distance < 0.05: print('Same person') else: print('Different person') -> Option B
      4. Quick Check:

        Euclidean distance < threshold means same person [OK]
      Hint: Use Euclidean distance and compare with threshold [OK]
      Common Mistakes:
      • Using max difference instead of Euclidean distance
      • Reversing the if condition logic
      • Adding embeddings instead of subtracting
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard