From 5873b49b5524c13eb499d2cbbb86f04c86749f53 Mon Sep 17 00:00:00 2001 From: Kenneth Estanislao Date: Fri, 4 Oct 2024 15:49:07 +0800 Subject: [PATCH] Revert "Merge pull request #566 from pereiraroland26/main" This reverts commit b5e5e52ddde357642f60004e56e1dc120c320c1a. --- modules/processors/frame/face_swapper.py | 27 +++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/modules/processors/frame/face_swapper.py b/modules/processors/frame/face_swapper.py index caf493e..6fd0760 100644 --- a/modules/processors/frame/face_swapper.py +++ b/modules/processors/frame/face_swapper.py @@ -101,19 +101,30 @@ def process_frame_v2(temp_frame: Frame, temp_frame_path: str = "") -> Frame: for target_face in frame['faces']: temp_frame = swap_face(source_face, target_face, temp_frame) else: - many_faces = get_many_faces(temp_frame) + detected_faces = get_many_faces(temp_frame) if modules.globals.many_faces: - source_face = default_source_face() - if many_faces: - for target_face in many_faces: + if detected_faces: + source_face = default_source_face() + for target_face in detected_faces: temp_frame = swap_face(source_face, target_face, temp_frame) elif not modules.globals.many_faces: - if many_faces: - for target_face in many_faces: - closest_centroid_index, _ = find_closest_centroid(modules.globals.simple_map['target_embeddings'], target_face.normed_embedding) + if detected_faces: + if len(detected_faces) <= len(modules.globals.simple_map['target_embeddings']): + for detected_face in detected_faces: + closest_centroid_index, _ = find_closest_centroid(modules.globals.simple_map['target_embeddings'], detected_face.normed_embedding) - temp_frame = swap_face(modules.globals.simple_map['source_faces'][closest_centroid_index], target_face, temp_frame) + temp_frame = swap_face(modules.globals.simple_map['source_faces'][closest_centroid_index], detected_face, temp_frame) + else: + detected_faces_centroids = [] + for face in detected_faces: + detected_faces_centroids.append(face.normed_embedding) + i = 0 + for target_embedding in modules.globals.simple_map['target_embeddings']: + closest_centroid_index, _ = find_closest_centroid(detected_faces_centroids, target_embedding) + + temp_frame = swap_face(modules.globals.simple_map['source_faces'][i], detected_faces[closest_centroid_index], temp_frame) + i += 1 return temp_frame