Bird
Raised Fist0
Computer Visionml~12 mins

Face embedding and comparison in Computer Vision - Model Pipeline Trace

Choose your learning style10 modes available
Model Pipeline - Face embedding and comparison

This pipeline takes face images, turns them into special number lists called embeddings, and then compares these lists to see how similar the faces are. It helps in recognizing or verifying people by their faces.

Data Flow - 4 Stages
1Input Image
1 image x 160 x 160 x 3 (RGB)→Receive a face image of size 160x160 pixels with 3 color channels→1 image x 160 x 160 x 3
A photo of a person's face with height and width 160 pixels
↓
2Face Detection and Alignment
1 image x 160 x 160 x 3→Detect face location and align it to a standard pose→1 aligned face image x 160 x 160 x 3
Face centered and rotated so eyes are horizontal
↓
3Embedding Extraction
1 aligned face image x 160 x 160 x 3→Pass image through a neural network to get a 128-dimensional vector→1 vector x 128 dimensions
[0.12, -0.05, 0.33, ..., 0.07] (128 numbers representing the face)
↓
4Embedding Comparison
2 vectors x 128 dimensions→Calculate distance (e.g., Euclidean) between two face embeddings→1 similarity score (float)
Distance = 0.45 (lower means more similar)
Training Trace - Epoch by Epoch
Loss
1.2 |****
0.9 |***
0.7 |**
0.5 |*
0.35| 
Epochs ->
EpochLoss ↓Accuracy ↑Observation
11.20.45Model starts learning to map faces to embeddings
20.90.60Loss decreases, accuracy improves as embeddings get better
30.70.72Model learns more distinct embeddings for different faces
40.50.82Clear improvement in face representation quality
50.350.90Model converges with good accuracy on face similarity
Prediction Trace - 4 Layers
Layer 1: Input Image
Layer 2: Face Detection and Alignment
Layer 3: Neural Network Embedding Layer
Layer 4: Embedding Comparison
Model Quiz - 3 Questions
Test your understanding
What does the embedding vector represent in this pipeline?
AThe original face image pixels
BThe distance between two faces
CA list of numbers capturing unique face features
DThe aligned face image
Key Insight
Face embedding converts complex face images into simple number lists that computers can compare easily. Aligning faces first helps the model focus on important features. Training improves the model so embeddings for the same person get closer, and for different people get farther apart.

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