Spaces:
Sleeping
Sleeping
import gradio as gr | |
import tensorflow as tf | |
import numpy as np | |
import cv2 | |
import os | |
# Charger le générateur pré-entraîné | |
generator = tf.keras.models.load_model('generator.h5') # Le modèle est sauvegardé dans le même dossier | |
# Dimension du bruit latent | |
LATENT_DIM = 100 | |
# Fonction pour générer une vidéo à partir du bruit latent | |
def generate_video(latent_vector): | |
# Convertir le latent_vector en format numpy | |
latent_vector = np.array(latent_vector).reshape(1, LATENT_DIM) | |
# Générer une vidéo avec le générateur | |
generated_video = generator.predict(latent_vector) | |
# Convertir la vidéo générée en une forme compréhensible pour Gradio | |
generated_video = ((generated_video + 1) * 127.5).astype(np.uint8) | |
# Créer un fichier vidéo temporaire avec OpenCV pour Gradio | |
out_path = "/tmp/generated_video.mp4" | |
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec pour mp4 | |
out = cv2.VideoWriter(out_path, fourcc, 10, (64, 64)) # 10 FPS, dimensions 64x64 | |
# Ajouter chaque frame à la vidéo | |
for i in range(generated_video.shape[1]): | |
frame = generated_video[0, i] | |
out.write(frame) | |
out.release() | |
return out_path | |
# Interface Gradio | |
iface = gr.Interface( | |
fn=generate_video, # Fonction à exécuter | |
inputs=gr.inputs.Textbox(label="Latent Vector (100 dimensions)", default="0.5, 0.5, 0.5, ..., 0.5"), | |
outputs=gr.outputs.Video(type="file"), # Sortie vidéo | |
live=True, # Permet de générer une vidéo immédiatement lorsque le latent vector est modifié | |
title="Générateur de Vidéos GAN", # Titre de l'interface | |
description="Entrez un vecteur latent de 100 dimensions pour générer une vidéo.", | |
) | |
# Lancer l'interface Gradio | |
iface.launch() |