Leo8613 commited on
Commit
2d93c2f
·
verified ·
1 Parent(s): 44f6511

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -36
app.py CHANGED
@@ -1,48 +1,46 @@
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()
 
 
 
 
 
 
 
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)