<p>I would recommend you to try OpenFace, a popular open source Face recognition system built on top of dlib. It uses techniques such as Haar classifier and CNN to classify faces, The neural network is trained to create Face embeddings for each face, then given a test image it can calculate distance (error) to match with closest of known embeddings. </p>

<p>OpenFace worked really well for me, it serves it's purpose, however you have to make sure face embeddings are generated for faces which are clearly visible. 
You can go for many wrappers of OpenFace available for Python. I recently developed a project using it, you can just clone it. Here is the link: 
<a href="https://github.com/Narasimha1997/FaceRecognition-tool" rel="nofollow noreferrer">Face Recognition</a>
I have uploaded few screenshots while testing, it can clearly distinguish multiple faces in the same image. </p>

<p>There is another way of achieving this , (Experimental). Neural networks can identify multiple objects in same image (Video Frame), there are techniques and standard models like Yolo and SSD, which are designed for single-shot-multiple object detection. <a href="https://arxiv.org/abs/1506.02640" rel="nofollow noreferrer">Yolo v2 Paper</a>. But identifying faces is much more complex than identifying objects, because most of the time faces look alike, but it's not the same case with objects. You can research and develop your own Yolo based neural network for single shot multiple face detection. But I think Dlib and OpenFace can provide a better solution. </p>
Face recognition in python (opencv) how to properly train a model?
<p>I'm new to opencv and in general neural networks, but I have a small background on the topic.</p>

<p>I'm trying to build a system that can detect a certain individual's face in a photo. </p>

<p>Actually I'm training a model using opencv and haar with about 20 photos, I'm using photos of Elvis Presley as an example. So first of all i run an algorithm that detects and extracts the face of Elvis from all the photos and stores the faces in a folder. Then I train the model with these faces. After that I send some images of different individuals to the program and using haar and the model I try to detect Elvis. </p>

<p>The thing is that I have a huge amount of false positives. </p>

<p>Of course, when I train the model with faces of Elvis -> labeled 0 and faces of let's say Frank Sinatra (just after doing the same process of face extraction with Frank) I get a good classification, the model then works fine for classifying frank between Elvis and Frank.</p>

<p>But if I'm only looking for Elvis, training the network with only Elvis photos, the model just doesn't work...</p>

<p>How could be an approach of identifying one person's face in photos between many other different individuals? Is the only solution training my network with a huge amount of Elvis faces?</p>

<p>I'm using python with opencv, numpy</p>

<p>Can you point me to some example for better studying?</p>

<p>Thanks!</p>