File size: 5,892 Bytes
1f5f680
f2c9245
ced9582
 
7310428
7539545
372a6ba
a781931
f2c9245
bd67bba
 
e756b69
c0d75d4
a781931
e756b69
a781931
1920c57
a781931
 
3bca149
e756b69
 
f2c9245
3bca149
c611def
 
e756b69
934c174
 
 
 
 
 
 
 
 
 
4296c87
934c174
 
 
 
 
 
 
 
 
 
 
 
 
 
37df347
 
273d711
7339e46
 
3bca149
 
 
 
 
 
49e6a55
3bca149
 
 
 
 
 
 
 
faa2cc3
 
 
3bca149
 
 
 
 
 
 
 
 
 
 
f2c9245
3bca149
faa2cc3
 
f2c9245
5a28353
ced9582
 
 
 
 
3bca149
af881b4
ced9582
3bca149
1f5f680
8e363d1
af881b4
8e363d1
 
f33e101
8e363d1
a196a16
 
 
 
3f770cf
95cbdc8
 
 
 
 
 
 
 
52e1485
95cbdc8
8e363d1
c632e3d
 
0d7bdbf
 
c632e3d
0d7bdbf
 
 
 
8e363d1
3bca149
 
4296c87
95cbdc8
4296c87
95cbdc8
c632e3d
 
 
 
 
3bca149
 
 
55ad643
f33e101
95cbdc8
7539545
0f34a3e
8f8baa8
0f34a3e
8f8baa8
7539545
 
 
 
 
f1a3cbd
95cbdc8
 
8f8baa8
95cbdc8
c632e3d
 
 
 
 
 
 
3b6387c
 
 
8f8baa8
b1b5fc5
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import gradio as gr
from PIL import Image
import time
import os
import pathlib


def perform(input1, input2, input3):

    #video o cualquier otro sería para imagenes.
    modo = "pic"
    #local o huggingface
    plataforma = "huggingface"

    #face_swapper o face_enhancer o la combinación de ellos.
    #El default, por si el usuario no eligiera nada, es:
    procesador = "face_swapper"
    print("Por ahora el procesador es:", procesador)

    print("Inicio: Estamos en modo ", modo)
    print("Estamos en la plataforma:", plataforma)
    print("El procesador es: ", procesador)

    path_video = input2
    print("Path_video es:", path_video)
    time.sleep(5)

    if modo == "video":
    
        if plataforma == "local":
            #Para local.
            path_parts = path_video.split("\\")
        else:
            #Para HuggingFace
            #Creo que no va en imagen.
            print("La plataforma en la que basaremos la división es HuggingFace.")
            path_parts = path_video.split("/")

            #Aquí obtendremos nom_video
            #Creo no va en imagen
            filename = path_parts[-1]
            nom_video = filename[:-4]
            print("Esto es filename alias nom_video: ", nom_video)
            path_particular = "/".join(path_parts[0:len(path_parts) - 1])
            path_general = "/".join(path_parts[0:len(path_parts) - 2])
            path_general = path_general.replace("\\", "/")
            path_particular = path_particular.replace("\\", "/")
            print("Path general: ", path_general)
            print("Path general: ", path_particular)
            path = pathlib.Path("result.mp4")
            files = os.listdir(path_general)
        
            print("Estos son los files que hay:")
            print(files)

    ext_imagen = "png"
    ext_video = "mp4"

    #Selector de modo.
    if modo == "video": 
        print("Se asigno la extensión de video:", ext_video)
        extension = ext_video
    else:
        print("Se asigno la extensión de imagen:", ext_imagen)
        extension = ext_imagen

    #El source siempre es una imagen.
    source_path = "source.png"
    target_path = "target." + extension
    result_path = "result." + extension

    #La primera siempre será una imagen, por eso no entra en el modo selector.
    source_image = Image.fromarray(input1)
    print("Esto es source_image: ", source_image)
    source_image.save(source_path)
        
    #Aquí trabajaremos solo el target.
    if modo == "video":
        #Para Video
        target_path = input2
    else:
        #Es decir si es modo imagen
        #Para Imagenes
        target_image = Image.fromarray(input2)
        print("Esto es target_image: ", target_image)
        target_image.save(target_path)

    print("Después de los selectores de modo los paths quedaron así:")
    print("source_path: ", source_path)
    print("target_path: ", target_path)

    command = f"python run.py -s {source_path}  -t {target_path} -o {result_path} --frame-processor {procesador} --execution-provider cuda"
    print(command)
    time.sleep(1)
    proc = os.popen(command)
    output = proc.read()

    print("Output (resultado de la ejecución del código):")
    time.sleep(1)
    print(output)
    print("Terminó la impresión del output...")

    print("Éste es el momento en el que se creo result, revisar...")
    time.sleep(1)

    #Creación de la galería:
    #images = []
    
    #path_foto = pathlib.Path(path_particular + "/temp/" + nom_video + "/")
    #print("Éste es el path foto: ", path_foto)
    #path_result = str(path_foto) + "/temp.mp4"
    #print("Y éste es el path del resultado: ", path_result)
 
    #Éste es el segmento que crea la galería de imagenes, que por el momento no usaremos por rendimiento.
    #Se reintegrará si agregamos interacción de poder borrar cada imagen desde la interfaz web.
    
    # for filename in os.listdir(path_foto):
    #     if filename.endswith(".png"):
    #         path = os.path.join(path_foto, filename)
    #         image = Image.open(path)
    #         images.append(image)

    # print("Esto es la lista de imagenes: ", images)

    #nombre_zip = nom_video + ".zip"
    #print("El nombre del zip será: ", nombre_zip)

    try:
        print("Ésta vez no crearemos archivo zip.")

    except Exception as e:
        # código que se ejecutará si se produce la excepción
        print(e)
    
    if modo == "video":
        #Para video
        path = pathlib.Path("result.mp4")
        path_abs = os.path.abspath(path)
        print("Éste es el path para video:", path)
        print("Y su ruta absoluta es: ", path_abs)
        #path_zip = pathlib.Path(nombre_zip)
        #path_zip_abs =  os.path.abspath(path_zip)
        #print("Y éste es el path para el zip: ", path_zip)
        #print("Y su ruta absoluta es: ", path_zip_abs)
        return path
    else:
        #Para imagen
        path = pathlib.Path("result.png")
        print("Éste es el path para imagen:", path)
        return path
    print("Listo! Gracias!")

#Así para imagenes
demo = gr.Interface(
fn=perform, inputs=[gr.Image(), gr.Image()], outputs=[gr.Image()]
)
     
#Así para imagenes
# demo = gr.Interface(
# fn=perform, inputs=[gr.Image(), gr.Image(), gr.CheckboxGroup(["face_swapper","face_enhancer"], label="Processor")], outputs=[gr.Image()]
# )

#Así para video y 3 outputs: Video, Galería y Archivo Zip.
# demo = gr.Interface(
# fn=perform, inputs=[gr.Image(), gr.Video()], outputs=[gr.Video(), gr.Gallery(), gr.File()]
# )

#Así para 2 outputs, video y zip.
# demo = gr.Interface(
# fn=greet, inputs=[gr.Image(), gr.Video()], outputs=[gr.Video(), gr.File()]
# )

#1 output: video.
# demo = gr.Interface(
# fn=perform, inputs=[gr.Image(), gr.Video(), gr.CheckboxGroup(["face_swapper","face_enhancer"], label="Processor")], outputs=[gr.Video()]
# )

demo.launch()