Merge pull request #615 from saleweaver/experimental

Adding headless parameter to arguments to run from the cli, reenabling macOS compatibility
pull/626/head
Kenneth Estanislao 2024-09-23 04:01:23 +08:00 committed by GitHub
commit 91884eebf7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 21 additions and 7 deletions

View File

@ -164,6 +164,8 @@ options:
--max-memory MAX_MEMORY maximum amount of RAM in GB --max-memory MAX_MEMORY maximum amount of RAM in GB
--execution-provider {cpu} [{cpu} ...] available execution provider (choices: cpu, ...) --execution-provider {cpu} [{cpu} ...] available execution provider (choices: cpu, ...)
--execution-threads EXECUTION_THREADS number of execution threads --execution-threads EXECUTION_THREADS number of execution threads
--headless run in headless mode
--enhancer-upscale-factor Sets the upscale factor for the enhancer. Only applies if `face_enhancer` is set as a frame-processor
-v, --version show program's version number and exit -v, --version show program's version number and exit
``` ```

View File

@ -70,6 +70,10 @@ def parse_args() -> None:
choices=suggest_execution_providers(), nargs='+') choices=suggest_execution_providers(), nargs='+')
program.add_argument('--execution-threads', help='Number of execution threads', dest='execution_threads', type=int, program.add_argument('--execution-threads', help='Number of execution threads', dest='execution_threads', type=int,
default=suggest_execution_threads()) default=suggest_execution_threads())
program.add_argument('--headless', help='Run in headless mode', dest='headless', default=False, action='store_true')
program.add_argument('--enhancer-upscale-factor',
help='Sets the upscale factor for the enhancer. Only applies if `face_enhancer` is set as a frame-processor',
dest='enhancer_upscale_factor', type=int, default=1)
program.add_argument('-v', '--version', action='version', program.add_argument('-v', '--version', action='version',
version=f'{modules.metadata.name} {modules.metadata.version}') version=f'{modules.metadata.name} {modules.metadata.version}')
@ -98,7 +102,8 @@ def parse_args() -> None:
modules.globals.max_memory = args.max_memory modules.globals.max_memory = args.max_memory
modules.globals.execution_providers = decode_execution_providers(args.execution_provider) modules.globals.execution_providers = decode_execution_providers(args.execution_provider)
modules.globals.execution_threads = args.execution_threads modules.globals.execution_threads = args.execution_threads
modules.globals.headless = args.headless
modules.globals.enhancer_upscale_factor = args.enhancer_upscale_factor
# Handle face enhancer tumbler # Handle face enhancer tumbler
modules.globals.fp_ui['face_enhancer'] = 'face_enhancer' in args.frame_processor modules.globals.fp_ui['face_enhancer'] = 'face_enhancer' in args.frame_processor

View File

@ -29,4 +29,5 @@ log_level = 'error'
fp_ui: Dict[str, bool] = {} fp_ui: Dict[str, bool] = {}
nsfw = None nsfw = None
camera_input_combobox = None camera_input_combobox = None
webcam_preview_running = False webcam_preview_running = False
enhancer_upscale_factor = 1

View File

@ -33,7 +33,10 @@ def get_face_enhancer() -> Any:
with THREAD_LOCK: with THREAD_LOCK:
if FACE_ENHANCER is None: if FACE_ENHANCER is None:
model_path = resolve_relative_path('../models/GFPGANv1.4.pth') model_path = resolve_relative_path('../models/GFPGANv1.4.pth')
FACE_ENHANCER = gfpgan.GFPGANer(model_path=model_path, upscale=1) # type: ignore[attr-defined] FACE_ENHANCER = gfpgan.GFPGANer(
model_path=model_path,
upscale=modules.globals.enhancer_upscale_factor
) # type: ignore[attr-defined]
return FACE_ENHANCER return FACE_ENHANCER
def enhance_face(temp_frame: Frame) -> Frame: def enhance_face(temp_frame: Frame) -> Frame:

View File

@ -6,15 +6,17 @@ from typing import Callable, Tuple, List, Any
from types import ModuleType from types import ModuleType
import cv2 import cv2
from PIL import Image, ImageOps from PIL import Image, ImageOps
from pygrabber.dshow_graph import FilterGraph
import pyvirtualcam import pyvirtualcam
# Import OS-specific modules only when necessary # Import OS-specific modules only when necessary
if platform.system() == 'Darwin': # macOS if platform.system() == 'Darwin': # macOS
import objc
from Foundation import NSObject
import AVFoundation import AVFoundation
# Import Windows specific modules only when on windows platform
if platform.system() == 'Windows' or platform.system() == 'Linux': # Windows or Linux
from pygrabber.dshow_graph import FilterGraph
import modules.globals import modules.globals
import modules.metadata import modules.metadata
from modules.face_analyser import get_one_face from modules.face_analyser import get_one_face

View File

@ -23,4 +23,5 @@ tqdm==4.66.4
gfpgan==1.3.8 gfpgan==1.3.8
pyobjc==9.1; sys_platform == 'darwin' pyobjc==9.1; sys_platform == 'darwin'
pygrabber==0.2 pygrabber==0.2
pyvirtualcam==0.12.0 pyvirtualcam==0.12.0
pyobjc-framework-AVFoundation==10.3.1; sys_platform == 'darwin'