CLIP (Contrastive Language-Image Pre-training)
iaDéfinition
CLIP (Contrastive Language-Image Pre-training) est un modele de vision fondateur developpe par OpenAI (Radford et al., 2021) qui apprend a associer des images et des descriptions textuelles via un apprentissage contrastif auto-supervise sur 400 millions de paires image-texte collectees sur le web. CLIP est devenu le composant encodeur visuel de reference dans l'ecosysteme des modeles generatifs et multimodaux. Le principe d'entrainement : pour un batch de N paires (image, texte), CLIP entraine simultanement un encodeur d'images et un encodeur de texte pour maximiser la similarite cosinus entre les N paires authentiques et minimiser la similarite pour les N2-N paires negatives. Les deux encodeurs apprennent un espace d'embedding commun. Le resultat est remarquable : CLIP apprend des representations visuelles zero-shot transferables sur presque n'importe quelle tache de classification d'images, sans classifier dedie. Sur ImageNet, CLIP zero-shot egale les meilleures ResNets fine-tunees sur des millions d'images labelisees. CLIP est aujourd'hui le composant encodeur textuel de Stable Diffusion (SDXL utilise CLIP-L et OpenCLIP-G), l'encodeur visuel de LLaVA (CLIP-L-336px), et le fondement de systemes de recherche d'images par description textuelle. Des variantes ameliorees incluent OpenCLIP (LAION, open-source), SigLIP (Google, meilleure performance sur les documents), et EVA-CLIP (BAAI, 18B parametres). Pour la cybersecurite, CLIP est utilisable pour detecter des contenus visuels specifiques (logos malveillants, interfaces de phishing) via recherche semantique d'images.
Classification zero-shot avec CLIP
from PIL import Image
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained('openai/clip-vit-large-patch14')
processor = CLIPProcessor.from_pretrained('openai/clip-vit-large-patch14')
image = Image.open('suspicious_webpage.png')
labels = [
'legitimate bank login page',
'phishing page imitating a bank',
'social media login'
]
inputs = processor(text=labels, images=image, return_tensors='pt', padding=True)
outputs = model(**inputs)
probs = outputs.logits_per_image.softmax(dim=1)
# Resultat: {'phishing page imitating a bank': 0.78, ...}Recherche d'images par texte
# Indexer une base d'images avec embeddings CLIP
image_embeddings = []
for img_path in image_paths:
img = Image.open(img_path)
inputs = processor(images=img, return_tensors='pt')
emb = model.get_image_features(**inputs).detach().numpy()
image_embeddings.append(emb)
# Requete textuelle
query = 'network topology diagram with firewall'
text_inputs = processor(text=[query], return_tensors='pt')
text_emb = model.get_text_features(**text_inputs).detach().numpy()
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h