Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,48 +1,46 @@
|
|
| 1 |
-
import
|
|
|
|
| 2 |
import tensorflow as tf
|
| 3 |
import numpy as np
|
| 4 |
import cv2
|
| 5 |
-
import
|
| 6 |
|
| 7 |
-
# Charger le générateur
|
| 8 |
-
generator = tf.keras.models.load_model('
|
| 9 |
|
| 10 |
-
#
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
-
#
|
| 14 |
-
|
| 15 |
-
|
| 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 |
-
#
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 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 |
-
|
|
|
|
| 36 |
|
| 37 |
# Interface Gradio
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 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 |
-
#
|
| 48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # Désactiver l'utilisation des GPU
|
| 3 |
import tensorflow as tf
|
| 4 |
import numpy as np
|
| 5 |
import cv2
|
| 6 |
+
import gradio as gr
|
| 7 |
|
| 8 |
+
# Charger le modèle générateur
|
| 9 |
+
generator = tf.keras.models.load_model('generator_cpu_compatible.h5') # Modèle préparé pour CPU
|
| 10 |
|
| 11 |
+
# Génération de vidéos à partir de bruit aléatoire
|
| 12 |
+
def generate_video():
|
| 13 |
+
# Générer un bruit aléatoire (entrée pour le générateur)
|
| 14 |
+
noise = np.random.normal(0, 1, (1, 16, 64, 64, 3))
|
| 15 |
+
generated_video = generator.predict(noise) # Génération de la vidéo
|
| 16 |
|
| 17 |
+
# Normaliser les données générées
|
| 18 |
+
video = (generated_video[0] * 255).astype(np.uint8) # Convertir en entier 8 bits
|
| 19 |
+
filename = "generated_video.mp4"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
|
| 21 |
+
# Sauvegarder la vidéo
|
| 22 |
+
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec vidéo
|
| 23 |
+
height, width, _ = video[0].shape
|
| 24 |
+
out = cv2.VideoWriter(filename, fourcc, 15, (width, height)) # 15 FPS
|
| 25 |
+
|
| 26 |
+
# Ajouter les frames dans le fichier vidéo
|
| 27 |
+
for frame in video:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
out.write(frame)
|
|
|
|
| 29 |
out.release()
|
| 30 |
+
|
| 31 |
+
return filename
|
| 32 |
|
| 33 |
# Interface Gradio
|
| 34 |
+
def interface_function():
|
| 35 |
+
# Appeler la fonction de génération et retourner la vidéo générée
|
| 36 |
+
video_file = generate_video()
|
| 37 |
+
return video_file
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
|
| 39 |
+
# Définir l'interface avec Gradio
|
| 40 |
+
gr.Interface(
|
| 41 |
+
fn=interface_function, # Fonction à exécuter
|
| 42 |
+
inputs=[], # Pas d'entrée utilisateur
|
| 43 |
+
outputs=gr.Video(label="Vidéo générée"), # Vidéo en sortie
|
| 44 |
+
title="Générateur de Vidéos avec IA",
|
| 45 |
+
description="Cliquez sur le bouton ci-dessous pour générer une vidéo aléatoire avec l'IA."
|
| 46 |
+
).launch(server_name="0.0.0.0", server_port=7860)
|