cocoa-xu / evision

Evision: An OpenCV-Erlang/Elixir binding
https://evision.app
Apache License 2.0
323 stars 22 forks source link

Face recognition always answers that the two photos are of the same person. #206

Closed RyoWakabayashi closed 1 year ago

RyoWakabayashi commented 1 year ago
スクリーンショット 2023-07-07 10 03 14

Answer that Celine Dion and Jackie Chan are the same person.

The process of extracting facial features is currently implemented as follows.

      original_feature =
        Evision.Zoo.FaceRecognition.SFace.infer(recognizer, original_image, original_bbox)

      comparison_feature =
        Evision.Zoo.FaceRecognition.SFace.infer(
          recognizer,
          comparison_image,
          comparison_bbox
        )

When viewing the original_feature and comparison_feature values, they were always the same.

Changing the implementation to the following correctly identified the face.

      original_blob =
        Evision.FaceRecognizerSF.alignCrop(recognizer, original_image, original_bbox)

      original_feature =
        Evision.FaceRecognizerSF.feature(recognizer, original_blob)
        |> Evision.Mat.to_nx()
        |> Evision.Mat.from_nx()

      comparison_blob =
        Evision.FaceRecognizerSF.alignCrop(recognizer, comparison_image, comparison_bbox)

      comparison_feature =
        Evision.FaceRecognizerSF.feature(recognizer, comparison_blob)
        |> Evision.Mat.to_nx()
        |> Evision.Mat.from_nx()
スクリーンショット 2023-07-07 10 11 04