File size: 2,345 Bytes
ed99d08
205ca4b
 
 
 
 
 
 
 
 
 
ed99d08
205ca4b
d4baf14
 
ed99d08
d4baf14
ed99d08
 
d4baf14
ed99d08
 
 
 
d4baf14
ed99d08
 
 
 
 
 
d4baf14
 
 
ed99d08
 
 
 
d4baf14
00e82f0
 
d4baf14
 
 
00e82f0
4e23ed1
0b96432
4e23ed1
d4baf14
ed99d08
 
 
 
 
 
d4baf14
ed99d08
 
 
 
d4baf14
 
 
ed99d08
00e82f0
205ca4b
ed99d08
 
 
 
 
 
 
cdb416f
a67ef29
ed99d08
 
6ca78f5
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
import numpy as np
import gradio as gr
import roop.globals
from roop.core import (
    start,
    decode_execution_providers,
    suggest_max_memory,
    suggest_execution_threads,
)
from roop.processors.frame.core import get_frame_processors_modules
from roop.utilities import normalize_output_path
import os
from PIL import Image


def swap_face(source_file, target_file, doFaceEnhancer):

    source_path = "input.jpg"
    target_path = "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)

    roop.globals.source_path = source_path
    roop.globals.target_path = target_path
    output_path = "output.jpg"
    roop.globals.output_path = normalize_output_path(
        roop.globals.source_path, roop.globals.target_path, output_path
    )
    if doFaceEnhancer:
        roop.globals.frame_processors = ["face_swapper", "face_enhancer"]
    else:
        roop.globals.frame_processors = ["face_swapper"]
    roop.globals.headless = True
    roop.globals.keep_fps = True
    roop.globals.keep_audio = True
    roop.globals.keep_frames = False
    roop.globals.many_faces = False
    roop.globals.video_encoder = "libx264"
    roop.globals.video_quality = 18
    roop.globals.max_memory = suggest_max_memory()
    roop.globals.execution_providers = decode_execution_providers(["cpu"])
    roop.globals.execution_threads = suggest_execution_threads()

    print(
        "start process",
        roop.globals.source_path,
        roop.globals.target_path,
        roop.globals.output_path,
    )

    for frame_processor in get_frame_processors_modules(
        roop.globals.frame_processors
    ):
        if not frame_processor.pre_check():
            return

    start()
    return output_path


app = gr.Blocks()

with app:
    gr.Interface(
        fn=swap_face,
        inputs=[gr.Image(), gr.Image(), gr.Checkbox(label="Apply Face Enhancer")],
        outputs="image",
        description="Sorry for the inconvenience. The model is currently running on the CPU, which might affect performance. We appreciate your understanding. ( Apply Face Enhancer to get better result. )",
        theme="Nymbo/Nymbo_Theme"
    )

app.launch()