Video_generator / app.py
Leo8613's picture
Create app.py
e568a88 verified
raw
history blame
1.77 kB
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()