Spaces:
Build error
Build error
Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import tensorflow as tf
|
| 3 |
+
import numpy as np
|
| 4 |
+
import cv2
|
| 5 |
+
import os
|
| 6 |
+
|
| 7 |
+
# Charger le générateur pré-entraîné
|
| 8 |
+
generator = tf.keras.models.load_model('generator.h5') # Le modèle est sauvegardé dans le même dossier
|
| 9 |
+
|
| 10 |
+
# Dimension du bruit latent
|
| 11 |
+
LATENT_DIM = 100
|
| 12 |
+
|
| 13 |
+
# Fonction pour générer une vidéo à partir du bruit latent
|
| 14 |
+
def generate_video(latent_vector):
|
| 15 |
+
# Convertir le latent_vector en format numpy
|
| 16 |
+
latent_vector = np.array(latent_vector).reshape(1, LATENT_DIM)
|
| 17 |
+
|
| 18 |
+
# Générer une vidéo avec le générateur
|
| 19 |
+
generated_video = generator.predict(latent_vector)
|
| 20 |
+
|
| 21 |
+
# Convertir la vidéo générée en une forme compréhensible pour Gradio
|
| 22 |
+
generated_video = ((generated_video + 1) * 127.5).astype(np.uint8)
|
| 23 |
+
|
| 24 |
+
# Créer un fichier vidéo temporaire avec OpenCV pour Gradio
|
| 25 |
+
out_path = "/tmp/generated_video.mp4"
|
| 26 |
+
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec pour mp4
|
| 27 |
+
out = cv2.VideoWriter(out_path, fourcc, 10, (64, 64)) # 10 FPS, dimensions 64x64
|
| 28 |
+
|
| 29 |
+
# Ajouter chaque frame à la vidéo
|
| 30 |
+
for i in range(generated_video.shape[1]):
|
| 31 |
+
frame = generated_video[0, i]
|
| 32 |
+
out.write(frame)
|
| 33 |
+
|
| 34 |
+
out.release()
|
| 35 |
+
return out_path
|
| 36 |
+
|
| 37 |
+
# Interface Gradio
|
| 38 |
+
iface = gr.Interface(
|
| 39 |
+
fn=generate_video, # Fonction à exécuter
|
| 40 |
+
inputs=gr.inputs.Textbox(label="Latent Vector (100 dimensions)", default="0.5, 0.5, 0.5, ..., 0.5"),
|
| 41 |
+
outputs=gr.outputs.Video(type="file"), # Sortie vidéo
|
| 42 |
+
live=True, # Permet de générer une vidéo immédiatement lorsque le latent vector est modifié
|
| 43 |
+
title="Générateur de Vidéos GAN", # Titre de l'interface
|
| 44 |
+
description="Entrez un vecteur latent de 100 dimensions pour générer une vidéo.",
|
| 45 |
+
)
|
| 46 |
+
|
| 47 |
+
# Lancer l'interface Gradio
|
| 48 |
+
iface.launch()
|