FaceSwap
FaceSwap copied to clipboard
Multiple faces in source or target video
My target video (or source for that matter) has 2 persons inside. I have checked that running the scripts would swap on only 1 person's face and in this case, it was the wrong person. May I ask what is the best way to filter out unwanted faces and only swap the chosen person's face?
The app should work fine for multiple faces in the video where the face are being swapped. If it does not, it may mean that one face is not detected. Can you take a look at the length of shapes2D in line 49 of zad2.py? If the result is 1 then one face was not detected. Perhaps it's not very well visible or far from frontal in the video?
I think zad2.py does capture both faces. However, I would like to choose only 1 face to be swapped. May I ask how I can approach this task?
If you want something simple, then you can choose the face you want using some conditions on the locations of the face keypoints. You can, for example, do something like this in zad2.py line 49:
face_centroids = np.mean(shapes2D, axis=2)
leftmost_face_idx = np.argmin(shapes2D[:, 0])
shapes2D = [shapes2D[leftmost_face_idx]]
This would only select the face that is furthest on the left. Keep in mind I did not test this code so there might be some small error in it.
Thanks for your help. I believe faceswap.py in faceforensics repo does something similar for selecting a face if multiple were detected.