Spaces:
Sleeping
Sleeping
File size: 3,150 Bytes
e568a88 2d93c2f ce67fb9 e568a88 ce67fb9 f45ee40 b389d1d f45ee40 e568a88 ce67fb9 f45ee40 ce67fb9 f45ee40 ce67fb9 f45ee40 2d93c2f f45ee40 b389d1d f45ee40 2d93c2f d297eb3 e568a88 ce67fb9 b389d1d ce67fb9 e568a88 ce67fb9 2d93c2f b389d1d 2d93c2f b389d1d e568a88 2d93c2f ce67fb9 2d93c2f e568a88 2d93c2f e568a88 2d93c2f c3ed075 2d93c2f |
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
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"):
# Parcourir tous les répertoires du serveur pour trouver le fichier
for root, dirs, files in os.walk("/"):
if filename in files:
model_path = os.path.join(root, filename)
return model_path
return None
# Fonction pour charger le modèle en toute sécurité
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:
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:
# Retourner un fichier d'erreur générique si le modèle n'est pas trouvé
error_file_path = "/content/error_file.txt"
with open(error_file_path, "w") as f:
f.write("Le modèle n'a pas pu être chargé.")
# Retourner le fichier d'erreur
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) |