Bird
Raised Fist0
Computer Visionml~8 mins

Haar cascade face detection in Computer Vision - Model Metrics & Evaluation

Choose your learning style10 modes available
Metrics & Evaluation - Haar cascade face detection
Which metric matters for Haar cascade face detection and WHY

For Haar cascade face detection, precision and recall are the most important metrics. Precision tells us how many detected faces are actually faces (few false alarms). Recall tells us how many real faces the detector finds (few misses). Since missing a face or wrongly detecting a face both matter, we want a good balance. The F1 score combines precision and recall to give one number showing overall detection quality.

Confusion matrix for Haar cascade face detection
      | Predicted Face | Predicted No Face |
      |----------------|-------------------|
      | True Positive  | False Positive    |
      | False Negative | True Negative     |

      Example:
      TP = 80 (faces correctly detected)
      FP = 20 (non-faces wrongly detected as faces)
      FN = 15 (faces missed)
      TN = 885 (non-faces correctly ignored)

      Total samples = 80 + 20 + 15 + 885 = 1000
    
Precision vs Recall tradeoff with examples

If the detector is set to be very sensitive, it finds almost all faces (high recall) but also detects many false faces (low precision). This means many false alarms, which can annoy users.

If the detector is strict, it only detects very clear faces (high precision) but misses some faces (low recall). This means some faces go undetected, which can be bad for security or photo tagging.

For example, in a photo app, missing a face (low recall) is worse because users want all faces found. So recall is more important. In a security camera, false alarms (low precision) can cause wasted attention, so precision matters more.

What good vs bad metric values look like for Haar cascade face detection

Good: Precision and recall both above 0.85 means most faces are found and few false alarms happen.

Bad: Precision below 0.5 means many false detections, recall below 0.5 means many faces missed.

For example, precision=0.9 and recall=0.9 is excellent. Precision=0.4 and recall=0.7 is poor because many false faces are detected.

Common pitfalls in metrics for Haar cascade face detection
  • Accuracy paradox: If most images have no faces, accuracy can be high by always predicting no face, but the detector is useless.
  • Data leakage: Testing on images used in training inflates metrics falsely.
  • Overfitting: Detector works well on training images but poorly on new images, showing high training metrics but low real-world performance.
  • Ignoring class imbalance: Faces are rare compared to non-faces, so metrics like accuracy can be misleading.
Self-check question

Your Haar cascade face detector has 98% accuracy but only 12% recall on faces. Is it good for production? Why or why not?

Answer: No, it is not good. The high accuracy is misleading because most images have no faces, so the detector guesses "no face" most times. The very low recall means it misses almost all faces, which defeats the purpose of face detection.

Key Result
Precision and recall are key for Haar cascade face detection to balance false alarms and missed faces.

Practice

(1/5)
1. What is the main purpose of Haar cascade in face detection?
easy
A. To colorize black and white images
B. To generate 3D models of faces
C. To compress images without losing quality
D. To quickly find faces in images using simple patterns

Solution

  1. Step 1: Understand Haar cascade function

    Haar cascade uses simple patterns to detect faces quickly in images.
  2. Step 2: Compare options with purpose

    Only To quickly find faces in images using simple patterns matches the purpose of fast face detection using patterns.
  3. Final Answer:

    To quickly find faces in images using simple patterns -> Option D
  4. Quick Check:

    Haar cascade = Fast face detection [OK]
Hint: Remember Haar cascade finds faces fast using patterns [OK]
Common Mistakes:
  • Confusing Haar cascade with 3D modeling
  • Thinking it changes image colors
  • Assuming it compresses images
2. Which of the following is the correct way to load a Haar cascade XML file in OpenCV (Python)?
easy
A. face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
B. face_cascade = cv2.loadCascade('haarcascade_frontalface_default.xml')
C. face_cascade = cv2.Cascade('haarcascade_frontalface_default.xml')
D. face_cascade = cv2.loadClassifier('haarcascade_frontalface_default.xml')

Solution

  1. Step 1: Recall OpenCV syntax for Haar cascade loading

    The correct method is cv2.CascadeClassifier() with the XML file path as argument.
  2. Step 2: Check each option's method name

    Only face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') uses the exact method name and syntax from OpenCV documentation.
  3. Final Answer:

    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') -> Option A
  4. Quick Check:

    Load Haar cascade = cv2.CascadeClassifier() [OK]
Hint: Use cv2.CascadeClassifier() to load Haar cascades [OK]
Common Mistakes:
  • Using incorrect method names like loadCascade or loadClassifier
  • Missing parentheses after method name
  • Passing wrong file path format
3. Given this code snippet, what will be the output if no faces are detected in the image?
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5)
print(faces)
medium
A. A list of detected face coordinates
B. An empty list []
C. None
D. A runtime error

Solution

  1. Step 1: Understand detectMultiScale output

    detectMultiScale returns a list of rectangles for detected faces or an empty list if none found.
  2. Step 2: Check behavior when no faces detected

    If no faces are found, it returns an empty list, not None or error.
  3. Final Answer:

    An empty list [] -> Option B
  4. Quick Check:

    No faces detected = empty list [] [OK]
Hint: detectMultiScale returns [] if no faces found [OK]
Common Mistakes:
  • Expecting None instead of empty list
  • Assuming it throws an error
  • Thinking it returns a null value
4. Identify the error in this code snippet for face detection:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0))
medium
A. Missing third argument in cv2.rectangle for thickness
B. Incorrect variable name for face_cascade
C. detectMultiScale should be called on gray image, not color image
D. No error, code is correct

Solution

  1. Step 1: Check input image type for detectMultiScale

    detectMultiScale expects a grayscale image, but code uses 'image' which is likely color.
  2. Step 2: Review other parts for errors

    cv2.rectangle can omit thickness (defaults to 1), variable names are consistent.
  3. Final Answer:

    detectMultiScale should be called on gray image, not color image -> Option C
  4. Quick Check:

    detectMultiScale needs grayscale input [OK]
Hint: Always convert image to grayscale before detectMultiScale [OK]
Common Mistakes:
  • Passing color image directly to detectMultiScale
  • Assuming rectangle needs thickness argument
  • Using wrong variable names
5. You want to detect faces in a group photo but notice many false detections. Which parameter adjustment in detectMultiScale can help reduce false positives without missing faces?
hard
A. Increase minNeighbors value
B. Decrease scaleFactor value
C. Use a smaller image size
D. Set minSize to (0, 0)

Solution

  1. Step 1: Understand minNeighbors effect

    Increasing minNeighbors requires more neighbor rectangles to confirm detection, reducing false positives.
  2. Step 2: Evaluate other options

    Decreasing scaleFactor increases detection time and may increase false positives; smaller image reduces detail; minSize (0,0) allows all sizes, not reducing false positives.
  3. Final Answer:

    Increase minNeighbors value -> Option A
  4. Quick Check:

    Higher minNeighbors = fewer false positives [OK]
Hint: Raise minNeighbors to reduce false detections [OK]
Common Mistakes:
  • Lowering scaleFactor to fix false positives
  • Shrinking image size expecting better detection
  • Setting minSize to zero ignoring face size
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