Split out first_face vs multi-face calls
This commit is contained in:
20
refacer.py
20
refacer.py
@@ -149,17 +149,14 @@ class Refacer:
|
||||
ret.append(face)
|
||||
return ret
|
||||
|
||||
def process_faces(self,frame):
|
||||
max_num=0
|
||||
if self.first_face:
|
||||
max_num=1
|
||||
def process_first_face(self,frame):
|
||||
faces = self.__get_faces(frame,max_num=1)
|
||||
if len(faces) != 0:
|
||||
frame = self.face_swapper.get(frame, faces[0], self.replacement_faces[0][1], paste_back=True)
|
||||
return frame
|
||||
|
||||
faces = self.__get_faces(frame,max_num=max_num)
|
||||
if self.first_face:
|
||||
for face in faces:
|
||||
frame = self.face_swapper.get(frame, face, self.replacement_faces[0][1], paste_back=True)
|
||||
break
|
||||
else:
|
||||
def process_faces(self,frame):
|
||||
faces = self.__get_faces(frame,max_num=0)
|
||||
for rep_face in self.replacement_faces:
|
||||
for i in range(len(faces) - 1, -1, -1):
|
||||
sim = self.rec_app.compute_sim(rep_face[0], faces[i].embedding)
|
||||
@@ -178,6 +175,9 @@ class Refacer:
|
||||
|
||||
def reface_group(self, faces, frames, output):
|
||||
with ThreadPoolExecutor(max_workers = self.use_num_cpus) as executor:
|
||||
if self.first_face:
|
||||
results = list(tqdm(executor.map(self.process_first_face, frames), total=len(frames),desc="Processing frames"))
|
||||
else:
|
||||
results = list(tqdm(executor.map(self.process_faces, frames), total=len(frames),desc="Processing frames"))
|
||||
for result in results:
|
||||
output.write(result)
|
||||
|
||||
Reference in New Issue
Block a user