Spaces:
Sleeping
Sleeping
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() |