Divide and Conquer

Do these two pictures show the same person?

Obviously, they don't. That question is really easy to answer – at least for humans. If you're a programmer and someone asks you to write a program that is able to distinguish people, that is a much more difficult task than doing it yourself.

As we often do in computer science, we start by breaking the large difficult problem into subproblems. How do we tell if two pictures show the same person? As humans, we focus on the face, because it is the feature to identify people. While other aspects of a portrait might allow to draw conclusions about the identity of the pictured person too, they are less universal and often less precise or more changeable. Thus, it seems reasonable to first look for the face(s) in a picture and process just them further on.

Face Detection vs. Face Recognition

The first obvious decomposition into subproblems we can make is therefore to handle finding faces and identifying a person separately. Finding faces is typically called Face Detection, identifying the person Face Recognition. Identifying a person is however a much more general and abstract task than answering our opening question, Are the two the same? Rather, the goal is to gain an understanding of the similarity between images of faces. This also allows us to work on questions like »How many different people do these 14 photos of faces show?« or »Does this face belong to the same person as these eight faces that we already know about?« We could infer this to some extent if we could only decide yes or no for two faces. A true understanding of person resemblance however allows us to answer these questions more specifically and precisely.

An error has occurred. This application may no longer respond until reloaded. Reload 🗙