MCPcopy Create free account
hub / github.com/Francis-Rings/FlashPortrait / FaceModel

Class FaceModel

wan/models/face_model.py:327–505  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

325
326
327class FaceModel(object):
328 def __init__(self, face_alignment_module, reset=False):
329 self.face_alignment_module = face_alignment_module
330 self.face_prob_th = 0.0001
331 self.min_face = 96
332 self.face_image_size = self.face_alignment_module.face_image_size
333 self.trackingFaces = []
334 self.reset = reset
335
336 def reset_track(self):
337 self.trackingFaces = []
338
339 def forward(self, src_image, reset=False, pre_rect=None):
340 if self.reset or reset:
341 self.trackingFaces = []
342
343 if len(self.trackingFaces) == 0:
344 if pre_rect is not None:
345 detected_faces = [pre_rect]
346 else:
347 detected_faces, _, _ = self.face_alignment_module.face_detector.detect(
348 src_image
349 )
350 for face_rect in detected_faces:
351 new_tracking_object = {
352 "face_rect": face_rect,
353 "rotate_angle": 0.0,
354 "pre_kpt_222": None,
355 "face_dis": np.sqrt(
356 np.square((face_rect[2] - face_rect[0]))
357 + np.square((face_rect[3] - face_rect[1]))
358 ),
359 "smoother_222": Smoother222(),
360 "prob": 0,
361 }
362 self.trackingFaces.append(new_tracking_object)
363 else:
364 detected_faces, _, _ = self.face_alignment_module.face_detector.detect(
365 src_image
366 )
367 for face_rect in detected_faces:
368 new_tracking_object = {
369 "face_rect": face_rect,
370 "rotate_angle": 0.0,
371 "pre_kpt_222": None,
372 "face_dis": np.sqrt(
373 np.square((face_rect[2] - face_rect[0]))
374 + np.square((face_rect[3] - face_rect[1]))
375 ),
376 "smoother_222": Smoother222(),
377 "prob": 0,
378 }
379 self.trackingFaces.append(new_tracking_object)
380
381 delete_idx_list = []
382 for face_idx, tracking_face in enumerate(self.trackingFaces):
383 if tracking_face["pre_kpt_222"] is not None:
384 result_dict = self.face_alignment_module.forward(

Callers 3

fast_infer.pyFile · 0.90
infer.pyFile · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected