Deep-Live-Cam/modules/globals.py

118 lines
3.5 KiB
Python
Raw Normal View History

2023-09-24 21:36:57 +08:00
import os
import json
import logging
from typing import List, Dict, Any, Optional
2023-09-24 21:36:57 +08:00
logger = logging.getLogger(__name__)
# Core paths
2023-09-24 21:36:57 +08:00
ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
2024-10-09 22:20:20 +08:00
WORKFLOW_DIR = os.path.join(ROOT_DIR, "workflow")
CONFIG_PATH = os.path.join(ROOT_DIR, "config.json")
# Default configuration settings
DEFAULT_SETTINGS = {
'max_cluster_k': 10,
'kmeans_init': 'k-means++',
'nsfw_threshold': 0.85,
'mask_feather_ratio': 8,
'mask_down_size': 0.50,
'mask_size': 1
}
2023-09-24 21:36:57 +08:00
# File type definitions
2023-09-24 21:36:57 +08:00
file_types = [
2024-10-09 22:20:20 +08:00
("Image", ("*.png", "*.jpg", "*.jpeg", "*.gif", "*.bmp")),
("Video", ("*.mp4", "*.mkv")),
2023-09-24 21:36:57 +08:00
]
# Runtime variables
source_target_map = []
simple_map = {}
2024-09-10 07:07:58 +08:00
# Paths and processing options
2023-09-24 21:36:57 +08:00
source_path = None
target_path = None
output_path = None
frame_processors: List[str] = []
2024-10-09 22:20:20 +08:00
keep_fps = True
keep_audio = True
keep_frames = False
many_faces = False
map_faces = False
color_correction = False
2024-10-09 22:20:20 +08:00
nsfw_filter = False
2023-09-24 21:36:57 +08:00
video_encoder = None
video_quality = None
2024-10-09 22:20:20 +08:00
live_mirror = False
2024-12-13 22:19:11 +08:00
live_resizable = True
2023-09-24 21:36:57 +08:00
max_memory = None
execution_providers: List[str] = []
execution_threads = None
headless = None
2024-10-09 22:20:20 +08:00
log_level = "error"
fp_ui: Dict[str, bool] = {"face_enhancer": False}
2023-12-14 14:59:22 +08:00
camera_input_combobox = None
2024-10-06 23:06:57 +08:00
webcam_preview_running = False
show_fps = False
2024-10-25 23:29:30 +08:00
mouth_mask = False
show_mouth_mask_box = False
# Masking parameters - moved from hardcoded to configurable
mask_feather_ratio = DEFAULT_SETTINGS['mask_feather_ratio']
mask_down_size = DEFAULT_SETTINGS['mask_down_size']
mask_size = DEFAULT_SETTINGS['mask_size']
# Advanced parameters
max_cluster_k = DEFAULT_SETTINGS['max_cluster_k']
kmeans_init = DEFAULT_SETTINGS['kmeans_init']
nsfw_threshold = DEFAULT_SETTINGS['nsfw_threshold']
def load_settings() -> None:
"""
Load user settings from config file
"""
global mask_feather_ratio, mask_down_size, mask_size
global max_cluster_k, kmeans_init, nsfw_threshold
try:
if os.path.exists(CONFIG_PATH):
with open(CONFIG_PATH, 'r') as f:
config = json.load(f)
# Apply settings from config, falling back to defaults
mask_feather_ratio = config.get('mask_feather_ratio', DEFAULT_SETTINGS['mask_feather_ratio'])
mask_down_size = config.get('mask_down_size', DEFAULT_SETTINGS['mask_down_size'])
mask_size = config.get('mask_size', DEFAULT_SETTINGS['mask_size'])
max_cluster_k = config.get('max_cluster_k', DEFAULT_SETTINGS['max_cluster_k'])
kmeans_init = config.get('kmeans_init', DEFAULT_SETTINGS['kmeans_init'])
nsfw_threshold = config.get('nsfw_threshold', DEFAULT_SETTINGS['nsfw_threshold'])
logger.info("Settings loaded from config file")
except Exception as e:
logger.error(f"Error loading settings: {str(e)}")
# Use defaults if loading fails
def save_settings() -> None:
"""
Save current settings to config file
"""
try:
config = {
'mask_feather_ratio': mask_feather_ratio,
'mask_down_size': mask_down_size,
'mask_size': mask_size,
'max_cluster_k': max_cluster_k,
'kmeans_init': kmeans_init,
'nsfw_threshold': nsfw_threshold
}
with open(CONFIG_PATH, 'w') as f:
json.dump(config, f, indent=2)
logger.info("Settings saved to config file")
except Exception as e:
logger.error(f"Error saving settings: {str(e)}")
# Load settings at module import time
load_settings()