Spaces:
Running
on
L40S
Running
on
L40S
File size: 3,269 Bytes
8308bbd ee3c968 7d09a23 8308bbd ae826ca 8308bbd a125be2 8308bbd 99745bb 8308bbd ee3c968 8308bbd ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 8308bbd 2b8d1f6 ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb ee3c968 99745bb 7d09a23 99745bb ee3c968 99745bb ee3c968 99745bb a125be2 ee3c968 8308bbd 99745bb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
import argparse
import os
import shutil
from face_enhance import face_enhance
def parse_args():
parser = argparse.ArgumentParser(description='Face Enhancement Tool')
parser.add_argument('--input', type=str, required=True, help='Path to the input image')
parser.add_argument('--ref', type=str, required=True, help='Path to the reference image')
parser.add_argument('--output', type=str, required=True, help='Path to save the output image')
parser.add_argument('--id_weight', type=float, default=0.75, help='face ID weight')
args = parser.parse_args()
if not os.path.exists(args.input):
parser.error(f"Input file does not exist: {args.input}")
if not os.path.exists(args.ref):
parser.error(f"Reference file does not exist: {args.ref}")
output_dir = os.path.dirname(args.output)
if output_dir and not os.path.exists(output_dir):
parser.error(f"Output directory does not exist: {output_dir}")
return args
def create_scratch_dir():
"""Create a new numbered directory in ./ComfyUI/input/scratch"""
base_dir = "./ComfyUI/input/scratch"
# Create base directory if it doesn't exist
os.makedirs(base_dir, exist_ok=True)
# Get existing directories and find the next number
existing_dirs = [d for d in os.listdir(base_dir) if os.path.isdir(os.path.join(base_dir, d)) and d.isdigit()]
next_dir_num = 1
if existing_dirs:
next_dir_num = max([int(d) for d in existing_dirs]) + 1
# Create the new directory
new_dir = os.path.join(base_dir, str(next_dir_num))
os.makedirs(new_dir, exist_ok=True)
return new_dir
def process_face(input_path, ref_path, output_path=None, id_weight=0.75):
"""
Process a face image using the given parameters.
Returns:
str: Path to the scratch directory used for processing
"""
print(f"Processing image: {input_path}")
print(f"Reference image: {ref_path}")
print(f"Output will be saved to: {output_path}")
# Create a new scratch directory for this run
scratch_dir = create_scratch_dir()
print(f"Created scratch directory: {scratch_dir}")
# Copy input and reference images to scratch directory
input_filename = os.path.basename(input_path)
ref_filename = os.path.basename(ref_path)
scratch_input = os.path.join(scratch_dir, input_filename)
scratch_ref = os.path.join(scratch_dir, ref_filename)
shutil.copy(input_path, scratch_input)
shutil.copy(ref_path, scratch_ref)
# Convert paths to ComfyUI format (relative to ComfyUI/input/)
# For example: "./ComfyUI/input/scratch/1/image.png" becomes "scratch/1/image.png"
comfy_ref_path = os.path.relpath(scratch_ref, "./ComfyUI/input")
comfy_input_path = os.path.relpath(scratch_input, "./ComfyUI/input")
face_enhance(comfy_ref_path, comfy_input_path, output_path, dist_image=f"{output_path}_dist.png", id_weight=id_weight)
print(f"Enhanced image saved to: {output_path}")
print(f"Working files are in: {scratch_dir}")
return scratch_dir
def main():
args = parse_args()
return process_face(
input_path=args.input,
ref_path=args.ref,
output_path=args.output,
id_weight=args.id_weight
)
if __name__ == "__main__":
main() |