Rekognition API differences: faces not detected

0

Hello,

I've noticed a difference among the faces detected in same picture (please see it below), by different AWS Rekognition APIs: DetectLabels, DetectFaces, IndexFaces. While DetectFaces detects 16 faces, DetectLabels and IndexFaces does not detects any face (in Management Console also).

Could you please specify why is this difference ?

difference

<update> The same situation applies to following picture where DetectFaces detects 4 faces, DetectLabels and IndexFaces have not detected any face (in Management Console also). In this picture I've noted the Label: Prayer. Could the Face Labels be replaced by this one ? In previous photo, could the labels: Adult, Male, Man replace the Face Labels ?

diff

The same situation applies to following picture where DetectFaces detects 3 faces, DetectLabels and IndexFaces have not detected any face (in Management Console also).

diffs

Thank you,
Mihai

asked 9 months ago261 views
1 Answer
0

Hello,

After some research, I've found some reasons for the differences:

  1. the differences (in second picture) among DetectFaces and IndexFaces are because, beside the IndexFaces that are 0, there are also other faces detected: the UnindexedFaces (that are 4). The IndexFaces + UnindexedFaces = DetectFaces. According to Rekognition.IndexFaces documentation,

faces aren't indexed for reasons such as:

  • The number of faces detected exceeds the value of the MaxFaces request parameter.
  • The face is too small compared to the image dimensions.
  • The face is too blurry.
  • The image is too dark.
  • The face has an extreme pose.
  • The face doesn’t have enough detail to be suitable for face search.

So, seams that IndexFaces are the faces that are viewable and recognizable from human eye point of view. Althogh DetectFaces returns records for all faces, it does not state any difference in quality among them, while IndexFaces makes 2 quality categories: good, bad.

  1. According to the Rekognition.DetectLabels documentation :

If the object detected is a person, the operation doesn't provide the same facial details that the DetectFaces operation provides.

The differences in the number of faces among the DetectFaces and DetectLabels, could be that bad quality faces are not considered Faces from DetectLabels point of view. So, seams that due to low level of details, the faces are not described as Faces by DetectLabels method.

For all the methods, the Confidence say that the object in the picture is a face, but does not say anything about the quality.

  • DetectLabels: Confidence - The level of confidence in the label assigned to a detected object.
  • IndexFaces: Confidence, which indicates the confidence that the bounding box contains a face.
  • DetectFaces: a confidence value (that the bounding box contains a face)

Considering the above conclusions, seams that the best way to identify clear, human recognizable faces, is to use the IndexFaces method. DetectLabels acts in the same way, but with difference that when in the picture are only low quality faces, it does not specify any face.

But because all the methods are available, which are the use-cases where each could be applied ?

answered 8 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions