À retenir
- La vision par ordinateur est utile lorsque le modèle résout une tâche de perception claire, pas seulement lorsque l'image de démonstration est impressionnante.
- La qualité des données, les étiquettes, les conditions de la caméra et les cas limites déterminent généralement si un système de vision fonctionne dans le monde réel.
- Le test pratique est simple: évaluez le modèle sur des entrées imparfaites, pas seulement sur les exemples propres présentés dans les articles scientifiques et les démonstrations.
Regardez la vidéo et soutenez-moi sur YouTube!
Si vous avez cliqué sur cet article, vous vous intéressez certainement aux applications de vision par ordinateur comme la classification et la segmentation d’images,
la détection d’objets et des tâches plus complexes comme la reconnaissance faciale, la génération d’images ou même le transfert de style. Comme vous le savez peut-être déjà, grâce à la puissance croissante de nos ordinateurs, la plupart de ces applications reposent maintenant sur des réseaux de neurones profonds semblables, que nous appelons souvent des « modèles d’intelligence artificielle ». Les réseaux profonds employés dans ces différentes applications de vision présentent quelques différences, mais ils utilisent encore aujourd’hui la même base de convolutions introduite en 1989 par Yann LeCun. Le changement majeur vient plutôt de notre puissance de calcul, rendue possible par les récentes avancées des processeurs graphiques.

LeNet, LeCun et coll. (1989)
Une courte introduction aux réseaux de neurones convolutifs

Un réseau de neurones convolutif sur le jeu de données MNIST. Image de msvanjie.
Pour passer rapidement en revue l’architecture, la convolution est, comme son nom l’indique, un processus dans lequel une image originale, ou une image vidéo, qui constitue l’entrée de notre application de vision par ordinateur, est convoluée à l’aide de filtres. Ces filtres détectent de petites caractéristiques importantes de l’image, comme les contours. Le réseau apprend de façon autonome les valeurs des filtres qui détectent les caractéristiques importantes pour obtenir la sortie recherchée. Dans une tâche de classification, cette sortie pourrait être le nom de l’objet présent dans une image précise envoyée en entrée.


Une convolution. Image de Irhum Shafkat
Ces filtres sont habituellement des carrés de 3 par 3 ou de 5 par 5 pixels, ce qui leur permet de détecter la direction d’un contour: vers la gauche, la droite, le haut ou le bas. Comme vous pouvez le voir dans cette image, le processus de convolution calcule un produit scalaire entre le filtre et les pixels qui se trouvent devant lui. Il s’agit essentiellement d’additionner tous les pixels du filtre multipliés par les valeurs des pixels de l’image aux positions correspondantes. Le filtre se déplace ensuite vers la droite et recommence pour convoluer l’image entière. Une fois le processus terminé, ces caractéristiques convoluées forment la sortie de la première couche de convolution. Nous appelons cette sortie une carte de caractéristiques. Nous répétons le processus avec de nombreux autres filtres et obtenons plusieurs cartes de caractéristiques, soit une pour chaque filtre utilisé pendant la convolution. Plusieurs cartes nous donnent plus d’information sur l’image. Surtout, elles nous donnent davantage d’information que nous pouvons apprendre pendant l’entraînement, puisque ce sont précisément ces filtres que nous cherchons à apprendre pour accomplir notre tâche. Toutes ces cartes sont envoyées comme entrées à la couche suivante, qui produit encore plusieurs cartes plus petites. Plus nous avançons dans le réseau, plus les cartes rapetissent à cause de la nature des convolutions et plus l’information qu’elles contiennent devient générale. À la fin du réseau, de nombreuses cartes contiennent donc de l’information extrêmement générale sur le contenu de l’image. Cette information sert à la classification ou, dans une architecture GAN, à construire un code latent qui représente l’information présente dans l’image afin d’en générer une nouvelle. C’est ce que nous appelons l’information encodée.

Entraînement d’un GAN et représentation de l’espace latent. Image de l’auteur.
Dans le cas de la classification d’images, nous pouvons dire simplement qu’à la fin du réseau, ces petites cartes de caractéristiques contiennent de l’information sur la présence de chacune des classes possibles. Elles indiquent par exemple s’il s’agit d’un chien, d’un chat ou d’une personne. Bien sûr, cette explication est extrêmement simplifiée et d’autres étapes sont nécessaires, mais je trouve qu’elle résume assez fidèlement ce qui se passe dans un réseau de neurones convolutif profond.
Si vous suivez mes articles et mes publications, vous savez que les réseaux de neurones profonds ont démontré leur puissance à de nombreuses reprises. Ils possèdent toutefois aussi des faiblesses que nous ne devrions pas essayer de cacher. Comme tout dans la vie, les réseaux profonds ont des forces et des faiblesses. Leurs forces sont largement partagées, tandis que leurs faiblesses sont souvent omises, voire écartées par les entreprises et même par certains chercheurs.
Les réseaux profonds: forces et faiblesses
Cet article scientifique d’Alan L. Yuille et Chenxi Liu vise à partager ouvertement tout ce qui concerne les réseaux profonds pour les applications de vision, leurs succès et les limites auxquelles nous devons nous attaquer. De plus, tout comme pour notre propre cerveau, nous ne comprenons toujours pas entièrement leur fonctionnement interne. Cette situation limite encore davantage leur utilisation, puisque nous ne pouvons ni maximiser leurs forces ni réduire leurs faiblesses.
Comme l’a dit O. Hobert:
C’est comme une carte routière qui indique où les voitures peuvent circuler, sans montrer quand ni où elles circulent réellement.
C’est un autre point abordé dans l’article. À quoi ressemblera l’avenir des algorithmes de vision par ordinateur? Comme vous le pensez peut-être, nous pourrions améliorer les applications de vision par ordinateur en comprenant mieux notre propre système visuel, en commençant par notre cerveau. C’est pourquoi les neurosciences sont si importantes pour l’IA. En effet, les réseaux profonds actuels sont étonnamment différents de notre propre système de vision. Premièrement, les humains peuvent apprendre à partir d’un nombre minime d’exemples en exploitant leur mémoire et les connaissances qu’ils ont déjà acquises. Nous pouvons également faire des déductions à partir de notre compréhension du monde et de ses propriétés physiques, ce qu’un réseau profond ne peut pas faire. En 1999, Gopnik et coll. expliquaient que les bébés ressemblent davantage à de petits scientifiques qui comprennent le monde en réalisant des expériences et en cherchant des explications causales aux phénomènes, plutôt qu’en recevant simplement des stimuli sous forme d’images comme les réseaux profonds actuels.

Nous, les humains, sommes beaucoup plus robustes. Nous pouvons facilement reconnaître un objet peu importe le point de vue, sa texture, les occlusions ou le nouveau contexte dans lequel il apparaît. Pour prendre un exemple concret, pensez simplement aux pénibles tests CAPTCHA que vous devez toujours remplir lorsque vous vous connectez à un site Web. Ces tests servent à détecter les robots, puisqu’ils sont très mauvais lorsque des occlusions comme celles-ci sont présentes.

Comme vous pouvez le voir ici, le réseau profond s’est trompé dans tous les exemples à cause du contexte de la jungle et du fait qu’un singe ne tient habituellement pas une guitare.
Cela se produit parce que cette situation ne figurait certainement pas dans le jeu de données d’entraînement. Bien sûr, cet exemple précis ne se produira peut-être pas très souvent dans le monde réel, même s’il était absent des données d’entraînement.

