Spaces:
Build error
Build error
| import tensorflow as tf | |
| import numpy as np | |
| import cv2 | |
| import gradio as gr | |
| import os | |
| # Fonction pour chercher le modèle dans tout le système de fichiers | |
| def find_model_file(filename="generator.h5"): | |
| for root, dirs, files in os.walk("/"): | |
| if filename in files: | |
| return os.path.join(root, filename) | |
| return None | |
| # Fonction pour charger le modèle en toute sécurité | |
| def load_model_safe(model_path): | |
| try: | |
| model = tf.keras.models.load_model(model_path, compile=False) | |
| return model | |
| except ValueError: | |
| return None | |
| # Chercher le modèle 'generator.h5' dans le système | |
| model_path = find_model_file("generator.h5") | |
| # Vérifier si le modèle est trouvé et charger | |
| if model_path is not None: | |
| generator = load_model_safe(model_path) | |
| else: | |
| generator = None | |
| # Fonction pour générer une vidéo à partir du générateur | |
| def generate_video(): | |
| if generator is None: | |
| # Créer un fichier d'erreur générique sans message personnalisé | |
| error_file_path = "/content/error_file.txt" | |
| with open(error_file_path, "w") as f: | |
| pass # Crée un fichier vide | |
| return error_file_path | |
| # 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 | |
| # Vérifier la forme des données générées | |
| if len(generated_video.shape) != 4 or generated_video.shape[0] != 16: | |
| return "Erreur dans les dimensions de la vidéo générée." | |
| # Créer le répertoire pour la vidéo | |
| output_dir = "/content/generated_videos" | |
| os.makedirs(output_dir, exist_ok=True) | |
| filename = os.path.join(output_dir, "generated_video.mp4") | |
| # Enregistrer la vidéo avec OpenCV | |
| fourcc = cv2.VideoWriter_fourcc(*'mp4v') # Codec vidéo | |
| height, width, _ = generated_video[0].shape | |
| out = cv2.VideoWriter(filename, fourcc, 15, (width, height)) # 15 FPS | |
| # Ajouter les frames dans le fichier vidéo | |
| for frame in generated_video: | |
| out.write(frame) | |
| out.release() | |
| # Retourner le chemin de la vidéo générée | |
| 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.File(label="Vidéo générée"), # Utiliser gr.File pour le téléchargement du fichier | |
| 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) |