malinna / FaceReco-c

Face recognition system for unconstrained environments.
BSD 3-Clause "New" or "Revised" License
8 stars 7 forks source link

Some questions #1

Open atv2016 opened 7 years ago

atv2016 commented 7 years ago

Hi Marko, I hope you don't mind asking me some questions on your FaceReco-c project.

  1. How many pictures does it need to train and succesfully recognize a person?
  2. How is a untrained person depicted?

I haven't compiled it, just wondering. Thanks! Alef

malinna commented 7 years ago

Hi,

  1. Yes, but the method have its limits and can make errors. Also it may not work well with great number of persons (> 50-100). Tested only with small number of people (20 persons).

  2. Yes.

  3. When a know person comes back to screen and is recognized correctly, the database is updated with the new face frames of the person. But the visiting (or leaving) time is not stored.

  4. Yes. Have you watched the YouTube video (https://www.youtube.com/watch?v=QxhqC-4yHiA)? 'NEW' is shown for persons who are not found in the face database. Also, learning of new faces can be disabled, thus making it possible to use fixed face databases.

Br, Marko

18.1.2017, 19:38, atv2016 kirjoitti:

Hi Marko, I hope you don't mind asking me some questions on your FaceReco-c project. So your software learns all faces from video.

  1. Does it differentiate correctly between all faces?
  2. Does it recognize them when they go out of screen and come back in?
  3. Does it save these results?
  4. Would it be easy to flag a unknown person (who was not in the video trained on earlier for example?

I haven't compiled it, just wondering. Thanks! Alef

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/malinna/FaceReco-c/issues/1, or mute the thread https://github.com/notifications/unsubscribe-auth/ACs6fygG5lrTiD-zDlPEmyEsAfQIofGwks5rTk37gaJpZM4LnLQZ.

atv2016 commented 7 years ago

Hi Marko, Thanks for your reply. It looks really great.

By .3 I meant does it save the database of trained persons (not the time), but from your answer I can understand it does. Sorry I should have phrased that better.

Would you care to elaborate on its flaws? Is it lighting? I'm assuming you do the usual preprocessing.

As for your people limit, I'm guessing after a certain amount of people it won't be able to differentiate between them all anymore? Would that be solvable with more pictures per set/person?

Many thanks for your reply. Alef

Sent from my iPhone

On 18 Jan 2017, at 18:30, Marko Linna notifications@github.com<mailto:notifications@github.com> wrote:

Hi,

  1. Yes, but the method have its limits and can make errors. Also it may not work well with great number of persons (> 50-100). Tested only with small number of people (20 persons).

  2. Yes.

  3. When a know person comes back to screen and is recognized correctly, the database is updated with the new face frames of the person. But the visiting (or leaving) time is not stored.

  4. Yes. Have you watched the YouTube video (https://www.youtube.com/watch?v=QxhqC-4yHiA)? 'NEW' is shown for persons who are not found in the face database. Also, learning of new faces can be disabled, thus making it possible to use fixed face databases.

Br, Marko

18.1.2017, 19:38, atv2016 kirjoitti:

Hi Marko, I hope you don't mind asking me some questions on your FaceReco-c project. So your software learns all faces from video.

  1. Does it differentiate correctly between all faces?
  2. Does it recognize them when they go out of screen and come back in?
  3. Does it save these results?
  4. Would it be easy to flag a unknown person (who was not in the video trained on earlier for example?

I haven't compiled it, just wondering. Thanks! Alef

- You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/malinna/FaceReco-c/issues/1, or mute the thread https://github.com/notifications/unsubscribe-auth/ACs6fygG5lrTiD-zDlPEmyEsAfQIofGwks5rTk37gaJpZM4LnLQZ.

- You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/malinna/FaceReco-c/issues/1#issuecomment-273559413, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AQIi068QZ84KVIXHC8k1F3FMNQ6CaTlOks5rTlo5gaJpZM4LnLQZ.

malinna commented 7 years ago

Hi,

The method uses LBP histograms to describe faces. Although LBP is quite robust against illumination changes, the method, as a whole, may not work well in unconstrained environments. Based on quick tests with some random videos (Friends TV-series, some talk shows, etc), where the environment is challenging, I noticed that it did not always perform so well. However, this is not all LBPs faults, since the method depends also face detection (OpenCVs Viola-Jones method) and face tracking (Chehra) algorithms, which also can fail. Face tracks should be long enough and contain many different head poses in order to method work robustly. With easier videos, for example, ones recorded with a webcam where the person is near the camera, the method seem to perform well.

Of course, if two persons end up having LBP histograms with short distances between each other, it can lead to wrong person recognition. So big number of persons should work if all the person have different enough faces. However, currently database growing is not managed so every time a new face is added, the search have more LBP histograms to go through (search can be time limited though). I think differentiation is not necessarily dependent on the number of persons, but on that of how close they faces are each other.

If you are training a new person, and want recognition to be robust, you should have at least changes in head pose, various head distances (for different resolutions), changes in facial expression, glasses on/off (if applicable) and maybe changes in illumination (just in case). If there is too limited LBP histograms (both amount and variation) for a person in the database, there is a risk that the next time when the person comes to camera, it won't be recognized.

As for preprocessing, I apply median blur with very small kernel size (3x3) and then make the image grayscale. In addition, face images are straightened and scaled to fixed size.

Br, Marko

18.1.2017, 20:48, atv2016 kirjoitti:

Hi Marko, Thanks for your reply. It looks really great.

By .3 I meant does it save the database of trained persons (not the time), but from your answer I can understand it does. Sorry I should have phrased that better.

Would you care to elaborate on its flaws? Is it lighting? I'm assuming you do the usual preprocessing.

As for your people limit, I'm guessing after a certain amount of people it won't be able to differentiate between them all anymore? Would that be solvable with more pictures per set/person?

Many thanks for your reply. Alef

Sent from my iPhone

On 18 Jan 2017, at 18:30, Marko Linna notifications@github.com<mailto:notifications@github.com> wrote:

Hi,

  1. Yes, but the method have its limits and can make errors. Also it may not work well with great number of persons (> 50-100). Tested only with small number of people (20 persons).

  2. Yes.

  3. When a know person comes back to screen and is recognized correctly, the database is updated with the new face frames of the person. But the visiting (or leaving) time is not stored.

  4. Yes. Have you watched the YouTube video (https://www.youtube.com/watch?v=QxhqC-4yHiA)? 'NEW' is shown for persons who are not found in the face database. Also, learning of new faces can be disabled, thus making it possible to use fixed face databases.

Br, Marko

18.1.2017, 19:38, atv2016 kirjoitti:

Hi Marko, I hope you don't mind asking me some questions on your FaceReco-c project. So your software learns all faces from video.

  1. Does it differentiate correctly between all faces?
  2. Does it recognize them when they go out of screen and come back in?
  3. Does it save these results?
  4. Would it be easy to flag a unknown person (who was not in the video trained on earlier for example?

I haven't compiled it, just wondering. Thanks! Alef

- You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/malinna/FaceReco-c/issues/1, or mute the thread

https://github.com/notifications/unsubscribe-auth/ACs6fygG5lrTiD-zDlPEmyEsAfQIofGwks5rTk37gaJpZM4LnLQZ.

- You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/malinna/FaceReco-c/issues/1#issuecomment-273559413, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AQIi068QZ84KVIXHC8k1F3FMNQ6CaTlOks5rTlo5gaJpZM4LnLQZ.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/malinna/FaceReco-c/issues/1#issuecomment-273564421, or mute the thread https://github.com/notifications/unsubscribe-auth/ACs6fzQ1HTmdjQDxrKTT91CkQAazTp_fks5rTl6JgaJpZM4LnLQZ.

atv2016 commented 7 years ago

Thanks for your extended answer Marko, that is really appreciated.

I tried compiling it on MacOS, is that exact QT version required or would it work on later versions as well (got some errors there). And do i need to download the Chehra_Linker.h file ? Is it include only or do i need to link against it ?

You wouldn't have a cmake file for this would you? :-) Also - are you interested in developing this further for commercial use ?