Spaces:
Sleeping
Sleeping
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)
|