Finalize choices and types
This commit is contained in:
@@ -3,26 +3,16 @@ import os
|
|||||||
import statistics
|
import statistics
|
||||||
import tempfile
|
import tempfile
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from typing import Dict, Generator, List
|
from typing import Generator, List
|
||||||
|
|
||||||
|
import facefusion.choices
|
||||||
from facefusion import core, state_manager
|
from facefusion import core, state_manager
|
||||||
from facefusion.cli_helper import render_table
|
from facefusion.cli_helper import render_table
|
||||||
from facefusion.download import conditional_download, resolve_download_url
|
from facefusion.download import conditional_download, resolve_download_url
|
||||||
from facefusion.filesystem import get_file_extension
|
from facefusion.filesystem import get_file_extension
|
||||||
from facefusion.types import BenchmarkSet
|
from facefusion.types import BenchmarkCycleSet
|
||||||
from facefusion.vision import count_video_frame_total, detect_video_fps, detect_video_resolution, pack_resolution
|
from facefusion.vision import count_video_frame_total, detect_video_fps, detect_video_resolution, pack_resolution
|
||||||
|
|
||||||
BENCHMARKS : Dict[str, str] =\
|
|
||||||
{
|
|
||||||
'240p': '.assets/examples/target-240p.mp4',
|
|
||||||
'360p': '.assets/examples/target-360p.mp4',
|
|
||||||
'540p': '.assets/examples/target-540p.mp4',
|
|
||||||
'720p': '.assets/examples/target-720p.mp4',
|
|
||||||
'1080p': '.assets/examples/target-1080p.mp4',
|
|
||||||
'1440p': '.assets/examples/target-1440p.mp4',
|
|
||||||
'2160p': '.assets/examples/target-2160p.mp4'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def pre_check() -> bool:
|
def pre_check() -> bool:
|
||||||
conditional_download('.assets/examples',
|
conditional_download('.assets/examples',
|
||||||
@@ -40,7 +30,7 @@ def pre_check() -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def run() -> Generator[List[BenchmarkSet], None, None]:
|
def run() -> Generator[List[BenchmarkCycleSet], None, None]:
|
||||||
benchmark_resolutions = state_manager.get_item('benchmark_resolutions')
|
benchmark_resolutions = state_manager.get_item('benchmark_resolutions')
|
||||||
benchmark_cycles = state_manager.get_item('benchmark_cycles')
|
benchmark_cycles = state_manager.get_item('benchmark_cycles')
|
||||||
|
|
||||||
@@ -52,7 +42,7 @@ def run() -> Generator[List[BenchmarkSet], None, None]:
|
|||||||
state_manager.set_item('video_memory_strategy', 'tolerant')
|
state_manager.set_item('video_memory_strategy', 'tolerant')
|
||||||
|
|
||||||
benchmarks = []
|
benchmarks = []
|
||||||
target_paths = [ BENCHMARKS.get(benchmark_resolution) for benchmark_resolution in benchmark_resolutions if benchmark_resolution in BENCHMARKS ]
|
target_paths = [facefusion.choices.benchmark_set.get(benchmark_resolution) for benchmark_resolution in benchmark_resolutions if benchmark_resolution in facefusion.choices.benchmark_set]
|
||||||
|
|
||||||
for target_path in target_paths:
|
for target_path in target_paths:
|
||||||
state_manager.set_item('target_path', target_path)
|
state_manager.set_item('target_path', target_path)
|
||||||
@@ -61,7 +51,7 @@ def run() -> Generator[List[BenchmarkSet], None, None]:
|
|||||||
yield benchmarks
|
yield benchmarks
|
||||||
|
|
||||||
|
|
||||||
def cycle(benchmark_cycles : int) -> BenchmarkSet:
|
def cycle(benchmark_cycles : int) -> BenchmarkCycleSet:
|
||||||
process_times = []
|
process_times = []
|
||||||
video_frame_total = count_video_frame_total(state_manager.get_item('target_path'))
|
video_frame_total = count_video_frame_total(state_manager.get_item('target_path'))
|
||||||
output_video_resolution = detect_video_resolution(state_manager.get_item('target_path'))
|
output_video_resolution = detect_video_resolution(state_manager.get_item('target_path'))
|
||||||
@@ -112,4 +102,5 @@ def render() -> None:
|
|||||||
for benchmark in run():
|
for benchmark in run():
|
||||||
benchmarks = benchmark
|
benchmarks = benchmark
|
||||||
|
|
||||||
render_table(headers, benchmarks)
|
contents = [ list(benchmark_set.values()) for benchmark_set in benchmarks ]
|
||||||
|
render_table(headers, contents)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import logging
|
|||||||
from typing import List, Sequence
|
from typing import List, Sequence
|
||||||
|
|
||||||
from facefusion.common_helper import create_float_range, create_int_range
|
from facefusion.common_helper import create_float_range, create_int_range
|
||||||
from facefusion.types import Angle, AudioEncoder, AudioFormat, AudioTypeSet, DownloadProvider, DownloadProviderSet, DownloadScope, EncoderSet, ExecutionProvider, ExecutionProviderSet, FaceDetectorModel, FaceDetectorSet, FaceLandmarkerModel, FaceMaskArea, FaceMaskAreaSet, FaceMaskRegion, FaceMaskRegionSet, FaceMaskType, FaceOccluderModel, FaceParserModel, FaceSelectorMode, FaceSelectorOrder, Gender, ImageFormat, ImageTypeSet, JobStatus, LogLevel, LogLevelSet, Race, Score, TempFrameFormat, UiWorkflow, VideoEncoder, VideoFormat, VideoMemoryStrategy, VideoPreset, VideoTypeSet, WebcamMode
|
from facefusion.types import Angle, AudioEncoder, AudioFormat, AudioTypeSet, BenchmarkResolution, BenchmarkSet, DownloadProvider, DownloadProviderSet, DownloadScope, EncoderSet, ExecutionProvider, ExecutionProviderSet, FaceDetectorModel, FaceDetectorSet, FaceLandmarkerModel, FaceMaskArea, FaceMaskAreaSet, FaceMaskRegion, FaceMaskRegionSet, FaceMaskType, FaceOccluderModel, FaceParserModel, FaceSelectorMode, FaceSelectorOrder, Gender, ImageFormat, ImageTypeSet, JobStatus, LogLevel, LogLevelSet, Race, Score, TempFrameFormat, UiWorkflow, VideoEncoder, VideoFormat, VideoMemoryStrategy, VideoPreset, VideoTypeSet, WebcamMode
|
||||||
|
|
||||||
face_detector_set : FaceDetectorSet =\
|
face_detector_set : FaceDetectorSet =\
|
||||||
{
|
{
|
||||||
@@ -85,6 +85,18 @@ output_video_presets : List[VideoPreset] = [ 'ultrafast', 'superfast', 'veryfast
|
|||||||
image_template_sizes : List[float] = [ 0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4 ]
|
image_template_sizes : List[float] = [ 0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 3.5, 4 ]
|
||||||
video_template_sizes : List[int] = [ 240, 360, 480, 540, 720, 1080, 1440, 2160, 4320 ]
|
video_template_sizes : List[int] = [ 240, 360, 480, 540, 720, 1080, 1440, 2160, 4320 ]
|
||||||
|
|
||||||
|
benchmark_set : BenchmarkSet =\
|
||||||
|
{
|
||||||
|
'240p': '.assets/examples/target-240p.mp4',
|
||||||
|
'360p': '.assets/examples/target-360p.mp4',
|
||||||
|
'540p': '.assets/examples/target-540p.mp4',
|
||||||
|
'720p': '.assets/examples/target-720p.mp4',
|
||||||
|
'1080p': '.assets/examples/target-1080p.mp4',
|
||||||
|
'1440p': '.assets/examples/target-1440p.mp4',
|
||||||
|
'2160p': '.assets/examples/target-2160p.mp4'
|
||||||
|
}
|
||||||
|
benchmark_resolutions : List[BenchmarkResolution] = list(benchmark_set.keys())
|
||||||
|
|
||||||
webcam_modes : List[WebcamMode] = [ 'inline', 'udp', 'v4l2' ]
|
webcam_modes : List[WebcamMode] = [ 'inline', 'udp', 'v4l2' ]
|
||||||
webcam_resolutions : List[str] = [ '320x240', '640x480', '800x600', '1024x768', '1280x720', '1280x960', '1920x1080', '2560x1440', '3840x2160' ]
|
webcam_resolutions : List[str] = [ '320x240', '640x480', '800x600', '1024x768', '1280x720', '1280x960', '1920x1080', '2560x1440', '3840x2160' ]
|
||||||
|
|
||||||
@@ -136,6 +148,7 @@ log_levels : List[LogLevel] = list(log_level_set.keys())
|
|||||||
ui_workflows : List[UiWorkflow] = [ 'instant_runner', 'job_runner', 'job_manager' ]
|
ui_workflows : List[UiWorkflow] = [ 'instant_runner', 'job_runner', 'job_manager' ]
|
||||||
job_statuses : List[JobStatus] = [ 'drafted', 'queued', 'completed', 'failed' ]
|
job_statuses : List[JobStatus] = [ 'drafted', 'queued', 'completed', 'failed' ]
|
||||||
|
|
||||||
|
benchmark_cycles_range : Sequence[int] = create_int_range(1, 10, 1)
|
||||||
execution_thread_count_range : Sequence[int] = create_int_range(1, 32, 1)
|
execution_thread_count_range : Sequence[int] = create_int_range(1, 32, 1)
|
||||||
execution_queue_count_range : Sequence[int] = create_int_range(1, 4, 1)
|
execution_queue_count_range : Sequence[int] = create_int_range(1, 4, 1)
|
||||||
system_memory_limit_range : Sequence[int] = create_int_range(0, 128, 4)
|
system_memory_limit_range : Sequence[int] = create_int_range(0, 128, 4)
|
||||||
|
|||||||
@@ -215,11 +215,10 @@ def create_download_providers_program() -> ArgumentParser:
|
|||||||
|
|
||||||
|
|
||||||
def create_benchmark_program() -> ArgumentParser:
|
def create_benchmark_program() -> ArgumentParser:
|
||||||
from facefusion.benchmarker import BENCHMARKS
|
|
||||||
program = ArgumentParser(add_help = False)
|
program = ArgumentParser(add_help = False)
|
||||||
group_benchmark = program.add_argument_group('benchmark')
|
group_benchmark = program.add_argument_group('benchmark')
|
||||||
group_benchmark.add_argument('--benchmark-resolutions', help = wording.get('help.benchmark_resolutions'), default = config.get_str_list('benchmark', 'benchmark_resolutions', '240p'), choices = list(BENCHMARKS.keys()), nargs = '+')
|
group_benchmark.add_argument('--benchmark-resolutions', help = wording.get('help.benchmark_resolutions'), default = config.get_str_list('benchmark', 'benchmark_resolutions', get_first(facefusion.choices.benchmark_resolutions)), choices = facefusion.choices.benchmark_resolutions, nargs = '+')
|
||||||
group_benchmark.add_argument('--benchmark-cycles', help = wording.get('help.benchmark_cycles'), type = int, default = config.get_int_value('benchmark', 'benchmark_cycles', '5'), choices = range(1, 11))
|
group_benchmark.add_argument('--benchmark-cycles', help = wording.get('help.benchmark_cycles'), type = int, default = config.get_int_value('benchmark', 'benchmark_cycles', '5'), choices = facefusion.choices.benchmark_cycles_range)
|
||||||
return program
|
return program
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -100,16 +100,6 @@ LogLevelSet : TypeAlias = Dict[LogLevel, int]
|
|||||||
TableHeaders = List[str]
|
TableHeaders = List[str]
|
||||||
TableContents = List[List[Any]]
|
TableContents = List[List[Any]]
|
||||||
|
|
||||||
BenchmarkSet = TypedDict('BenchmarkSet',
|
|
||||||
{
|
|
||||||
'target_path' : str,
|
|
||||||
'benchmark_cycles' : int,
|
|
||||||
'average_run' : float,
|
|
||||||
'fastest_run' : float,
|
|
||||||
'slowest_run' : float,
|
|
||||||
'relative_fps' : float
|
|
||||||
})
|
|
||||||
|
|
||||||
FaceDetectorModel = Literal['many', 'retinaface', 'scrfd', 'yolo_face']
|
FaceDetectorModel = Literal['many', 'retinaface', 'scrfd', 'yolo_face']
|
||||||
FaceLandmarkerModel = Literal['many', '2dfan4', 'peppa_wutz']
|
FaceLandmarkerModel = Literal['many', '2dfan4', 'peppa_wutz']
|
||||||
FaceDetectorSet : TypeAlias = Dict[FaceDetectorModel, List[str]]
|
FaceDetectorSet : TypeAlias = Dict[FaceDetectorModel, List[str]]
|
||||||
@@ -140,6 +130,18 @@ EncoderSet = TypedDict('EncoderSet',
|
|||||||
})
|
})
|
||||||
VideoPreset = Literal['ultrafast', 'superfast', 'veryfast', 'faster', 'fast', 'medium', 'slow', 'slower', 'veryslow']
|
VideoPreset = Literal['ultrafast', 'superfast', 'veryfast', 'faster', 'fast', 'medium', 'slow', 'slower', 'veryslow']
|
||||||
|
|
||||||
|
BenchmarkResolution = Literal['240p', '360p', '540p', '720p', '1080p', '1440p', '2160p']
|
||||||
|
BenchmarkSet : TypeAlias = Dict[BenchmarkResolution, str]
|
||||||
|
BenchmarkCycleSet = TypedDict('BenchmarkCycleSet',
|
||||||
|
{
|
||||||
|
'target_path' : str,
|
||||||
|
'benchmark_cycles' : int,
|
||||||
|
'average_run' : float,
|
||||||
|
'fastest_run' : float,
|
||||||
|
'slowest_run' : float,
|
||||||
|
'relative_fps' : float
|
||||||
|
})
|
||||||
|
|
||||||
WebcamMode = Literal['inline', 'udp', 'v4l2']
|
WebcamMode = Literal['inline', 'udp', 'v4l2']
|
||||||
StreamMode = Literal['udp', 'v4l2']
|
StreamMode = Literal['udp', 'v4l2']
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user