Spaces:
Running
on
Zero
Running
on
Zero
File size: 3,007 Bytes
1f6a041 51a3166 1f6a041 860023c 3aff737 28ae202 51a3166 ba0e720 a39ec9f 3aff737 1f6a041 3aff737 42b1f81 1f6a041 42b1f81 324786c 42b1f81 decc5b1 28ae202 1f6a041 42b1f81 1f6a041 438e3e2 1f6a041 42b1f81 1f6a041 438e3e2 1f6a041 8725ec6 |
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 90 |
# -* coding:UTF-8 -*
# !/usr/bin/env python
import numpy as np
import gradio as gr
import roop.globals
from roop.core import (
start,
decode_execution_providers,
)
from roop.processors.frame.core import get_frame_processors_modules
from roop.utilities import normalize_output_path
import os
from PIL import Image
import spaces
import uuid
import onnxruntime as ort
@spaces.GPU
def swap_face(source_file, target_file, doFaceEnhancer):
session_id = str(uuid.uuid4()) # Tạo một UUID duy nhất cho mỗi phiên làm việc
session_dir = f"temp/{session_id}"
os.makedirs(session_dir, exist_ok=True)
source_path = os.path.join(session_dir, "input.jpg")
target_path = os.path.join(session_dir, "target.jpg")
source_image = Image.fromarray(source_file)
source_image.save(source_path)
target_image = Image.fromarray(target_file)
target_image.save(target_path)
print("source_path: ", source_path)
print("target_path: ", target_path)
output_path = os.path.join(session_dir, "output.jpg")
normalized_output_path = normalize_output_path(source_path, target_path, output_path)
frame_processors = ["face_swapper", "face_enhancer"] if doFaceEnhancer else ["face_swapper"]
headless = True
keep_fps = True
keep_audio = True
keep_frames = False
many_faces = False
video_encoder = "libx264"
video_quality = 18
max_memory = "4G"
execution_providers = ["CUDAExecutionProvider", "CPUExecutionProvider"] # Ưu tiên GPU, sau đó là CPU
execution_threads = 4
reference_face_position = 0
similar_face_distance = 0.6
print("Available providers:", ort.get_available_providers()) # Kiểm tra các provider hiện có
print("Configured execution providers:", execution_providers)
for frame_processor in get_frame_processors_modules(frame_processors):
if not frame_processor.pre_check():
print(f"Pre-check failed for {frame_processor}")
return
roop.globals.source_path = source_path
roop.globals.target_path = target_path
roop.globals.output_path = normalized_output_path
roop.globals.frame_processors = frame_processors
roop.globals.headless = headless
roop.globals.keep_fps = keep_fps
roop.globals.keep_audio = keep_audio
roop.globals.keep_frames = keep_frames
roop.globals.many_faces = many_faces
roop.globals.video_encoder = video_encoder
roop.globals.video_quality = video_quality
roop.globals.max_memory = max_memory
roop.globals.execution_providers = execution_providers
roop.globals.execution_threads = execution_threads
roop.globals.reference_face_position = reference_face_position
roop.globals.similar_face_distance = similar_face_distance
start()
return output_path
app = gr.Interface(
fn=swap_face,
inputs=[
gr.Image(),
gr.Image(),
gr.Checkbox(label="Face Enhancer?", info="Do face enhancement?")
],
outputs="image"
)
app.launch()
|