Frame Processor

1. Create

Create a new example file:

facefusion/processors/frame/modules/example.py

2. Implement

Define the frame processor inputs type:

ExampleInputs = TypedDict('ExampleInputs',
{
	'reference_faces' : FaceSet,
	'source_face' : Face,
	'target_vision_frame' : VisionFrame
})

Implement the required hooks of the frame processor:

from typing import Any, List, Literal, Optional
from argparse import ArgumentParser

from facefusion.typing import Face, VisionFrame, Update_Process, ProcessMode, ModelSet, OptionsWithModel
from facefusion.processors.frame.typings import ExampleInputs

FRAME_PROCESSOR = None
NAME = __name__.upper()
MODELS : ModelSet = {}
OPTIONS : Optional[OptionsWithModel] = None


def get_frame_processor() -> Any:
	pass


def clear_frame_processor() -> None:
	pass


def get_options(key : Literal['model']) -> Any:
	pass


def set_options(key : Literal['model'], value : Any) -> None:
	pass


def register_args(program : ArgumentParser) -> None:
	pass


def apply_args(program : ArgumentParser) -> None:
	pass


def pre_check() -> bool:
	return True


def post_check() -> bool:
	return True


def pre_process(mode : ProcessMode) -> bool:
	pass


def post_process() -> None:
	pass


def get_reference_frame(source_face : Face, target_face : Face, temp_vision_frame : VisionFrame) -> VisionFrame:
	pass


def process_frame(inputs : ExampleInputs) -> VisionFrame:
	pass


def process_frames(source_path : str, temp_frame_paths : List[str], update_progress : Update_Process) -> None:
	pass


def process_image(source_path : str, target_path : str, output_path : str) -> None:
	pass


def process_video(source_path : str, temp_frame_paths : List[str]) -> None:
	pass

3. Done

Finally, run the command:

python run.py --frame-processors example

Last updated