FaceSwap icon indicating copy to clipboard operation
FaceSwap copied to clipboard

Multiple faces in source or target video

Open BenjaminChua opened this issue 5 years ago • 4 comments

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?

BenjaminChua avatar Nov 03 '20 03:11 BenjaminChua

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?

MarekKowalski avatar Nov 06 '20 10:11 MarekKowalski

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?

BenjaminChua avatar Nov 07 '20 00:11 BenjaminChua

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.

MarekKowalski avatar Nov 10 '20 09:11 MarekKowalski

Thanks for your help. I believe faceswap.py in faceforensics repo does something similar for selecting a face if multiple were detected.

BenjaminChua avatar Nov 11 '20 07:11 BenjaminChua