Spaces:
Sleeping
Sleeping
import tensorflow as tf | |
import numpy as np | |
import cv2 | |
import gradio as gr | |
# Fonction pour charger le modèle sans 'batch_shape' | |
def load_model_safe(model_path): | |
try: | |
# Charger le modèle sans compilation pour éviter des erreurs liées au batch_shape | |
model = tf.keras.models.load_model(model_path, compile=False) | |
return model | |
except ValueError as e: | |
print(f"Erreur lors du chargement du modèle: {e}") | |
return None | |
# Charger le modèle en toute sécurité | |
generator = load_model_safe('generator.h5') # Assurez-vous que le fichier 'generator.h5' est dans le même répertoire | |
# Vérifier que le modèle a bien été chargé | |
if generator is None: | |
print("Le modèle n'a pas pu être chargé. Vérifiez le fichier 'generator.h5'.") | |
else: | |
print("Modèle chargé avec succès.") | |
# Fonction pour générer une vidéo à partir du générateur | |
def generate_video(): | |
if generator is None: | |
return "Le modèle n'a pas pu être chargé." | |
# Générer un bruit aléatoire (entrée pour le générateur) | |
noise = np.random.normal(0, 1, (1, 16, 64, 64, 3)) # Exemple de bruit pour 16 frames de 64x64x3 | |
generated_video = generator.predict(noise) # Générer la vidéo | |
# Normaliser les données générées | |
video = (generated_video[0] * 255).astype(np.uint8) # Convertir en entier 8 bits | |
filename = "/content/generated_video.mp4" | |
# Sauvegarder la vidéo | |
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec vidéo | |
height, width, _ = video[0].shape | |
out = cv2.VideoWriter(filename, fourcc, 15, (width, height)) # 15 FPS | |
# Ajouter les frames dans le fichier vidéo | |
for frame in video: | |
out.write(frame) | |
out.release() | |
return filename | |
# Interface Gradio | |
def interface_function(): | |
# Appeler la fonction de génération et retourner la vidéo générée | |
video_file = generate_video() | |
return video_file | |
# Définir l'interface avec Gradio | |
gr.Interface( | |
fn=interface_function, # Fonction à exécuter | |
inputs=[], # Pas d'entrée utilisateur | |
outputs=gr.Video(label="Vidéo générée"), # Vidéo en sortie | |
title="Générateur de Vidéos avec IA", | |
description="Cliquez sur le bouton ci-dessous pour générer une vidéo aléatoire avec l'IA." | |
).launch(server_name="0.0.0.0", server_port=7860) |