Yuille, A.L. et Liu, C. (2021).
Je montrerai plus loin des exemples plus concrets, auxquels il est plus facile de s’identifier et qui se sont déjà produits. Les réseaux profonds possèdent aussi des forces qu’il faut souligner. Ils peuvent nous surpasser en reconnaissance faciale parce que, jusqu’à récemment, les humains n’avaient pas l’habitude de voir plus de quelques milliers de personnes au cours de leur vie. Cette force vient toutefois avec une limite: les visages doivent être droits, centrés, clairs et sans occlusion. L’algorithme pourrait ne pas reconnaître votre meilleur ami à une fête d’Halloween s’il est déguisé en Harry Potter, même s’il ne porte que des lunettes et un éclair sur le front. Vous le reconnaîtriez instantanément et lui diriez: « Wow, ce n’est pas très original. On dirait que tu as simplement mis des lunettes. » De la même façon, ces algorithmes peuvent devenir des radiologues extrêmement précis… à condition que tous les paramètres ressemblent à ceux observés pendant l’entraînement. Dans ces conditions, ils surpasseront n’importe quel humain. La raison principale est que même les radiologues les plus expérimentés n’ont vu qu’un nombre assez limité de tomodensitométries dans leur vie. Comme le suggèrent les auteurs, cette supériorité peut aussi venir du fait que l’algorithme accomplit une tâche peu prioritaire pour les humains. Une application de vision par ordinateur sur votre téléphone peut, par exemple, reconnaître les centaines de plantes de votre jardin beaucoup mieux que la majorité d’entre nous, mais un botaniste peut certainement la surpasser, ainsi que nous tous réunis. Encore une fois, cette force vient avec un énorme problème lié aux données dont l’algorithme a besoin pour devenir aussi puissant. Comme le mentionnent les auteurs et comme nous le voyons souvent sur Twitter ou dans des titres d’articles, les jeux de données employés pour entraîner ces réseaux introduisent des biais, puisque:
Un algorithme ne vaut que le jeu de données sur lequel il est évalué et les mesures de performance utilisées.
Les réseaux profonds et le système de vision humain
Cette limite des jeux de données rend les réseaux de neurones profonds beaucoup moins polyvalents, flexibles et adaptatifs que notre propre système visuel. Contrairement à notre système visuel, qui détecte automatiquement les contours, produit une vision stéréoscopique binoculaire, réalise une segmentation sémantique, classe les objets et les scènes et estime la profondeur en 3D, un réseau profond ne peut être entraîné que pour une seule de ces tâches. En regardant simplement autour de vous, votre système visuel accomplit automatiquement toutes ces tâches avec une précision extrême, tandis qu’un réseau profond a du mal à atteindre une précision semblable sur une seule d’entre elles. Pourtant, même si cela nous semble sans effort, la moitié de nos neurones travaillent à traiter l’information et à analyser ce qui se passe.
Nous sommes encore loin d’imiter notre système de vision, malgré la profondeur actuelle de nos réseaux. Mais est-ce vraiment l’objectif de nos algorithmes? Vaut-il mieux les employer comme des outils capables de compenser nos faiblesses? Je ne saurais le dire. Je suis toutefois certain que nous voulons nous attaquer aux limites des réseaux profonds qui peuvent avoir de graves conséquences, plutôt que de les ignorer. Je vais présenter des exemples concrets de ces conséquences juste après avoir introduit ces limites. L’une des plus importantes est la dépendance aux données. Le manque de précision mentionné plus tôt vient principalement de la différence entre les données utilisées pour entraîner l’algorithme et ce qu’il rencontre dans la vie réelle. Comme vous le savez, un algorithme doit voir énormément de données pour s’améliorer progressivement à la tâche pour laquelle il est entraîné. Nous appelons souvent ces données le jeu de données d’entraînement.
Le problème de la dépendance aux données

Photo de Franki Chamaki sur Unsplash
Cette différence entre le jeu de données d’entraînement et le monde réel pose problème parce que le monde réel est trop complexe pour être représenté fidèlement par un seul jeu de données. C’est pourquoi les réseaux profonds sont moins adaptatifs que notre système visuel. Les auteurs appellent ce phénomène l’explosion de la complexité combinatoire des images naturelles. Cette complexité vient de la multitude de variations possibles dans une image naturelle: la position de la caméra, l’éclairage, la texture, le matériau, l’arrière-plan, la position des objets, et bien plus encore. Des biais peuvent apparaître à chaque niveau de complexité absent du jeu de données. Vous comprenez alors pourquoi même les grands jeux de données semblent minuscules. Imaginons seulement 13 paramètres différents et limitons chacun d’eux à 1 000 valeurs possibles. Nous arrivons rapidement à ce nombre d’images différentes nécessaires pour représenter un seul objet: 10^39. Les jeux de données actuels ne couvrent qu’une poignée de toutes ces variations possibles pour chaque objet. Ils omettent donc la majorité des situations réelles que le modèle rencontrera une fois déployé.
Il faut aussi mentionner que cette variété limitée d’images peut amener le réseau à trouver des raccourcis pour détecter certains objets, comme nous l’avons vu plus tôt avec le singe. Il détectait une personne plutôt qu’un singe à cause de la guitare placée devant lui. De même, il reconnaît ici un oiseau plutôt qu’une guitare, probablement parce que le modèle n’a jamais vu de guitare devant une jungle. Nous appelons ce phénomène le « surajustement au contexte de l’arrière-plan ». L’algorithme ne se concentre pas sur le bon élément. Il trouve plutôt un motif dans les images elles-mêmes au lieu de l’objet qui nous intéresse. De plus, ces jeux de données sont tous construits à partir de photographies. Ils ne couvrent donc que certains angles et certaines poses, qui ne représentent pas toutes les orientations possibles dans le monde réel.
Les jeux de référence

À l’heure actuelle, nous utilisons des jeux de référence contenant les jeux de données les plus complexes possible pour comparer et évaluer les algorithmes. Comme vous vous en souvenez, ces données restent pourtant incomplètes par rapport au monde réel. Nous sommes malgré tout souvent satisfaits d’une précision de 99 % sur ces jeux de référence. Le premier problème est que le taux d’erreur de 1 % est calculé sur un jeu de référence qui ressemble au jeu d’entraînement, puisqu’il ne représente pas toute la richesse des images naturelles. C’est normal: il est impossible de représenter le monde réel avec une simple collection d’images. Il est trop complexe et contient trop de situations possibles. Les jeux de référence utilisés pour tester nos modèles et décider s’ils sont prêts à être déployés ne permettent donc pas vraiment de savoir comment ils fonctionneront *réellement*. Nous arrivons alors au deuxième problème: leur véritable comportement dans le monde réel.
Imaginons que le jeu de données de référence soit immense, qu’il couvre la majorité des cas et que nous obtenions réellement une précision de 99 %. Quelles seront les conséquences du 1 % des situations où l’algorithme échouera dans le monde réel? Ce pourcentage se traduira par des erreurs de diagnostic, des accidents, des erreurs financières ou, pire encore, des décès.
Pensons à une voiture autonome qui roule sous une pluie abondante. La pluie pourrait fortement perturber les capteurs de profondeur du véhicule et lui faire rater de nombreuses estimations. Confieriez-vous votre vie à ce « robotaxi » partiellement aveugle?
Je ne crois pas que je le ferais. De même, feriez-vous confiance à une voiture autonome pour éviter les piétons et les cyclistes la nuit, alors que vous-même avez du mal à les voir? Il existe tellement de situations dangereuses de ce type qu’il est presque impossible qu’elles soient toutes représentées dans le jeu de données d’entraînement.
Bien sûr, j’ai choisi ici des exemples extrêmes tirés de l’application à laquelle il est le plus facile de s’identifier. Imaginez toutefois les conséquences si un algorithme « parfaitement entraîné et testé » classait mal votre tomodensitométrie et provoquait une erreur de diagnostic simplement parce que votre hôpital utilise des réglages différents dans son appareil, ou parce que vous n’avez pas bu la quantité habituelle d’eau ou de produit de contraste. Tout ce qui diffère des données d’entraînement peut provoquer un problème majeur dans la réalité, même si le jeu de référence affirme que le modèle est parfait. Comme cela s’est déjà produit, ces algorithmes peuvent traiter injustement les personnes appartenant à des groupes démographiques sous-représentés, ou même avoir des conséquences encore plus graves. Voilà pourquoi je soutiens que nous devons nous concentrer sur les tâches où les algorithmes nous aident plutôt que sur celles où ils nous remplacent, tant qu’ils dépendent autant des données.

La différence entre la diversité d’un jeu de données d’entraînement et les images du monde réel. Image de l’auteur.
Cela nous mène aux deux questions soulignées par les auteurs:
(I) Comment pouvons-nous tester efficacement ces algorithmes pour nous assurer qu’ils fonctionnent sur ces jeux de données immenses si nous ne pouvons les évaluer que sur un sous-ensemble fini?
Et:
(II) Comment pouvons-nous entraîner des algorithmes sur des jeux de données de taille finie afin qu’ils fonctionnent bien sur les jeux véritablement immenses nécessaires pour représenter la complexité combinatoire du monde réel?
Dans leur article, les auteurs proposent de « repenser nos méthodes de comparaison des performances et d’évaluation des algorithmes de vision ». Je suis entièrement d’accord. Maintenant que la plupart des applications sont conçues pour le monde réel plutôt que pour de simples compétitions universitaires, nous devons absolument dépasser ces mesures d’évaluation universitaires et créer des outils plus adaptés. Nous devons aussi reconnaître que les biais dans les données existent et qu’ils peuvent provoquer de véritables problèmes. Il faut bien sûr apprendre à les réduire, mais également accepter leur présence. Ils sont inévitables à cause de la complexité combinatoire du monde réel, qui ne peut pas encore être représentée de façon réaliste dans un seul jeu de données d’images. Nous devons donc concentrer notre attention, sans jeu de mots avec les transformeurs,
sur de meilleurs algorithmes capables d’apprendre à être équitables même lorsqu’ils sont entraînés sur des jeux de données « incomplets », plutôt que sur des modèles toujours plus gros qui cherchent à représenter le plus de données possible.
Même si cela peut en avoir l’air, cet article scientifique ne critique pas les approches actuelles.
Il s’agit plutôt d’un texte d’opinion inspiré de discussions avec d’autres chercheurs de plusieurs disciplines. Comme l’indiquent les auteurs:
Nous soulignons que les opinions exprimées dans cet article sont les nôtres et qu’elles ne reflètent pas nécessairement celles de la communauté de la vision par ordinateur.
Je dois toutefois dire que c’était une lecture très intéressante et que mon point de vue est assez semblable.
Les auteurs abordent également de nombreuses innovations importantes apparues en vision par ordinateur au cours des 40 dernières années, et cette partie vaut la peine d’être lue. Comme toujours, le lien vers l’article se trouve dans les références ci-dessous et vous devriez absolument le lire. Je ne saurais trop insister!
Pour terminer sur une note plus positive, nous vivons maintenant depuis près d’une décennie la révolution des réseaux de neurones profonds amorcée en 2012 par AlexNet lors de la compétition ImageNet. Depuis, notre puissance de calcul et les architectures de réseaux profonds ont énormément progressé grâce, entre autres, à la normalisation par lots, aux connexions résiduelles et, plus récemment, à l’auto-attention.
Les chercheurs amélioreront sans aucun doute les architectures de réseaux profonds, mais nous ne devons pas oublier qu’il existe d’autres façons de créer des modèles intelligents que d’« aller plus en profondeur… » et d’utiliser davantage de données. Bien sûr, ces méthodes restent à découvrir. Si l’histoire des réseaux de neurones profonds vous intéresse, j’ai écrit un article sur l’une des architectures les plus fascinantes, accompagné d’une courte rétrospective de ces réseaux. Je suis certain qu’il vous plaira!
[
Les réseaux de neurones convolutifs de pointe expliqués: DenseNet
Les réseaux de neurones convolutifs, aussi appelés CNN, sont le type de réseau de neurones le plus utilisé et le plus efficace pour les applications de vision par ordinateur. Une fois que vous les comprenez, vous êtes prêt à approfondir le sujet…

Merci d’avoir lu cet article!
Venez discuter avec nous dans notre communauté Discord: Learn AI Together et partagez vos projets, vos articles scientifiques et vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle, et bien plus encore!
Si vous aimez mon travail et souhaitez rester à jour avec l’IA, vous devriez absolument me suivre sur mes autres réseaux sociaux (LinkedIn, Twitter) et vous abonner à mon infolettre hebdomadaire sur l’IA!
Pour me soutenir:
- La meilleure façon de me soutenir est de devenir membre de ce site Web ou de vous abonner à ma chaîne YouTube si vous aimez le format vidéo.
- Soutenez financièrement mon travail sur Patreon
Références
Yuille, A.L. et Liu, C., 2021. Deep nets: What have they ever done for vision?. International Journal of Computer Vision, 129(3), p. 781-802, https://arxiv.org/abs/1805.04025.
FAQ
Qu'est-ce que l'IA en vision par ordinateur?
Il s'agit d'utiliser des modèles pour comprendre des images ou des vidéos, entre autres pour la classification, la détection, la segmentation, le suivi et la génération.
Pourquoi les données sont-elles si importantes en vision par ordinateur?
Les modèles de vision apprennent des motifs visuels. Les étiquettes, l'éclairage, les angles de caméra, les arrière-plans et les rares cas limites peuvent donc compter plus qu'une nouvelle architecture.
Où la vision par ordinateur est-elle utile en pratique?
Elle peut aider à l'inspection, à l'imagerie médicale, à la robotique, aux systèmes autonomes, à l'analyse du commerce de détail, aux outils créatifs et à l'organisation de photos ou de vidéos.
Que faut-il tester avant de faire confiance à un modèle de vision?
Testez le mauvais éclairage, les occlusions, le flou, les angles inhabituels, les groupes sous-représentés, les environnements changeants et la caméra exacte utilisée en production.
Comment commencer à apprendre la vision par ordinateur?
Commencez par la classification d'images et la détection d'objets, puis passez à la segmentation, aux plongements, aux modèles multimodaux et à l'évaluation sur vos propres images.
Qu'est-ce qu'un filtre convolutif apprend à détecter?
Les premiers filtres réagissent souvent à de petits motifs comme les contours. Les couches plus profondes combinent ensuite ces cartes de caractéristiques en représentations visuelles plus utiles.

