From 1fae1282d16ca8409f3760d8eddaa0a659365e56 Mon Sep 17 00:00:00 2001 From: Henry Ruhs Date: Thu, 6 Aug 2026 11:18:02 +0200 Subject: [PATCH] rename face landmarker to face aligner (#1215) --- facefusion.ini | 6 ++-- facefusion/args_helper.py | 4 +-- facefusion/benchmarker.py | 2 +- facefusion/choices.py | 6 ++-- .../{face_landmarker.py => face_aligner.py} | 28 +++++++++---------- facefusion/face_creator.py | 8 +++--- facefusion/locales.py | 4 +-- .../processors/modules/age_modifier/core.py | 4 +-- .../processors/modules/deep_swapper/core.py | 4 +-- .../modules/expression_restorer/core.py | 4 +-- .../processors/modules/face_debugger/core.py | 4 +-- .../processors/modules/face_editor/core.py | 4 +-- .../processors/modules/face_enhancer/core.py | 4 +-- .../processors/modules/face_swapper/core.py | 4 +-- .../processors/modules/lip_syncer/core.py | 4 +-- facefusion/program.py | 28 +++++++++---------- facefusion/types.py | 12 ++++---- tests/test_face_creator.py | 10 +++---- tests/test_face_tracker.py | 10 +++---- 19 files changed, 75 insertions(+), 75 deletions(-) rename facefusion/{face_landmarker.py => face_aligner.py} (89%) diff --git a/facefusion.ini b/facefusion.ini index ae4021ec..6ecb1437 100644 --- a/facefusion.ini +++ b/facefusion.ini @@ -17,9 +17,9 @@ face_detector_margin = face_detector_angles = face_detector_score = -[face_landmarker] -face_landmarker_model = -face_landmarker_score = +[face_aligner] +face_aligner_model = +face_aligner_score = [face_selector] face_selector_mode = diff --git a/facefusion/args_helper.py b/facefusion/args_helper.py index 2c6c2f5a..d1803ae4 100644 --- a/facefusion/args_helper.py +++ b/facefusion/args_helper.py @@ -24,8 +24,8 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: apply_state_item('face_detector_margin', normalize_space(args.get('face_detector_margin'))) apply_state_item('face_detector_angles', args.get('face_detector_angles')) apply_state_item('face_detector_score', args.get('face_detector_score')) - apply_state_item('face_landmarker_model', args.get('face_landmarker_model')) - apply_state_item('face_landmarker_score', args.get('face_landmarker_score')) + apply_state_item('face_aligner_model', args.get('face_aligner_model')) + apply_state_item('face_aligner_score', args.get('face_aligner_score')) apply_state_item('face_selector_mode', args.get('face_selector_mode')) apply_state_item('face_selector_order', args.get('face_selector_order')) apply_state_item('face_selector_age_start', args.get('face_selector_age_start')) diff --git a/facefusion/benchmarker.py b/facefusion/benchmarker.py index 4ba16bd4..8b5bbe0f 100644 --- a/facefusion/benchmarker.py +++ b/facefusion/benchmarker.py @@ -36,7 +36,7 @@ def run() -> Iterator[List[BenchmarkCycleSet]]: benchmark_cycle_count = state_manager.get_item('benchmark_cycle_count') state_manager.init_item('source_paths', [ '.assets/examples/source.jpg', '.assets/examples/source.mp3' ]) - state_manager.init_item('face_landmarker_score', 0) + state_manager.init_item('face_aligner_score', 0) state_manager.init_item('temp_frame_format', 'bmp') state_manager.init_item('output_audio_volume', 0) state_manager.init_item('output_video_preset', 'ultrafast') diff --git a/facefusion/choices.py b/facefusion/choices.py index 4b9316e2..44fa598c 100755 --- a/facefusion/choices.py +++ b/facefusion/choices.py @@ -2,7 +2,7 @@ import logging from typing import List, Sequence, get_args from facefusion.common_helper import create_float_range, create_int_range -from facefusion.types import Angle, ApiSecurityStrategy, AudioEncoder, AudioFormat, AudioSet, BenchmarkMode, BenchmarkResolution, BenchmarkSet, DownloadProvider, DownloadProviderSet, DownloadScope, ExecutionProvider, ExecutionProviderSet, FaceDetectorModel, FaceDetectorSet, FaceLandmarkerModel, FaceMaskArea, FaceMaskAreaSet, FaceMaskRegion, FaceMaskRegionSet, FaceMaskType, FaceOccluderModel, FaceParserModel, FaceSelectorGender, FaceSelectorMode, FaceSelectorOrder, FaceSelectorRace, Gender, ImageEncoder, ImageFormat, ImageSet, JobStatus, LogLevel, LogLevelSet, Race, Score, TempFrameFormat, TempPixelFormat, VideoEncoder, VideoFormat, VideoMemoryStrategy, VideoPreset, VideoSet, VoiceExtractorModel, WorkflowMode, WorkflowStrategy +from facefusion.types import Angle, ApiSecurityStrategy, AudioEncoder, AudioFormat, AudioSet, BenchmarkMode, BenchmarkResolution, BenchmarkSet, DownloadProvider, DownloadProviderSet, DownloadScope, ExecutionProvider, ExecutionProviderSet, FaceAlignerModel, FaceDetectorModel, FaceDetectorSet, FaceMaskArea, FaceMaskAreaSet, FaceMaskRegion, FaceMaskRegionSet, FaceMaskType, FaceOccluderModel, FaceParserModel, FaceSelectorGender, FaceSelectorMode, FaceSelectorOrder, FaceSelectorRace, Gender, ImageEncoder, ImageFormat, ImageSet, JobStatus, LogLevel, LogLevelSet, Race, Score, TempFrameFormat, TempPixelFormat, VideoEncoder, VideoFormat, VideoMemoryStrategy, VideoPreset, VideoSet, VoiceExtractorModel, WorkflowMode, WorkflowStrategy face_detector_set : FaceDetectorSet =\ { @@ -13,7 +13,7 @@ face_detector_set : FaceDetectorSet =\ 'yunet': [ '640x640' ] } face_detector_models : List[FaceDetectorModel] = list(get_args(FaceDetectorModel)) -face_landmarker_models : List[FaceLandmarkerModel] = list(get_args(FaceLandmarkerModel)) +face_aligner_models : List[FaceAlignerModel] = list(get_args(FaceAlignerModel)) face_selector_modes : List[FaceSelectorMode] = list(get_args(FaceSelectorMode)) face_selector_orders : List[FaceSelectorOrder] = list(get_args(FaceSelectorOrder)) genders : List[Gender] = list(get_args(Gender)) @@ -158,7 +158,7 @@ execution_thread_count_range : Sequence[int] = create_int_range(1, 32, 1) face_detector_margin_range : Sequence[int] = create_int_range(0, 100, 1) face_detector_angles : Sequence[Angle] = create_int_range(0, 270, 90) face_detector_score_range : Sequence[Score] = create_float_range(0.0, 1.0, 0.05) -face_landmarker_score_range : Sequence[Score] = create_float_range(0.0, 1.0, 0.05) +face_aligner_score_range : Sequence[Score] = create_float_range(0.0, 1.0, 0.05) face_mask_blur_range : Sequence[float] = create_float_range(0.0, 1.0, 0.05) face_mask_padding_range : Sequence[int] = create_int_range(0, 100, 1) face_selector_age_range : Sequence[int] = create_int_range(0, 100, 1) diff --git a/facefusion/face_landmarker.py b/facefusion/face_aligner.py similarity index 89% rename from facefusion/face_landmarker.py rename to facefusion/face_aligner.py index 66d5d188..6334faf3 100644 --- a/facefusion/face_landmarker.py +++ b/facefusion/face_aligner.py @@ -97,14 +97,14 @@ def create_static_model_set(download_scope : DownloadScope) -> ModelSet: def get_inference_pool() -> InferencePool: - model_names = [ state_manager.get_item('face_landmarker_model'), 'fan_68_5' ] + model_names = [ state_manager.get_item('face_aligner_model'), 'fan_68_5' ] _, model_source_set = collect_model_downloads() return inference_manager.get_inference_pool(__name__, model_names, model_source_set) def clear_inference_pool() -> None: - model_names = [ state_manager.get_item('face_landmarker_model'), 'fan_68_5' ] + model_names = [ state_manager.get_item('face_aligner_model'), 'fan_68_5' ] inference_manager.clear_inference_pool(__name__, model_names) @@ -119,10 +119,10 @@ def collect_model_downloads() -> Tuple[DownloadSet, DownloadSet]: 'fan_68_5': model_set.get('fan_68_5').get('sources').get('fan_68_5') } - for face_landmarker_model in [ '2dfan4', 'peppa_wutz' ]: - if state_manager.get_item('face_landmarker_model') in [ 'many', face_landmarker_model ]: - model_hash_set[face_landmarker_model] = model_set.get(face_landmarker_model).get('hashes').get(face_landmarker_model) - model_source_set[face_landmarker_model] = model_set.get(face_landmarker_model).get('sources').get(face_landmarker_model) + for face_aligner_model in [ '2dfan4', 'peppa_wutz' ]: + if state_manager.get_item('face_aligner_model') in [ 'many', face_aligner_model ]: + model_hash_set[face_aligner_model] = model_set.get(face_aligner_model).get('hashes').get(face_aligner_model) + model_source_set[face_aligner_model] = model_set.get(face_aligner_model).get('sources').get(face_aligner_model) return model_hash_set, model_source_set @@ -139,10 +139,10 @@ def detect_face_landmark(vision_frame : VisionFrame, bounding_box : BoundingBox, face_landmark_score_2dfan4 = 0.0 face_landmark_score_peppa_wutz = 0.0 - if state_manager.get_item('face_landmarker_model') in [ 'many', '2dfan4' ]: + if state_manager.get_item('face_aligner_model') in [ 'many', '2dfan4' ]: face_landmark_2dfan4, face_landmark_score_2dfan4 = detect_with_2dfan4(vision_frame, bounding_box, face_angle) - if state_manager.get_item('face_landmarker_model') in [ 'many', 'peppa_wutz' ]: + if state_manager.get_item('face_aligner_model') in [ 'many', 'peppa_wutz' ]: face_landmark_peppa_wutz, face_landmark_score_peppa_wutz = detect_with_peppa_wutz(vision_frame, bounding_box, face_angle) if face_landmark_score_2dfan4 > face_landmark_score_peppa_wutz - 0.2: @@ -205,10 +205,10 @@ def estimate_face_landmark_68_5(face_landmark_5 : FaceLandmark5) -> FaceLandmark def forward_with_2dfan4(crop_vision_frame : VisionFrame) -> Tuple[Prediction, Prediction]: - face_landmarker = get_inference_pool().get('2dfan4') + face_aligner = get_inference_pool().get('2dfan4') with conditional_thread_semaphore(): - prediction = face_landmarker.run(None, + prediction = face_aligner.run(None, { 'input': [ crop_vision_frame ] }) @@ -217,10 +217,10 @@ def forward_with_2dfan4(crop_vision_frame : VisionFrame) -> Tuple[Prediction, Pr def forward_with_peppa_wutz(crop_vision_frame : VisionFrame) -> Prediction: - face_landmarker = get_inference_pool().get('peppa_wutz') + face_aligner = get_inference_pool().get('peppa_wutz') with conditional_thread_semaphore(): - prediction = face_landmarker.run(None, + prediction = face_aligner.run(None, { 'input': crop_vision_frame })[0] @@ -229,10 +229,10 @@ def forward_with_peppa_wutz(crop_vision_frame : VisionFrame) -> Prediction: def forward_fan_68_5(face_landmark_5 : FaceLandmark5) -> FaceLandmark68: - face_landmarker = get_inference_pool().get('fan_68_5') + face_aligner = get_inference_pool().get('fan_68_5') with conditional_thread_semaphore(): - face_landmark_68_5 = face_landmarker.run(None, + face_landmark_68_5 = face_aligner.run(None, { 'input': [ face_landmark_5 ] })[0][0] diff --git a/facefusion/face_creator.py b/facefusion/face_creator.py index e347bf9f..b4504c98 100644 --- a/facefusion/face_creator.py +++ b/facefusion/face_creator.py @@ -4,10 +4,10 @@ import numpy from facefusion import face_store, state_manager from facefusion.common_helper import get_first, get_middle +from facefusion.face_aligner import detect_face_landmark, estimate_face_landmark_68_5 from facefusion.face_classifier import classify_face from facefusion.face_detector import detect_faces, detect_faces_by_angle from facefusion.face_helper import apply_nms, average_points, convert_to_face_landmark_5, estimate_face_angle, get_nms_threshold -from facefusion.face_landmarker import detect_face_landmark, estimate_face_landmark_68_5 from facefusion.face_recognizer import calculate_face_embedding from facefusion.types import BoundingBox, Face, FaceLandmark5, FaceLandmarkSet, FaceScoreSet, Score, VisionFrame from facefusion.vision import is_vision_frame @@ -28,9 +28,9 @@ def create_faces(vision_frame : VisionFrame, bounding_boxes : List[BoundingBox], face_landmark_score_68 = 0.0 face_angle = estimate_face_angle(face_landmark_68_5) - if state_manager.get_item('face_landmarker_score') > 0: + if state_manager.get_item('face_aligner_score') > 0: face_landmark_68, face_landmark_score_68 = detect_face_landmark(vision_frame, bounding_box, face_angle) - if face_landmark_score_68 > state_manager.get_item('face_landmarker_score'): + if face_landmark_score_68 > state_manager.get_item('face_aligner_score'): face_landmark_5_68 = convert_to_face_landmark_5(face_landmark_68) face_landmark_set : FaceLandmarkSet =\ @@ -43,7 +43,7 @@ def create_faces(vision_frame : VisionFrame, bounding_boxes : List[BoundingBox], face_score_set : FaceScoreSet =\ { 'detector': face_score, - 'landmarker': face_landmark_score_68 + 'aligner': face_landmark_score_68 } face_embedding, face_embedding_norm = calculate_face_embedding(vision_frame, face_landmark_set.get('5/68')) gender, age, race = classify_face(vision_frame, face_landmark_set.get('5/68')) diff --git a/facefusion/locales.py b/facefusion/locales.py index 391de727..630470fe 100644 --- a/facefusion/locales.py +++ b/facefusion/locales.py @@ -112,8 +112,8 @@ LOCALES : Locales =\ 'face_detector_margin': 'apply top, right, bottom and left margin to the frame', 'face_detector_angles': 'specify the angles to rotate the frame before detecting faces', 'face_detector_score': 'filter the detected faces based on the confidence score', - 'face_landmarker_model': 'choose the model responsible for detecting the face landmarks', - 'face_landmarker_score': 'filter the detected face landmarks based on the confidence score', + 'face_aligner_model': 'choose the model responsible for aligning the faces', + 'face_aligner_score': 'filter the detected face alignments based on the confidence score', 'face_selector_mode': 'use reference based tracking or simple matching', 'face_selector_order': 'specify the order of the detected faces', 'face_selector_age_start': 'filter the detected faces based on the starting age', diff --git a/facefusion/processors/modules/age_modifier/core.py b/facefusion/processors/modules/age_modifier/core.py index 85e90b1b..c3e0eb0b 100755 --- a/facefusion/processors/modules/age_modifier/core.py +++ b/facefusion/processors/modules/age_modifier/core.py @@ -9,7 +9,7 @@ import numpy import facefusion.capability_store import facefusion.choices import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import create_int_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url from facefusion.face_creator import scale_face @@ -152,7 +152,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/deep_swapper/core.py b/facefusion/processors/modules/deep_swapper/core.py index 291826dc..cd60db51 100755 --- a/facefusion/processors/modules/deep_swapper/core.py +++ b/facefusion/processors/modules/deep_swapper/core.py @@ -9,7 +9,7 @@ from cv2.typing import Size import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import create_int_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url_by_provider from facefusion.face_creator import scale_face @@ -304,7 +304,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/expression_restorer/core.py b/facefusion/processors/modules/expression_restorer/core.py index 56785f95..fab68deb 100755 --- a/facefusion/processors/modules/expression_restorer/core.py +++ b/facefusion/processors/modules/expression_restorer/core.py @@ -8,7 +8,7 @@ import numpy import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import create_int_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url from facefusion.face_creator import scale_face @@ -136,7 +136,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/face_debugger/core.py b/facefusion/processors/modules/face_debugger/core.py index 62f8b3c5..12396db0 100755 --- a/facefusion/processors/modules/face_debugger/core.py +++ b/facefusion/processors/modules/face_debugger/core.py @@ -7,7 +7,7 @@ import numpy import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, logger, state_manager, translator, video_manager from facefusion.common_helper import get_middle from facefusion.face_creator import scale_face from facefusion.face_helper import warp_face_by_face_landmark_5 @@ -53,7 +53,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/face_editor/core.py b/facefusion/processors/modules/face_editor/core.py index 56899bd0..b35bccc2 100755 --- a/facefusion/processors/modules/face_editor/core.py +++ b/facefusion/processors/modules/face_editor/core.py @@ -8,7 +8,7 @@ import numpy import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import create_float_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url from facefusion.face_creator import scale_face @@ -274,7 +274,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/face_enhancer/core.py b/facefusion/processors/modules/face_enhancer/core.py index e578c350..3a476104 100755 --- a/facefusion/processors/modules/face_enhancer/core.py +++ b/facefusion/processors/modules/face_enhancer/core.py @@ -7,7 +7,7 @@ import numpy import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import create_float_metavar, create_int_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url from facefusion.face_creator import scale_face @@ -330,7 +330,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/face_swapper/core.py b/facefusion/processors/modules/face_swapper/core.py index 1b19183e..d24191b4 100755 --- a/facefusion/processors/modules/face_swapper/core.py +++ b/facefusion/processors/modules/face_swapper/core.py @@ -9,7 +9,7 @@ import numpy import facefusion.capability_store import facefusion.choices import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager from facefusion.common_helper import get_first, get_middle, is_macos from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url from facefusion.execution import has_execution_provider @@ -567,7 +567,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer ] def pre_check() -> bool: diff --git a/facefusion/processors/modules/lip_syncer/core.py b/facefusion/processors/modules/lip_syncer/core.py index 53d268e4..05b84775 100755 --- a/facefusion/processors/modules/lip_syncer/core.py +++ b/facefusion/processors/modules/lip_syncer/core.py @@ -8,7 +8,7 @@ import numpy import facefusion.capability_store import facefusion.jobs.job_manager -from facefusion import config, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager, voice_extractor +from facefusion import config, content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, inference_manager, logger, state_manager, translator, video_manager, voice_extractor from facefusion.audio import read_static_voice from facefusion.common_helper import create_float_metavar, get_middle from facefusion.download import conditional_download_hashes, conditional_download_sources, resolve_download_url @@ -161,7 +161,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: def get_common_modules() -> List[ModuleType]: - return [ content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, voice_extractor ] + return [ content_analyser, face_aligner, face_classifier, face_detector, face_masker, face_recognizer, voice_extractor ] def pre_check() -> bool: diff --git a/facefusion/program.py b/facefusion/program.py index 2ebd67e2..c8055da9 100755 --- a/facefusion/program.py +++ b/facefusion/program.py @@ -287,30 +287,30 @@ def create_face_detector_program() -> ArgumentParser: return program -def create_face_landmarker_program() -> ArgumentParser: +def create_face_aligner_program() -> ArgumentParser: program = ArgumentParser(add_help = False) - group_face_landmarker = program.add_argument_group('face landmarker') + group_face_aligner = program.add_argument_group('face aligner') capability_store.register_capability_set( [ - group_face_landmarker.add_argument( - '--face-landmarker-model', - help = translator.get('help.face_landmarker_model'), - default = config.get_str_value('face_landmarker', 'face_landmarker_model', '2dfan4'), - choices = facefusion.choices.face_landmarker_models + group_face_aligner.add_argument( + '--face-aligner-model', + help = translator.get('help.face_aligner_model'), + default = config.get_str_value('face_aligner', 'face_aligner_model', '2dfan4'), + choices = facefusion.choices.face_aligner_models ) ], scopes = [ 'api', 'cli' ] ) capability_store.register_capability_set( [ - group_face_landmarker.add_argument( - '--face-landmarker-score', - help = translator.get('help.face_landmarker_score'), + group_face_aligner.add_argument( + '--face-aligner-score', + help = translator.get('help.face_aligner_score'), type = float, - default = config.get_float_value('face_landmarker', 'face_landmarker_score', '0.5'), - choices = facefusion.choices.face_landmarker_score_range, - metavar = create_float_metavar(facefusion.choices.face_landmarker_score_range) + default = config.get_float_value('face_aligner', 'face_aligner_score', '0.5'), + choices = facefusion.choices.face_aligner_score_range, + metavar = create_float_metavar(facefusion.choices.face_aligner_score_range) ) ], scopes = [ 'api', 'cli' ] @@ -1047,7 +1047,7 @@ def collect_step_program() -> ArgumentParser: parents = [ create_face_detector_program(), - create_face_landmarker_program(), + create_face_aligner_program(), create_face_selector_program(), create_face_tracker_program(), create_face_masker_program(), diff --git a/facefusion/types.py b/facefusion/types.py index a47ded9c..33d68170 100755 --- a/facefusion/types.py +++ b/facefusion/types.py @@ -30,7 +30,7 @@ FaceLandmarkSet = TypedDict('FaceLandmarkSet', FaceScoreSet = TypedDict('FaceScoreSet', { 'detector' : Score, - 'landmarker' : Score + 'aligner' : Score }) Embedding : TypeAlias = NDArray[numpy.float64] @@ -177,7 +177,7 @@ TableHeader : TypeAlias = str TableContent : TypeAlias = Any FaceDetectorModel = Literal['many', 'retinaface', 'scrfd', 'yolo_face', 'yunet'] -FaceLandmarkerModel = Literal['many', '2dfan4', 'peppa_wutz'] +FaceAlignerModel = Literal['many', '2dfan4', 'peppa_wutz'] FaceDetectorSet : TypeAlias = Dict[FaceDetectorModel, List[str]] FaceSelectorMode = Literal['many', 'one', 'reference'] FaceSelectorOrder = Literal['left-right', 'right-left', 'top-bottom', 'bottom-top', 'small-large', 'large-small', 'best-worst', 'worst-best'] @@ -523,8 +523,8 @@ StateKey = Literal\ 'face_detector_margin', 'face_detector_angles', 'face_detector_score', - 'face_landmarker_model', - 'face_landmarker_score', + 'face_aligner_model', + 'face_aligner_score', 'face_selector_mode', 'face_selector_order', 'face_selector_gender', @@ -599,8 +599,8 @@ State = TypedDict('State', 'face_detector_margin' : Margin, 'face_detector_angles' : List[Angle], 'face_detector_score' : Score, - 'face_landmarker_model' : FaceLandmarkerModel, - 'face_landmarker_score' : Score, + 'face_aligner_model' : FaceAlignerModel, + 'face_aligner_score' : Score, 'face_selector_mode' : FaceSelectorMode, 'face_selector_order' : FaceSelectorOrder, 'face_selector_race' : FaceSelectorRace, diff --git a/tests/test_face_creator.py b/tests/test_face_creator.py index 40d66109..d6e59977 100644 --- a/tests/test_face_creator.py +++ b/tests/test_face_creator.py @@ -2,7 +2,7 @@ import numpy import pytest -from facefusion import face_classifier, face_detector, face_landmarker, face_recognizer, ffmpeg, ffmpeg_builder, process_manager, state_manager +from facefusion import face_aligner, face_classifier, face_detector, face_recognizer, ffmpeg, ffmpeg_builder, process_manager, state_manager from facefusion.download import conditional_download from facefusion.face_creator import average_face_geometry, get_many_faces, get_one_face, refill_faces from facefusion.face_store import clear_faces @@ -38,12 +38,12 @@ def before_all() -> None: state_manager.init_item('face_detector_size', '640x640') state_manager.init_item('face_detector_margin', (0, 0, 0, 0)) state_manager.init_item('face_detector_score', 0.5) - state_manager.init_item('face_landmarker_model', 'many') - state_manager.init_item('face_landmarker_score', 0.5) + state_manager.init_item('face_aligner_model', 'many') + state_manager.init_item('face_aligner_score', 0.5) face_classifier.pre_check() face_detector.pre_check() - face_landmarker.pre_check() + face_aligner.pre_check() face_recognizer.pre_check() @@ -51,7 +51,7 @@ def before_all() -> None: def before_each() -> None: face_classifier.clear_inference_pool() face_detector.clear_inference_pool() - face_landmarker.clear_inference_pool() + face_aligner.clear_inference_pool() face_recognizer.clear_inference_pool() clear_faces() diff --git a/tests/test_face_tracker.py b/tests/test_face_tracker.py index 134d2874..f9465229 100644 --- a/tests/test_face_tracker.py +++ b/tests/test_face_tracker.py @@ -1,7 +1,7 @@ import numpy import pytest -from facefusion import face_classifier, face_detector, face_landmarker, face_recognizer, state_manager +from facefusion import face_aligner, face_classifier, face_detector, face_recognizer, state_manager from facefusion.common_helper import get_first, get_last from facefusion.download import conditional_download from facefusion.face_creator import get_many_faces, get_one_face @@ -26,13 +26,13 @@ def before_all() -> None: state_manager.init_item('face_detector_size', '640x640') state_manager.init_item('face_detector_margin', (0, 0, 0, 0)) state_manager.init_item('face_detector_score', 0.5) - state_manager.init_item('face_landmarker_model', 'many') - state_manager.init_item('face_landmarker_score', 0.5) + state_manager.init_item('face_aligner_model', 'many') + state_manager.init_item('face_aligner_score', 0.5) state_manager.init_item('face_tracker_score', 0.3) face_classifier.pre_check() face_detector.pre_check() - face_landmarker.pre_check() + face_aligner.pre_check() face_recognizer.pre_check() @@ -40,7 +40,7 @@ def before_all() -> None: def before_each() -> None: face_classifier.clear_inference_pool() face_detector.clear_inference_pool() - face_landmarker.clear_inference_pool() + face_aligner.clear_inference_pool() face_recognizer.clear_inference_pool() clear_faces()