-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* renaming and restructuring (#282) * Renaming and restructuring * Renaming and restructuring * Renaming and restructuring * Fix gender detection * Implement distance to face debugger * Implement distance to face debugger part2 * Implement distance to face debugger part3 * Mark as next * Fix reference when face_debugger comes first * Use official onnxruntime nightly * CUDA on steroids * CUDA on steroids * Add some testing * Set inswapper_128_fp16 as default * Feat/block until post check (#292) * Block until download is done * Introduce post_check() * Fix webcam * Update dependencies * Add --force-reinstall to installer * Introduce config ini (#298) * Introduce config ini * Fix output video encoder * Revert help listings back to commas, Move SSL hack to download.py * Introduce output-video-preset which defaults to veryfast * Mapping for nvenc encoders * Rework on events and non-blocking UI * Add fast bmp to temp_frame_formats * Add fast bmp to temp_frame_formats * Show total processing time on success * Show total processing time on success * Show total processing time on success * Move are_images, is_image and is_video back to filesystem * Fix some spacings * Pissing everyone of by renaming stuff * Fix seconds output * feat/video output fps (#312) * added output fps slider, removed 'keep fps' option (#311) * added output fps slider, removed 'keep fps' option * now uses passed fps instead of global fps for ffmpeg * fps values are now floats instead of ints * fix previous commit * removed default value from fps slider this is so we can implement a dynamic default value later * Fix seconds output * Some cleanup --------- Co-authored-by: Ran Shaashua <47498956+ranshaa05@users.noreply.github.com> * Allow 0.01 steps for fps * Make fps unregulated * Make fps unregulated * Remove distance from face debugger again (does not work) * Fix gender age * Fix gender age * Hotfix benchmark suite * Warp face normalize (#313) * use normalized kp templates * Update face_helper.py * My 50 cents to warp_face() --------- Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com> * face-swapper-weight (#315) * Move prepare_crop_frame and normalize_crop_frame out of apply_swap * Fix UI bug with different range * feat/output video resolution (#316) * Introduce detect_video_resolution, Rename detect_fps to detect_video_fps * Add calc_video_resolution_range * Make output resolution work, does not auto-select yet * Make output resolution work, does not auto-select yet * Try to keep the origin resolution * Split code into more fragments * Add pack/unpack resolution * Move video_template_sizes to choices * Improve create_video_resolutions * Reword benchmark suite * Optimal speed for benchmark * Introduce different video memory strategies, rename max_memory to max… (#317) * Introduce different video memory strategies, rename max_memory to max_system_memory * Update readme * Fix limit_system_memory call * Apply video_memory_strategy to face debugger * Limit face swapper weight to 3.0 * Remove face swapper weight due bad render outputs * Show/dide logic for output video preset * fix uint8 conversion * Fix whitespace * Finalize layout and update preview * Fix multi renders on face debugger * Restore less restrictive rendering of preview and stream * Fix block mode for model downloads * Add testing * Cosmetic changes * Enforce valid fps and resolution via CLI * Empty config * Cosmetics on args processing * Memory workover (#319) * Cosmetics on args processing * Fix for MacOS * Rename all max_ to _limit * More fixes * Update preview * Fix whitespace --------- Co-authored-by: Ran Shaashua <47498956+ranshaa05@users.noreply.github.com> Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com>
- Loading branch information
1 parent
3e93f99
commit f6e56a3
Showing
61 changed files
with
1,095 additions
and
430 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
[general] | ||
source_paths = | ||
target_path = | ||
output_path = | ||
|
||
[misc] | ||
skip_download = | ||
headless = | ||
log_level = | ||
|
||
[execution] | ||
execution_providers = | ||
execution_thread_count = | ||
execution_queue_count = | ||
|
||
[memory] | ||
video_memory_strategy = | ||
system_memory_limit = | ||
|
||
[face_analyser] | ||
face_analyser_order = | ||
face_analyser_age = | ||
face_analyser_gender = | ||
face_detector_model = | ||
face_detector_size = | ||
face_detector_score = | ||
|
||
[face_selector] | ||
face_selector_mode = | ||
reference_face_position = | ||
reference_face_distance = | ||
reference_frame_number = | ||
|
||
[face_mask] | ||
face_mask_types = | ||
face_mask_blur = | ||
face_mask_padding = | ||
face_mask_regions = | ||
|
||
[frame_extraction] | ||
trim_frame_start = | ||
trim_frame_end = | ||
temp_frame_format = | ||
temp_frame_quality = | ||
keep_temp = | ||
|
||
[output_creation] | ||
output_image_quality = | ||
output_video_encoder = | ||
output_video_preset = | ||
output_video_quality = | ||
output_video_resolution = | ||
output_video_fps = | ||
skip_audio = | ||
|
||
[frame_processors] | ||
frame_processors = | ||
face_debugger_items = | ||
face_enhancer_model = | ||
face_enhancer_blend = | ||
face_swapper_model = | ||
frame_enhancer_model = | ||
frame_enhancer_blend = | ||
|
||
[uis] | ||
ui_layouts = |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
from configparser import ConfigParser | ||
from typing import Optional, List | ||
|
||
from facefusion.filesystem import resolve_relative_path | ||
|
||
CONFIG = None | ||
|
||
|
||
def get_config() -> ConfigParser: | ||
global CONFIG | ||
|
||
if CONFIG is None: | ||
config_path = resolve_relative_path('../facefusion.ini') | ||
CONFIG = ConfigParser() | ||
CONFIG.read(config_path) | ||
return CONFIG | ||
|
||
|
||
def clear_config() -> None: | ||
global CONFIG | ||
|
||
CONFIG = None | ||
|
||
|
||
def get_str_value(key : str, fallback : Optional[str] = None) -> Optional[str]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return str(value or fallback) | ||
return None | ||
|
||
|
||
def get_int_value(key : str, fallback : Optional[str] = None) -> Optional[int]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return int(value or fallback) | ||
return None | ||
|
||
|
||
def get_float_value(key : str, fallback : Optional[str] = None) -> Optional[float]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return float(value or fallback) | ||
return None | ||
|
||
|
||
def get_bool_value(key : str, fallback : Optional[str] = None) -> Optional[bool]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option, fallback) | ||
if value == 'True' or fallback == 'True': | ||
return True | ||
if value == 'False' or fallback == 'False': | ||
return False | ||
return None | ||
|
||
|
||
def get_str_list(key : str, fallback : Optional[str] = None) -> Optional[List[str]]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return [ str(value) for value in (value or fallback).split(' ') ] | ||
return None | ||
|
||
|
||
def get_int_list(key : str, fallback : Optional[str] = None) -> Optional[List[int]]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return [ int(value) for value in (value or fallback).split(' ') ] | ||
return None | ||
|
||
|
||
def get_float_list(key : str, fallback : Optional[str] = None) -> Optional[List[float]]: | ||
section, option = key.split('.') | ||
value = get_config()[section].get(option) | ||
if value or fallback: | ||
return [ float(value) for value in (value or fallback).split(' ') ] | ||
return None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.