COS 429 - Computer Vision

Fall 2019

Course home Outline and Lecture Notes Assignments


Assignment 2: Face Detection and Model Fitting

Due Thursday, Oct. 17


Part IV. Multi-Scale Face Detection

For the grand finale of implementing a face detector, you will run your detector at multiple scales. Because the classifier is trained at 36x36, you will need to resize images to suit the classifier. There are two ways to do this:

  1. Repeatedly rescale the image, but keep a fixed window size, and run your single-scale detector on the ever-shrinking images.
  2. Extract windows of ever-larger sizes, resizing each window before passing it in to the HoG computation.
Of these options, #2 is probably simpler to implement, while #1 will be faster. The choice is yours.

Your output should look something like this:

Notice that, as before, no nonmaximum suppression has been performed, over either position or scale.


Do this:

Do this and turn in:

  1. Implement find_faces.py. No starter code is provided for you this time, so you will have to adapt from the code you wrote for part III. You may choose either of the approaches suggested above: Submit your find_faces.py file
  2. Save and submit your face detection results for 2 images showing particularly good and 2 images showing particularly bad performance.

Optional extra credit (up to 2 points each):
In your writeup, clearly specify which extra credit items you attempted. Be sure to submit all code, along with a description of your method and an analysis of the results. The amount of credit will depend on the sophistication and thoroughness of your implementation and analysis.

  1. Implement nonmaximum suppression, over both position and scale, to eliminate overlapping detections.
  2. The ground truth detections are stored in testing_scenes_bboxes.txt. How would you compare your detector outputs to the results stored in there? Discuss in your writeup how you would handle e.g., the fact that at a high threshold the detector would output very few but likely correct detections whereas at a low threshold the detector would output many more (but mostly incorrect) detections. How would your evaluation function handle that?






Last update 3-Oct-2019 16:03:28