Spaces:
Runtime error
Runtime error
| import torch | |
| import gradio as gr | |
| import cv2 | |
| import numpy as np | |
| # Chemin vers le modèle | |
| MODEL_PATH = 'ColorizeVideo_gen.pth' | |
| # Charger le modèle | |
| def load_model(model_path): | |
| model = torch.load(model_path, map_location=torch.device('cpu')) # Charger sur le CPU | |
| model.eval() # Met le modèle en mode évaluation | |
| return model | |
| # Prétraitement de l'image | |
| def preprocess_frame(frame): | |
| # Redimensionner et normaliser | |
| frame = cv2.resize(frame, (224, 224)) # Ajustez la taille si nécessaire | |
| frame = frame / 255.0 # Normaliser | |
| input_tensor = torch.from_numpy(frame.astype(np.float32)).permute(2, 0, 1) # Convertir en format Tensor | |
| return input_tensor.unsqueeze(0) # Ajouter une dimension de lot | |
| # Traitement de la vidéo | |
| def process_video(model, video_path): | |
| cap = cv2.VideoCapture(video_path) | |
| fourcc = cv2.VideoWriter_fourcc(*'mp4v') | |
| output_path = "output_video.mp4" | |
| out = cv2.VideoWriter(output_path, fourcc, 30.0, (int(cap.get(3)), int(cap.get(4)))) | |
| while cap.isOpened(): | |
| ret, frame = cap.read() | |
| if not ret: | |
| break | |
| # Prétraiter le cadre | |
| input_tensor = preprocess_frame(frame) | |
| # Faire des prédictions | |
| with torch.no_grad(): | |
| predictions = model(input_tensor) | |
| # Traiter les prédictions et convertir en image | |
| output_frame = (predictions.squeeze().permute(1, 2, 0).numpy() * 255).astype(np.uint8) | |
| # Écrire le cadre traité dans la sortie | |
| out.write(output_frame) | |
| cap.release() | |
| out.release() | |
| return output_path | |
| # Interface Gradio | |
| def colorize_video(video): | |
| model = load_model(MODEL_PATH) | |
| output_video_path = process_video(model, video.name) # Utiliser le nom pour lire la vidéo | |
| return output_video_path | |
| # Configuration de l'interface Gradio | |
| iface = gr.Interface( | |
| fn=colorize_video, | |
| inputs=gr.Video(label="Téléchargez une vidéo"), | |
| outputs=gr.Video(label="Vidéo colorisée"), | |
| title="Colorisation de Vidéos", | |
| description="Chargez une vidéo en noir et blanc et utilisez le modèle de colorisation pour obtenir une vidéo colorisée." | |
| ) | |
| if __name__ == '__main__': | |
| iface.launch() | |