ソース情報
- リポジトリ
- JohnNuwan/EVA_CORE
- ソースの最終更新活動
- 2026年7月18日 08:30
- 検出された SKILL.md の言語
- フランス語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill jepa-joint-embedding-predictiveコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
SOC 職業分類に基づく
SKILL.md を表示中
| name | jepa-joint-embedding-predictive |
| description | Architecture JEPA et applications de vision industrielle. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| metadata | {"EVA":{"maturity":"pilot","tags":["jepa","yann-lecun","meta-ai","self-supervised-learning","computer-vision","video-understanding","world-model","industry40"],"related_skills":["ai-foundations-exploration","predictive-maintenance-ml","computer-vision-quality","robotics-kuka","robotics-fanuc","robotics-abb","jepa-to-production"]}} |
JEPA est une architecture d'apprentissage auto-supervisé conçue par Yann LeCun (Meta AI / FAIR) depuis 2022, brique centrale de sa vision pour l'AMI (Advanced Machine Intelligence). Contrairement aux approches génératives (prédire les pixels) ou contrastives (aligner des vues), JEPA prédit la représentation abstraite d'une partie masquée à partir de la représentation des parties visibles, dans l'espace latent.
[Image/Vidéo] → Context Encoder → Embedding des parties visibles
↓
Predictor → Embedding prédit (parties masquées)
↓
Target Encoder → Embedding réel (vérité terrain)
↓
Loss = ||prédit - réel||²
github.com/facebookresearch/ijepa (3.5k stars, archivé)github.com/facebookresearch/jepa (4k stars)github.com/facebookresearch/eb_jepa (729 stars)github.com/facebookresearch/jepa-wms (419 stars)github.com/facebookresearch/jepa-intuitive-physics (262 stars)github.com/facebookresearch/td_jepa (45 stars)github.com/facebookresearch/locate-3d (449 stars)Plans d'implémentation détaillés : voir
references/implementation-plans.mdpour le guide pas-à-pas EB-JEPA et I-JEPA (setup, code, API REST, intégration OPC UA, roadmap 8 semaines). Template MLOps de production : voir le skilljepa-to-productionpour le Dockerfile et les tests PyTest prêts au déploiement.
| Approche | Mécanisme | Problème | JEPA vs |
|---|---|---|---|
| Générative (MAE, VideoMAE) | Prédire les pixels masqués | Gaspille de la capacité sur les détails imprévisibles | JEPA ignore ces détails → plus efficace |
| Contrastive (SimCLR, DINO, MoCo) | Aligner les vues augmentées | Besoin d'augmentations agressives, risque de collapse | JEPA n'a pas besoin d'augmentations ni de negative pairs |
| Invariante (JEA, I-JEPA sans prédicteur) | Embeddings identiques | Pas de modélisation des relations spatiales | JEPA prédit les relations entre parties |
Problème : Les défauts de production sont rares → impossible de constituer un dataset équilibré.
Solution I-JEPA :
1. Pré-entraîner I-JEPA sur des images de pièces BONNES (non étiquetées)
2. Le modèle apprend la représentation "normale"
3. En production : si l'erreur de prédiction JEPA dépasse un seuil → anomalie
4. Pas besoin d'images de défauts pour l'entraînement
# Pseudo-code inspection qualité avec I-JEPA
def detect_anomaly(image, jepa_model, threshold=0.15):
# Masquer aléatoirement des patches
masked_image, mask = apply_mask(image)
# Prédire les représentations des patches masqués
predicted = jepa_model.predictor(
jepa_model.context_encoder(masked_image)
)
# Comparer avec les vraies représentations
target = jepa_model.target_encoder(image)
prediction_error = F.mse_loss(predicted, target[mask])
return prediction_error > threshold # True = anomalie
Problème : Surveiller une ligne 24/7, détecter les comportements anormaux.
Solution V-JEPA :
1. Pré-entraîner V-JEPA sur des séquences vidéo de production NORMALE
2. Le backbone apprend le flux "normal" de la ligne
3. En temps réel : erreur de prédiction élevée sur les portions masquées
→ comportement anormal (blocage, bourrage, vitesse anormale)
4. Alerte avant l'arrêt machine
Problème : Un robot doit comprendre les conséquences de ses actions.
Solution V-JEPA :
- V-JEPA apprend un modèle prédictif du monde physique
- Le robot peut "imaginer" le résultat d'une action avant de l'exécuter
- Applications : préhension adaptative, navigation AGV, évitement de collisions
Problème : Détecter l'usure avant la panne.
Solution I-JEPA + Sonde :
1. Pré-entraîner I-JEPA sur des images d'équipement en bon état
2. Geler le backbone, ajouter une sonde de régression fine
3. Quelques exemples annotés de niveaux d'usure suffisent
4. Prédiction continue du niveau d'usure
Problème : Des opérateurs surveillent des écrans HMI.
Solution I-JEPA :
- I-JEPA reconnaît les patterns normaux d'un écran HMI
- Détection automatique de configurations anormales
- Capture et classification automatique des écrans d'alarme
import torch
import torch.nn as nn
import torch.nn.functional as F
class JEPA(nn.Module):
"""Joint Embedding Predictive Architecture — version simplifiée."""
def __init__(self, embed_dim=768, predictor_depth=6, encoder_depth=12):
super().__init__()
self.embed_dim = embed_dim
# Context encoder : encode les patches visibles
self.context_encoder = ViT(depth=encoder_depth, embed_dim=embed_dim)
# Target encoder : encode les patches cibles (EMA du context encoder)
self.target_encoder = ViT(depth=encoder_depth, embed_dim=embed_dim)
self._init_target_encoder()
# Predictor : prédit les embeddings des patches masqués
self.predictor = nn.Sequential(
nn.Linear(embed_dim, embed_dim * 4),
nn.GELU(),
*[TransformerBlock(embed_dim * 4) for _ in range(predictor_depth)],
nn.Linear(embed_dim * 4, embed_dim),
)
def _init_target_encoder(self):
"""Initialise le target encoder comme copie du context encoder."""
for param_t, param_c in zip(
self.target_encoder.parameters(),
self.context_encoder.parameters()
):
param_t.data.copy_(param_c.data)
param_t.requires_grad =
():
param_t, param_c (
.target_encoder.parameters(),
.context_encoder.parameters()
):
param_t.data = momentum * param_t.data + ( - momentum) * param_c.data
():
context_embeddings = .context_encoder(x, mask=~mask)
torch.no_grad():
target_embeddings = .target_encoder(x, mask=)
predictions = .predictor(context_embeddings)
loss = F.mse_loss(
predictions[mask],
target_embeddings[mask]
)
loss
import random
def generate_block_mask(num_patches, aspect_ratio_scale=(0.75, 1.5),
scale_scale=(0.15, 0.2), seed=None):
"""
Génère un masque de blocs pour I-JEPA.
On masque ~15-20% des patches en blocs contigus.
Args:
num_patches: Nombre total de patches
aspect_ratio_scale: Échelle du ratio d'aspect du bloc
scale_scale: Échelle de la taille du bloc (fraction)
Returns:
mask: Tenseur booléen [num_patches] — True = masqué
"""
if seed is not None:
random.seed(seed)
mask = torch.zeros(num_patches, dtype=torch.bool)
target_area = random.uniform(*scale_scale) * num_patches
aspect_ratio = random.uniform(*aspect_ratio_scale)
h = int(round((target_area * aspect_ratio) ** 0.5))
w = int(round((target_area / aspect_ratio) ** 0.5))
h = min(h, int(num_patches ** 0.5))
w = min(w, int(num_patches ** 0.5))
top = random.randint(0, int(num_patches ** 0.5) - h)
left = random.randint(0, int(num_patches ** 0.5) - w)
for i in range(top, top + h):
for j in range(left, left + w):
idx = i * int(num_patches ** ) + j
idx < num_patches:
mask[idx] =
mask
class JEPAAnomalyDetector:
"""Détecteur d'anomalies basé sur l'erreur de prédiction JEPA."""
def __init__(self, jepa_model, threshold_percentile=95):
self.model = jepa_model
self.threshold_percentile = threshold_percentile
self.threshold = None
self.normal_errors = []
def fit_threshold(self, normal_images_loader):
"""Calibre le seuil sur des images normales."""
self.model.eval()
errors = []
with torch.no_grad():
for images in normal_images_loader:
for _ in range(5): # 5 masques aléatoires par image
mask = generate_block_mask(196) # 14x14 patches
loss = self.model(images, mask)
errors.append(loss.item())
self.threshold = torch.quantile(
torch.tensor(errors),
self.threshold_percentile / 100
)
print(f"Seuil d'anomalie calibré : {self.threshold:.4f}")
def predict(self, image, n_masks=10):
"""Détecte une anomalie sur une image.
Returns:
is_anomaly: bool
confidence: score d'anomalie (0-1)
"""
.model.()
errors = []
torch.no_grad():
_ (n_masks):
mask = generate_block_mask(, seed=_)
loss = .model(image.unsqueeze(), mask)
errors.append(loss.item())
mean_error = (errors) / (errors)
confidence = (mean_error / .threshold, )
is_anomaly = mean_error > .threshold
is_anomaly, confidence
Confondre JEPA avec un modèle génératif : JEPA ne génère pas de pixels. C'est un modèle prédictif dans l'espace latent. Ne pas s'attendre à ce qu'il remplisse les pixels manquants.
Masquage trop petit : Si on masque des patches isolés et non des blocs contigus, la tâche est trop facile → le modèle n'apprend rien de profond.
Masquage spatial uniquement pour la vidéo : Sans masquage temporel, la frame précédente/suivante donne la réponse → pas d'apprentissage.
Données d'entraînement insuffisantes : JEPA a besoin de diversité. Pour l'industrie, filmer plusieurs cycles de production sous différents éclairages/angles.
Seuil d'anomalie non calibré : Toujours calibrer le seuil sur un set de validation normal avant de déployer.
Licence CC BY-NC (I-JEPA, V-JEPA, JEPA-WMS) : Les checkpoints pré-entraînés Meta sont interdits en usage commercial. Stratégie de contournement : utiliser l'architecture (code open-source) et ré-entraîner from scratch sur données propriétaires. Voir references/implementation-plans.md section 2.1. Pour un déploiement sans contrainte de licence, préférer EB-JEPA (Apache 2.0).
Accès web bloqué par les moteurs de recherche : Google, Semantic Scholar et arXiv peuvent bloquer les requêtes automatisées (CAPTCHA, erreurs d'encodage). Utiliser le navigateur intégré avec browser_console pour extraire le contenu des pages rendues, ou les APIs directes (GitHub Raw, Hugging Face).
references/implementation-plans.md : Plans EB-JEPA & I-JEPA pour l'industriereferences/jepa-2026-landscape.md : Positionnement JEPA dans l'écosystème IA 2026
(Brain/Hands, Agent Skills, Context Engineering, Modèles)