Habr AI→ original

YOLO et Redis : comment mettre en cache les résultats de détection vidéo

YOLO traite la vidéo, mais en cas de panne du réseau ou de la caméra, tout recommence depuis le début — le GPU travaille inutilement. La mise en cache dans Redi

YOLO et Redis : comment mettre en cache les résultats de détection vidéo
Source : Habr AI. Collage: Hamidun News.
◐ Écouter l'article

Lors du traitement d'un flux vidéo avec YOLO, vous rencontrez un problème désagréable : vous lancez une vidéo de quarante minutes, le modèle détecte fidèlement des personnes, des voitures, des chiens dans chaque frame. À la vingtième minute, le réseau s'effondre, une caméra de surveillance défaille ou l'électricité est simplement coupée. Vous redémarrez le système. Et voilà le problème : YOLO commence à traiter la vidéo à zéro, depuis le début. Les vingt minutes d'inférence se répètent, le GPU tourne à vide, et ainsi le temps et les ressources électriques sont perdus.

Pourquoi C'est Douloureux

Chaque passage de YOLO à travers une image vidéo nécessite de la puissance de calcul. Sur GPU, c'est cher — littéralement en consommant de l'énergie, au sens figuré en bloquant le traitement et en retardant le calendrier. Sans cache, le système ne se souvient pas de ce qu'il a déjà calculé.

C'est comme recalculer à partir de zéro : si le traitement était à l'image 1200, et que le serveur plante, au redémarrage vous commencez à l'image 0 et trouvez à nouveau des personnes et des voitures dans les 1200 premières images. En même temps, vous perdez les informations de suivi — les ID d'objets sur ce segment vidéo. Si vous devez suivre une personne spécifique dans toute la vidéo, la perte de données signifie des ruptures de trajectoire et des ID mélangés entre objets.

Le problème est aggravé par l'échelle : sur une surveillance d'une demi-journée, où 100+ heures de matériel sont traitées par jour, perdre les progrès signifie une augmentation proportionnelle des coûts.

Mise en Cache dans Redis

Redis est un stockage en mémoire qui fonctionne rapidement (latence en millisecondes). L'idée : mémoriser les résultats de détection pour chaque image et récupérer au redémarrage. Le système met en cache :

  • Résultats de détection pour chaque image (liste d'objets, leurs coordonnées, classe)
  • ID de suivi pour chaque objet entre les images (connexion entre le même objet dans les images adjacentes)
  • Horodatages de traitement (quand chaque image a été traitée)
  • Statut de traitement (quelle image a été la dernière complétée)

Au redémarrage, le système vérifie Redis, trouve la dernière image traitée et continue à partir de ce point. GPU ne passe pas de temps à répéter l'inférence pour les anciennes images, uniquement pour les nouvelles.

Solution Pratique

L'article propose des snippets Python prêts à l'emploi qui peuvent être copiés et utilisés immédiatement. Le code résout trois tâches :

  • Mise en cache des résultats de YOLO dans Redis avec une clé comme `video:{video_id}:frame:{frame_num}` et TTL pour le nettoyage des anciennes données
  • Récupération au redémarrage : le système vérifie Redis, ignore les images déjà traitées, commence avec la nouvelle
  • Suivi des ID d'objets entre les images avec stockage des liens en cache

L'auteur partage l'expérience du monde réel : le système devient tolérant aux pannes, la vidéo est traitée sans perte de données sur les trajectoires des objets. En pratique, GPU économise 30–50% du temps de traitement sur les longues vidéos en sautant l'inférence répétée.

Ce Que Cela Signifie

Pour les systèmes d'analyse vidéo en production, c'est critique. Caméras de surveillance, analyse sportive, systèmes autonomes — partout YOLO + Redis économise temps et argent sur l'électricité et le calcul. Ajoutez simplement Redis à l'architecture, et les défaillances réseau deviennent un problème oublié.

ZK
Hamidun News
Actualités IA sans bruit. Sélection éditoriale quotidienne de plus de 400 sources. Produit de Zhemal Khamidun, Head of AI chez Alpina Digital.
Qu'en pensez-vous ?
Chargement des commentaires…