소스 정보
- 저장소
- 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명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? 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)