mirror of
https://github.com/facefusion/facefusion.git
synced 2026-08-07 09:38:39 +02:00
rename face landmarker to face aligner (#1215)
This commit is contained in:
+3
-3
@@ -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 =
|
||||
|
||||
@@ -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'))
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
@@ -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'))
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
+14
-14
@@ -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(),
|
||||
|
||||
+6
-6
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user