Machine LearningComputer VisionVL-JEPAQwenLoRAVideo Search

Implémentation de VL-JEPA : Moteur de Recherche d'Actions Vidéo State-of-the-Art pour 10$

6 min de lecture
Implémentation de VL-JEPA : Moteur de Recherche d'Actions Vidéo State-of-the-Art pour 10$

Le défi : Passer de l'image à l'action

Avec mon projet SemantiTube (un moteur de recherche permettant de faire
"CTRL+F" dans une vidéo YouTube), j'avais déjà réussi à chercher des scènes
visuelles grâce au modèle SigLIP de Google. Cependant, SigLIP cherche des
éléments statiques dans l'image.

Pour aller plus loin, je voulais pouvoir chercher des actions spécifiques
("une personne allume la lumière", "quelqu'un ouvre la porte"). Cela
nécessitait un modèle capable de comprendre la dynamique temporelle de la vidéo,
pas juste une succession d'images fixes. C'est le domaine du Temporal Moment
Retrieval
.

La solution : L'approche VL-JEPA

L'approche est pertinente car elle est non-générative : au lieu d'essayer de
reconstruire des pixels ou de générer du texte, le modèle aligne directement les
encodages vidéo et texte dans un espace latent. C'est beaucoup plus léger en
inférence et bien adapté à la recherche vectorielle en production.

Comme le code source officiel n'était pas disponible au moment où j'en avais
besoin, j'ai choisi d'en faire ma propre implémentation en me basant sur
leur publication.

Une Architecture Customisée et Allégée

L'objectif n'était pas d'entraîner un modèle colossal depuis zéro, mais de
tester si cette méthode fonctionnait de manière plus simple et accessible,
en assemblant des modèles Open Source déjà performants.

Voici comment j'ai structuré le modèle :

1. Encodeurs Gelés (Frozen)

  • Vidéo (X-Encoder) : J'utilise le modèle de base V-JEPA 2 (ViT-L) de
    Meta. Il génère des représentations temporelles complexes. Je l'ai gardé gelé
    pour économiser de la mémoire (la vidéo, c'est lourd !).
  • Texte (Y-Encoder) : Pour générer la cible à atteindre, j'utilise un modèle
    compact et efficace, all-MiniLM-L6-v2, également gelé.

2. Le Prédicteur : Un SLM avec LoRA

Le rôle du prédicteur de l'architecture est de prendre la représentation vidéo
et les tokens de la requête pour tenter de trouver l'embedding sémantique (les
données de MiniLM). Plutôt que d'entraîner un réseau de neurones standard, j'ai
adapté un "Small Language Model" performant : Qwen 2.5 (0.5B).

Pour que cela tourne sur de petites configurations, j'y applique LoRA
(Low-Rank Adaptation)
. Résultat : je n'entraîne que 0,2 % des paramètres,
le reste est figé.

L'Entraînement : Une approche économique

Grâce à mes optimisations d'architecture (modèles gelés + LoRA), les besoins en
calcul ont été largement réduits. J'ai entraîné le modèle sur le dataset
standard Charades-STA (dédié au Temporal Grounding) en louant un GPU via
Vast.ai.

Le coût total de mon entraînement de recherche ? Environ 5 dollars.

Tout mon pipeline MLOps est packagé et reproductible :

  • Suivi complet des métriques et des checkpoints avec Weights & Biases
    (W&B)
    .
  • Scripting prêt au Cloud et gestion ultra-rapide des dépendances avec uv.
  • Compatible exécution locale MPS (Apple Silicon M1/M2/M3).

En conclusion

Une fois l'entraînement terminé, l'inférence locale utilise un système de
fenêtre glissante (sliding window) et un NMS (Non-Maximum Suppression) pour
isoler le moment correspondant à la requête dans la vidéo. De ce que j'ai pu
tester, les résultats sont très satisfaisants.

Ce projet m'a surtout permis de voir qu'il est possible de prendre une méthode
de recherche récente
, de l'adapter avec des modèles plus légers, et de
l'entraîner de façon très économique en ciblant uniquement les paramètres
nécessaires.