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()