Add more deepfacelive models (#817)
* Add more deepfacelive models * Add more deepfacelive models
This commit is contained in:
parent
ba71e96302
commit
db64c529d0
@ -16,7 +16,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50000000, 0.61154464 ],
|
||||
[ 0.37913393, 0.77687500 ],
|
||||
[ 0.62086607, 0.77687500 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'arcface_112_v2': numpy.array(
|
||||
[
|
||||
[ 0.34191607, 0.46157411 ],
|
||||
@ -24,7 +24,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50022500, 0.64050536 ],
|
||||
[ 0.37097589, 0.82469196 ],
|
||||
[ 0.63151696, 0.82325089 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'arcface_128_v2': numpy.array(
|
||||
[
|
||||
[ 0.36167656, 0.40387734 ],
|
||||
@ -32,7 +32,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50019687, 0.56044219 ],
|
||||
[ 0.38710391, 0.72160547 ],
|
||||
[ 0.61507734, 0.72034453 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'dfl_head': numpy.array(
|
||||
[
|
||||
[ 0.39062554, 0.59114583 ],
|
||||
@ -40,7 +40,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.49414062, 0.70898442 ],
|
||||
[ 0.41796875, 0.82031255 ],
|
||||
[ 0.58007813, 0.82031255 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'dfl_whole_face': numpy.array(
|
||||
[
|
||||
[ 0.36816406, 0.40429688 ],
|
||||
@ -48,7 +48,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.49023438, 0.54296875 ],
|
||||
[ 0.39843755, 0.68554699 ],
|
||||
[ 0.59375543, 0.68554699 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'ffhq_512': numpy.array(
|
||||
[
|
||||
[ 0.37691676, 0.46864664 ],
|
||||
@ -56,7 +56,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50123859, 0.61331904 ],
|
||||
[ 0.39308822, 0.72541100 ],
|
||||
[ 0.61150205, 0.72490465 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'mtcnn_512': numpy.array(
|
||||
[
|
||||
[ 0.36562865, 0.46733799 ],
|
||||
@ -64,7 +64,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50019127, 0.61942959 ],
|
||||
[ 0.39032951, 0.77598822 ],
|
||||
[ 0.61178945, 0.77476328 ]
|
||||
]).astype(numpy.float32),
|
||||
]),
|
||||
'styleganex_384': numpy.array(
|
||||
[
|
||||
[ 0.42353745, 0.52289879 ],
|
||||
@ -72,7 +72,7 @@ WARP_TEMPLATES : WarpTemplateSet =\
|
||||
[ 0.50123859, 0.61331904 ],
|
||||
[ 0.43364461, 0.68337652 ],
|
||||
[ 0.57015325, 0.68306005 ]
|
||||
]).astype(numpy.float32)
|
||||
])
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,7 +4,41 @@ from facefusion.common_helper import create_float_range, create_int_range
|
||||
from facefusion.processors.typing import AgeModifierModel, DeepSwapperModel, ExpressionRestorerModel, FaceDebuggerItem, FaceEditorModel, FaceEnhancerModel, FaceSwapperSet, FrameColorizerModel, FrameEnhancerModel, LipSyncerModel
|
||||
|
||||
age_modifier_models : List[AgeModifierModel] = [ 'styleganex_age' ]
|
||||
deep_swapper_models : List[DeepSwapperModel] = [ 'iperov/emma_watson_224', 'iperov/jackie_chan_224', 'iperov/keanu_reeves_320', 'iperov/sylvester_stallone_224', 'iperov/taylor_swift_224' ]
|
||||
deep_swapper_models : List[DeepSwapperModel] =\
|
||||
[
|
||||
'iperov/emma_watson_224',
|
||||
'iperov/keanu_reeves_320',
|
||||
'iperov/jackie_chan_224',
|
||||
'iperov/alexandra_daddario_224',
|
||||
'iperov/alexei_navalny_224',
|
||||
'iperov/amber_heard_224',
|
||||
'iperov/dilraba_dilmurat_224',
|
||||
'iperov/elon_musk_224',
|
||||
'iperov/emilia_clarke_224',
|
||||
'iperov/emma_watson_224',
|
||||
'iperov/erin_moriarty_224',
|
||||
'iperov/jackie_chan_224',
|
||||
'iperov/james_carrey_224',
|
||||
'iperov/jason_statham_320',
|
||||
'iperov/jessica_alba_224',
|
||||
'iperov/keanu_reeves_320',
|
||||
'iperov/lucy_liu_224',
|
||||
'iperov/margot_robbie_224',
|
||||
'iperov/meghan_markle_224',
|
||||
'iperov/natalie_dormer_224',
|
||||
'iperov/natalie_portman_224',
|
||||
'iperov/nicolas_coppola__224',
|
||||
'iperov/robert_downey_224',
|
||||
'iperov/rowan_atkinson_224',
|
||||
'iperov/ryan_reynolds_224',
|
||||
'iperov/scarlett_johansson_224',
|
||||
'iperov/sylvester_stallone_224',
|
||||
'iperov/taylor_swift_224',
|
||||
'iperov/thomas_cruise_224',
|
||||
'iperov/thomas_holland_224',
|
||||
'iperov/vin_diesel_224',
|
||||
'iperov/vladimir_putin_224'
|
||||
]
|
||||
expression_restorer_models : List[ExpressionRestorerModel] = [ 'live_portrait' ]
|
||||
face_debugger_items : List[FaceDebuggerItem] = [ 'bounding-box', 'face-landmark-5', 'face-landmark-5/68', 'face-landmark-68', 'face-landmark-68/5', 'face-mask', 'face-detector-score', 'face-landmarker-score', 'age', 'gender', 'race' ]
|
||||
face_editor_models : List[FaceEditorModel] = [ 'live_portrait' ]
|
||||
|
@ -25,114 +25,69 @@ from facefusion.vision import conditional_match_frame_color, read_image, read_st
|
||||
|
||||
|
||||
def create_model_set() -> ModelSet:
|
||||
return\
|
||||
{
|
||||
'iperov/emma_watson_224':
|
||||
model_config =\
|
||||
[
|
||||
('iperov', 'emma_watson_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'keanu_reeves_320', 'dfl_whole_face', (320, 320)),
|
||||
('iperov', 'jackie_chan_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'alexandra_daddario_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'alexei_navalny_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'amber_heard_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'dilraba_dilmurat_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'elon_musk_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'emilia_clarke_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'emma_watson_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'erin_moriarty_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'jackie_chan_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'james_carrey_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'jason_statham_320', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'jessica_alba_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'keanu_reeves_320', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'lucy_liu_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'margot_robbie_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'meghan_markle_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'natalie_dormer_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'natalie_portman_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'nicolas_coppola__224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'robert_downey_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'rowan_atkinson_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'ryan_reynolds_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'scarlett_johansson_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'sylvester_stallone_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'taylor_swift_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'thomas_cruise_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'thomas_holland_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'vin_diesel_224', 'dfl_whole_face', (224, 224)),
|
||||
('iperov', 'vladimir_putin_224', 'dfl_whole_face', (224, 224))
|
||||
]
|
||||
model_set : ModelSet = {}
|
||||
|
||||
for model_creator, model_name, model_template, model_size in model_config:
|
||||
model_id = '/'.join([ model_creator, model_name ])
|
||||
|
||||
model_set[model_id] =\
|
||||
{
|
||||
'hashes':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'emma_watson_224.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/emma_watson_224.hash')
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-' + model_creator, model_name + '.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/' + model_creator + '/' + model_name + '.hash')
|
||||
}
|
||||
},
|
||||
'sources':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'emma_watson_224.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/emma_watson_224.dfm')
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-' + model_creator, model_name + '.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/' + model_creator + '/' + model_name + '.dfm')
|
||||
}
|
||||
},
|
||||
'template': 'dfl_whole_face',
|
||||
'size': (224, 224),
|
||||
},
|
||||
'iperov/jackie_chan_224':
|
||||
{
|
||||
'hashes':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'jackie_chan_224.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/jackie_chan_224.hash')
|
||||
}
|
||||
},
|
||||
'sources':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'jackie_chan_224.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/jackie_chan_224.dfm')
|
||||
}
|
||||
},
|
||||
'template': 'dfl_whole_face',
|
||||
'size': (224, 224),
|
||||
},
|
||||
'iperov/keanu_reeves_320':
|
||||
{
|
||||
'hashes':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'keanu_reeves_320.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/keanu_reeves_320.hash')
|
||||
}
|
||||
},
|
||||
'sources':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'keanu_reeves_320.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/keanu_reeves_320.dfm')
|
||||
}
|
||||
},
|
||||
'template': 'dfl_whole_face',
|
||||
'size': (320, 320),
|
||||
},
|
||||
'iperov/sylvester_stallone_224':
|
||||
{
|
||||
'hashes':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'sylvester_stallone_224.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/sylvester_stallone_224.hash')
|
||||
}
|
||||
},
|
||||
'sources':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'sylvester_stallone_224.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/sylvester_stallone_224.dfm')
|
||||
}
|
||||
},
|
||||
'template': 'dfl_whole_face',
|
||||
'size': (224, 224),
|
||||
},
|
||||
'iperov/taylor_swift_224':
|
||||
{
|
||||
'hashes':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'taylor_swift_224.hash'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/taylor_swift_224.hash')
|
||||
}
|
||||
},
|
||||
'sources':
|
||||
{
|
||||
'deep_swapper':
|
||||
{
|
||||
'url': resolve_download_url_by_provider('huggingface', 'deepfacelive-models-iperov', 'taylor_swift_224.dfm'),
|
||||
'path': resolve_relative_path('../.assets/models/iperov/taylor_swift_224.dfm')
|
||||
}
|
||||
},
|
||||
'template': 'dfl_whole_face',
|
||||
'size': (224, 224),
|
||||
'template': model_template,
|
||||
'size': model_size
|
||||
}
|
||||
}
|
||||
|
||||
return model_set
|
||||
|
||||
|
||||
def get_inference_pool() -> InferencePool:
|
||||
@ -154,7 +109,7 @@ def get_model_options() -> ModelOptions:
|
||||
def register_args(program : ArgumentParser) -> None:
|
||||
group_processors = find_argument_group(program, 'processors')
|
||||
if group_processors:
|
||||
group_processors.add_argument('--deep-swapper-model', help = wording.get('help.deep_swapper_model'), default = config.get_str_value('processors.deep_swapper_model', 'iperov/jackie_chan_224'), choices = processors_choices.deep_swapper_models)
|
||||
group_processors.add_argument('--deep-swapper-model', help = wording.get('help.deep_swapper_model'), default = config.get_str_value('processors.deep_swapper_model', 'iperov/elon_musk_224'), choices = processors_choices.deep_swapper_models)
|
||||
group_processors.add_argument('--deep-swapper-morph', help = wording.get('help.deep_swapper_morph'), type = int, default = config.get_int_value('processors.deep_swapper_morph', '80'), choices = processors_choices.deep_swapper_morph_range, metavar = create_int_metavar(processors_choices.deep_swapper_morph_range))
|
||||
facefusion.jobs.job_store.register_step_keys([ 'deep_swapper_model', 'deep_swapper_morph' ])
|
||||
|
||||
|
@ -5,7 +5,41 @@ from numpy._typing import NDArray
|
||||
from facefusion.typing import AppContext, AudioFrame, Face, FaceSet, VisionFrame
|
||||
|
||||
AgeModifierModel = Literal['styleganex_age']
|
||||
DeepSwapperModel = Literal['iperov/emma_watson_224', 'iperov/jackie_chan_224', 'iperov/keanu_reeves_320', 'iperov/sylvester_stallone_224', 'iperov/taylor_swift_224']
|
||||
DeepSwapperModel = Literal\
|
||||
[
|
||||
'iperov/emma_watson_224',
|
||||
'iperov/keanu_reeves_320',
|
||||
'iperov/jackie_chan_224',
|
||||
'iperov/alexandra_daddario_224',
|
||||
'iperov/alexei_navalny_224',
|
||||
'iperov/amber_heard_224',
|
||||
'iperov/dilraba_dilmurat_224',
|
||||
'iperov/elon_musk_224',
|
||||
'iperov/emilia_clarke_224',
|
||||
'iperov/emma_watson_224',
|
||||
'iperov/erin_moriarty_224',
|
||||
'iperov/jackie_chan_224',
|
||||
'iperov/james_carrey_224',
|
||||
'iperov/jason_statham_320',
|
||||
'iperov/jessica_alba_224',
|
||||
'iperov/keanu_reeves_320',
|
||||
'iperov/lucy_liu_224',
|
||||
'iperov/margot_robbie_224',
|
||||
'iperov/meghan_markle_224',
|
||||
'iperov/natalie_dormer_224',
|
||||
'iperov/natalie_portman_224',
|
||||
'iperov/nicolas_coppola__224',
|
||||
'iperov/robert_downey_224',
|
||||
'iperov/rowan_atkinson_224',
|
||||
'iperov/ryan_reynolds_224',
|
||||
'iperov/scarlett_johansson_224',
|
||||
'iperov/sylvester_stallone_224',
|
||||
'iperov/taylor_swift_224',
|
||||
'iperov/thomas_cruise_224',
|
||||
'iperov/thomas_holland_224',
|
||||
'iperov/vin_diesel_224',
|
||||
'iperov/vladimir_putin_224'
|
||||
]
|
||||
ExpressionRestorerModel = Literal['live_portrait']
|
||||
FaceDebuggerItem = Literal['bounding-box', 'face-landmark-5', 'face-landmark-5/68', 'face-landmark-68', 'face-landmark-68/5', 'face-mask', 'face-detector-score', 'face-landmarker-score', 'age', 'gender', 'race']
|
||||
FaceEditorModel = Literal['live_portrait']
|
||||
|
Loading…
Reference in New Issue
Block a user