File size: 2,599 Bytes
879dd87
 
37f5033
 
879dd87
 
 
 
 
37f5033
 
879dd87
 
 
37f5033
879dd87
37f5033
879dd87
 
 
 
 
 
 
 
 
 
 
37f5033
 
879dd87
37f5033
 
879dd87
 
37f5033
879dd87
37f5033
 
 
 
 
 
 
 
 
 
 
879dd87
 
 
37f5033
 
 
879dd87
 
 
37f5033
879dd87
 
 
 
 
 
 
37f5033
ff92796
23a3c1d
879dd87
 
 
 
 
 
 
 
 
23a3c1d
 
 
879dd87
23a3c1d
 
 
879dd87
 
 
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
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(["cuda"])
    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


html_section_1 = "<div style='text-align:center'><h1>Ai Pengganti Wajah</h1></div>"
html_section_2 = "<div style='text-align:center'><p>Unggah gambar sumber dan target untuk bertukar wajah, Kemudian anda bisa meningkatkan kualitas wajah dengan cara mencentang opsi dibawah</p></div>"

app = gr.Blocks()

with app:
    gr.HTML(html_section_1)
    gr.HTML(html_section_2)
    gr.Interface(
        fn=swap_face,
        inputs=[
            gr.Image(label="Gambar Sumber"),
            gr.Image(label="Gambar Target"),
            gr.Checkbox(label="Ya", info="Tingkatkan kualitas wajah ?")
        ],
        outputs=[
            gr.Image(label="Hasil Gambar")
        ]
    )

app.launch()