Bird
Raised Fist0
Computer Visionml~10 mins

Face embedding and comparison in Computer Vision - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to load a face embedding model using a common deep learning library.

Computer Vision
model = [1]('facenet_keras.h5')
Drag options to blanks, or click blank then click option'
Aload_model
Bfit
Ccompile
Dpredict
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'fit' instead of 'load_model' which tries to train the model.
Using 'predict' which runs the model but does not load it.
2fill in blank
medium

Complete the code to preprocess a face image before embedding extraction.

Computer Vision
preprocessed_face = face_image[1](size=(160, 160))
Drag options to blanks, or click blank then click option'
Arotate
Bnormalize
Cresize
Dcrop
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'normalize' which changes pixel values but not size.
Using 'crop' which cuts part of the image but may not resize.
3fill in blank
hard

Fix the error in the code to compute the Euclidean distance between two face embeddings.

Computer Vision
distance = np.linalg.norm(embedding1 [1] embedding2)
Drag options to blanks, or click blank then click option'
A+
B-
C*
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' which sums vectors instead of finding difference.
Using '*' or '/' which do element-wise multiplication or division.
4fill in blank
hard

Fill both blanks to create a dictionary of face embeddings for a list of face images.

Computer Vision
embeddings = {face_id: model.[1]([2](face)) for face_id, face in faces.items()}
Drag options to blanks, or click blank then click option'
Apredict
Bresize
Cpreprocess_input
Dfit
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'fit' which trains the model instead of predicting.
Using 'resize' as a model method which is incorrect.
5fill in blank
hard

Fill all three blanks to compare two face embeddings and decide if they match based on a threshold.

Computer Vision
distance = np.linalg.norm(embedding1 [1] embedding2)
match = distance [2] threshold
result = 'Match' if match else [3]
Drag options to blanks, or click blank then click option'
A-
B<=
C'No Match'
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' instead of '-' for distance calculation.
Using '>' instead of '<=' for threshold comparison.
Returning a boolean instead of a string for result.

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