Computer Vision : apprendre aux machines à voir (et à se tromper différemment de nous)
Ou : Pourquoi un modèle qui reconnaît un chat sur mille photos peut être trompé par trois pixels déplacés
Vous regardez une photo et vous voyez un chat. Un ordinateur regarde la même photo et voit une matrice de nombres — 1 920 × 1 080 pixels, chacun encodé en trois valeurs (rouge, vert, bleu). Pour lui, « un chat » et « trois millions de nombres entre 0 et 255 » sont la même chose. Le défi de la computer vision (vision par ordinateur), c’est de passer des nombres au sens.
C’est un des plus vieux domaines de l’IA. En 1966, le MIT lançait le « Summer Vision Project » avec l’objectif de « résoudre la vision par ordinateur pendant l’été ». Soixante ans plus tard, le problème n’est pas résolu — mais on a fait suffisamment de progrès pour que les voitures se conduisent (presque) seules, que les médecins aient des assistants radiologiques, et que votre téléphone sache faire la mise au point sur votre visage.
Des pixels au sens — comment les machines apprennent à voir
Les tâches fondamentales
La computer vision n’est pas une seule tâche mais un ensemble de problèmes, chacun avec ses algorithmes et ses défis :
| Tâche | Ce qu’elle fait | Exemple |
|---|---|---|
| Classification | « Qu’est-ce qu’il y a dans cette image ? » | Photo → « chat » |
| Détection d’objets | « Où sont les objets et que sont-ils ? » | Boîtes autour de chaque objet + étiquette |
| Segmentation sémantique | « Quel est le type de chaque pixel ? » | Chaque pixel étiqueté (route, voiture, piéton) |
| Segmentation d’instance | « Quels pixels appartiennent à quel objet ? » | Chaque voiture individuellement identifiée |
| Estimation de pose | « Quelle est la posture de cette personne ? » | Squelette articulé superposé |
| OCR | « Quel texte y a-t-il dans cette image ? » | Photo de panneau → texte extrait |
L’ère des CNN : les filtres qui voient
Avant le deep learning, la computer vision reposait sur des features manuelles — des filtres conçus par des humains pour détecter des bords, des coins, des textures. SIFT, HOG, Haar cascades — des noms qui évoquent une autre époque.
Tout a changé en 2012, quand AlexNet — un réseau de neurones convolutif (CNN) entraîné sur ImageNet — a écrasé la compétition de classification d’images avec une marge sans précédent. L’erreur est passée de ~25% à ~16% en un an. Les features manuelles sont devenues obsolètes du jour au lendemain.
Les CNN fonctionnent en empilant des couches de filtres convolutifs — de petites matrices (3×3, 5×5 pixels) qui balayent l’image pour détecter des patterns locaux. Les premières couches apprennent à détecter des bords et des contours. Les couches intermédiaires combinent ces bords en formes — des yeux, des oreilles, des roues. Les couches profondes reconnaissent des objets complets.
Ce qui est remarquable, c’est que personne ne programme ces filtres. Le réseau les apprend à partir des données. Montrez-lui assez de photos de chats, et il découvre tout seul que les oreilles pointues et les moustaches sont des features discriminantes1.
YOLO, R-CNN : voir et situer en temps réel
La classification dit « il y a un chat ». La détection d’objets dit « il y a un chat ici et un chien là ». C’est la tâche qui intéresse les voitures autonomes, la vidéosurveillance, la robotique.
Deux familles d’algorithmes dominent :
R-CNN et ses variantes (Faster R-CNN, Mask R-CNN) — approche en deux étapes : d’abord proposer des régions candidates, puis classifier chaque région. Plus précis, plus lent.
YOLO (You Only Look Once) — approche en une seule étape : diviser l’image en grille, prédire les boîtes et les classes simultanément. Moins précis, beaucoup plus rapide. YOLO traite 30-60 images par seconde — du temps réel.
Le choix entre les deux dépend du contexte : YOLO pour la vidéo en temps réel, R-CNN pour l’analyse d’images où la précision prime sur la vitesse.
Vision Transformer : l’attention remplace la convolution
L’histoire se répète. Comme en NLP, le Transformer est venu remplacer l’architecture dominante.
Le Vision Transformer (ViT), proposé par Google en 2020, découpe l’image en patches (typiquement 16×16 pixels), convertit chaque patch en embedding, et applique le mécanisme d’attention standard du Transformer. Chaque patch « regarde » tous les autres patches pour comprendre le contexte global de l’image.
Les CNN ont un biais inductif pour les patterns locaux (un filtre 3×3 ne voit que les pixels voisins). Le ViT n’a pas ce biais — il peut capturer des relations à longue distance dès la première couche. C’est un avantage pour les images complexes, et un handicap quand les données sont limitées (le modèle a besoin de plus de données pour apprendre ce que les CNN savent d’office).
Les modes d’échec
La computer vision a des failles que la vision humaine n’a pas :
Les exemples adversariaux — modifier quelques pixels de façon imperceptible pour un humain peut faire classifier un panda comme un gibbon avec 99% de confiance. Ce n’est pas un bug théorique — c’est un vecteur d’attaque réel contre les systèmes de sécurité basés sur la vision.
Le biais du dataset — un modèle entraîné principalement sur des photos de personnes à peau claire aura des performances dégradées sur les personnes à peau foncée. Ce n’est pas hypothétique — c’est documenté dans les systèmes de reconnaissance faciale déployés en production.
La fragilité contextuelle — un modèle qui reconnaît parfaitement des voitures vues de face peut échouer sur des voitures vues de dessus (angle absent du dataset d’entraînement). La vision humaine généralise naturellement ; la vision par ordinateur ne généralise que dans les directions couvertes par les données.
Le dialogue du faux positif
DevOps Dave : La caméra de surveillance détecte les intrusions avec 99.5% de précision.
Security Sarah : Sur le dataset de test. Et en production ?
DevOps Dave : Elle déclenche 12 alertes par nuit.
Security Sarah : Combien sont de vraies intrusions ?
DevOps Dave : … Zéro. C’est des chats, des ombres, et une fois un sac plastique.
Security Sarah : 99.5% de précision sur le dataset, 0% sur le terrain. Bienvenue en computer vision production.
Tableau récapitulatif
| Concept | En une phrase |
|---|---|
| Computer vision | Domaine de l’IA qui apprend aux machines à interpréter des images et des vidéos. |
| CNN | Réseau de neurones avec des filtres convolutifs — l’architecture historique de la vision. |
| Détection d’objets | Localiser et identifier chaque objet dans une image (YOLO, R-CNN). |
| Segmentation | Étiqueter chaque pixel de l’image (sémantique, instance). |
| Vision Transformer (ViT) | Appliquer l’architecture Transformer aux images découpées en patches. |
| Exemples adversariaux | Images modifiées de façon imperceptible pour tromper le modèle. |
Le mot de la fin
La computer vision est le domaine de l’IA où l’écart entre la performance en laboratoire et la performance en production est le plus grand. Un modèle avec 99% de précision sur ImageNet peut être inutilisable dans une usine où l’éclairage change, les pièces sont sales, et la caméra vibre.
C’est aussi le domaine qui illustre le mieux le paradoxe de Moravec : ce qui est facile pour un humain (reconnaître un visage, estimer une distance, identifier un objet partiellement caché) est extraordinairement difficile pour une machine. Et ce qui est facile pour une machine (analyser 10 000 images par seconde, détecter des différences subtiles sur des radiographies) est impossible pour un humain.
La computer vision et la vision humaine ne font pas la même chose. Elles ne se trompent même pas de la même façon. Et c’est justement ce qui les rend complémentaires.
La visualisation des filtres appris par un CNN est fascinante. Les premières couches apprennent systématiquement les mêmes types de filtres, quel que soit le dataset : détecteurs de bords horizontaux, verticaux, diagonaux, détecteurs de couleurs, détecteurs de fréquence. C’est comme si le réseau « redécouvrait » les filtres de Gabor que les neuroscientifiques avaient identifiés dans le cortex visuel humain. La machine a convergé vers la même solution que l’évolution — ce qui est soit une coïncidence remarquable, soit la preuve que c’est la bonne solution. ↩︎