File size: 1,772 Bytes
e568a88
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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()