Spaces:
Running
on
Zero
Running
on
Zero
import os.path | |
from .yacs import CfgNode as CN | |
import argparse | |
from pathlib import Path | |
current_file = Path(__file__).resolve() | |
project_root = current_file.parent.parent.parent.parent | |
cfg_path = os.path.join(project_root, 'data_process/configs/pipeline_config_demo.yaml') | |
def parse_cfg(cfg, args): | |
"""Transfer command line arguments to configuration node""" | |
# Input/output configuration | |
cfg.input_dir = args.input_dir # Source input directory path | |
cfg.save_dir = args.save_dir # Output directory path | |
# Pipeline control flags | |
cfg.is_video = args.is_video # Video processing mode flag | |
cfg.is_img = args.is_img # Image processing mode flag | |
# Processing stage flags | |
cfg.no_extract_frames = args.no_extract_frames # Frame extraction enabled | |
cfg.no_extract_landmarks = args.no_extract_landmarks # Landmark detection enabled | |
cfg.no_align = args.no_align # Face alignment enabled | |
cfg.no_fitting_faceverse = args.no_fitting_faceverse # 3D face fitting enabled | |
cfg.no_render_faceverse = args.no_render_faceverse # Final rendering enabled | |
cfg.already_align = args.already_align # Final rendering enabled | |
cfg.no_pdfgc_motion = args.no_pdfgc_motion | |
def make_cfg(args): | |
"""Create and merge configuration from file and command line""" | |
# Initialize configuration node | |
cfg = CN() | |
# Merge with YAML configuration file | |
if args.cfg_file: | |
cfg.merge_from_file(args.cfg_file) | |
# Override with command line arguments | |
parse_cfg(cfg, args) | |
cfg.model.facerecon.checkpoints_dir = os.path.join(project_root, cfg.model.facerecon.checkpoints_dir) | |
cfg.model.fd.model_path = os.path.join(project_root, cfg.model.fd.model_path) | |
cfg.model.ldmk.model_path= os.path.join(project_root, cfg.model.ldmk.model_path) | |
cfg.model.ldmk_3d.model_path = os.path.join(project_root, cfg.model.ldmk_3d.model_path) | |
cfg.model.ldmk_3d.model_depth_path = os.path.join(project_root, cfg.model.ldmk_3d.model_depth_path) | |
cfg.pdfgc_path = os.path.join(project_root, cfg.pdfgc_path) | |
return cfg | |
# Command line argument configuration ------------------------------------------------- | |
parser = argparse.ArgumentParser(description="Face Processing Pipeline Configuration") | |
# I/O configuration | |
parser.add_argument("--input_dir", default='', type=str, | |
help="Input directory containing source media") | |
parser.add_argument("--save_dir", default='', type=str, | |
help="Output directory for processed results") | |
# Configuration file | |
parser.add_argument("--cfg_file", default=cfg_path, type=str, | |
help="Path to YAML configuration file") | |
# Processing mode flags | |
parser.add_argument("--is_video", action='store_true', | |
help="Enable video processing mode") | |
parser.add_argument("--is_img", action='store_true', | |
help="Enable image sequence processing mode") | |
# Pipeline stage control flags (default enabled, use flag to disable) | |
parser.add_argument('--no_extract_frames', action='store_true', | |
help="Disable frame extraction stage") | |
parser.add_argument('--no_extract_landmarks', action='store_true', | |
help="Disable facial landmark detection") | |
parser.add_argument('--no_align', action='store_true', | |
help="Disable face alignment stage") | |
parser.add_argument('--no_fitting_faceverse', action='store_true', | |
help="Disable FaceVerse model fitting") | |
parser.add_argument('--no_render_faceverse', action='store_true', | |
help="Disable final rendering stage") | |
parser.add_argument('--already_align', action='store_true', | |
help="already_align") | |
parser.add_argument('--no_pdfgc_motion', action='store_true',) | |
# Parse arguments and build configuration --------------------------------------------- | |
args = parser.parse_args() | |
cfg = make_cfg(args) # Final merged configuration |