Quel est l'état de l'IA en vision par ordinateur?
Dans cet article, je partagerai ouvertement tout sur les réseaux profonds pour les applications de vision, leurs succès et les limites que nous devons surmonter.
Si vous avez cliqué sur cet article, vous êtes certainement intéressé par les applications de vision par ordinateur comme la classification d'images, la segmentation d'images, détection d'objets et par les tâches plus complexes telles que la reconnaissance faciale, la génération d'images ou même l'application de transfert de style. Comme vous le savez peut-être déjà, avec la puissance croissante de nos ordinateurs, la plupart de ces applications sont désormais réalisées à l'aide de réseaux neuronaux profonds, ce que nous appelons souvent des «modèles d'intelligence artificielle». Il existe quelques différences entre les réseaux profonds utilisés dans ces différentes applications de vision, mais jusqu’ici, ils utilisent la même base de convolutions introduite en 1989 par Yann LeCun. La principale différence est notre puissance de calcul issue des récentes avancées des GPU.
Une introduction rapide aux réseaux de neurones convolutifs
Pour passer rapidement en revue l'architecture, comme son nom l'indique, la convolution est un processus dans lequel une image originale, ou une trame vidéo, qui est notre entrée dans une application de vision par ordinateur, est convoluée à l'aide de filtres qui détectent les petites caractéristiques importantes d'une image telles que les contours. Le réseau apprendra de manière autonome les valeurs de filtre qui détectent les caractéristiques importantes pour correspondre à la sortie que nous voulons avoir, comme le nom de l'objet dans une image spécifique envoyée comme entrée pour une tâche de classification.
Une convolution. Image via Irhum Shafkat
Ces filtres sont généralement des carrés de 3 x 3 ou 5 x 5 pixels, ce qui leur permet de détecter la direction du contour analysé: gauche, droite, haut ou bas. Tout comme vous pouvez le voir sur cette image, le processus de convolution effectue un produit scalaire entre le filtre et les pixels auxquels il fait face. Il s’agit essentiellement d’une somme de tous les pixels du filtre multipliée par les valeurs des pixels de l’image aux positions correspondantes. Ensuite, il va vers la droite et recommence, en convoluant toute l'image. Une fois que c'est fait, cette convolution nous donne la sortie de la première couche de convolution. Nous appelons cette sortie une carte des caractéristiques. Nous répétons le processus avec de nombreux autres filtres, ce qui nous donne plusieurs cartes de caractéristiques - une pour chaque filtre utilisé dans le processus de convolution. Le fait d'avoir plus d'une carte de caractéristiques nous donne plus d'informations sur l'image. Et surtout plus d'informations que nous pouvons apprendre pendant l’entraînement du réseau puisque les ‘poids’ de ces filtres sont ce que nous cherchons à apprendre et améliorer pour effectuer notre tâche. Ces cartes de caractéristiques sont toutes envoyées dans la couche suivante en tant qu'entrée pour produire à nouveau de nombreuses autres cartes de caractéristiques de plus petite taille. Plus nous entrons profondément dans le réseau, plus ces cartes de caractéristiques sont petites en raison de la nature des convolutions, condensant l’information, et plus les informations de ces cartes de caractéristiques deviennent générales. Jusqu'à ce qu’on atteigne la fin du réseau avec des informations extrêmement générales sur ce que contient l'image disposée sur de nombreuses cartes de caractéristiques, qui sont utilisées pour la classification ou pour construire un code latent pour représenter les informations présentes dans l'image dans le cas d'une architecture GAN à générer une nouvelle image basée sur ce code que nous appelons les informations codées.
Dans l'exemple de la classification d'images, en termes simples, on peut dire qu'à la fin du réseau, ces petites cartes de caractéristiques contiennent les informations sur la présence de chaque classe possible, vous indiquant s'il s'agit d'un chien, d'un chat, d'une personne, etc. Bien sûr, je simplifie, et il y a d'autres étapes, mais j'ai l'impression que c'est un résumé assez précis de ce qui se passe à l'intérieur d'un réseau neuronal convolutif profond.
Si vous avez suivi mes articles précédents, vous savez que les réseaux de neurones profonds se sont révélés extrêmement puissants à maintes reprises, mais ils ont aussi des faiblesses, et des faiblesses que nous ne devrions pas essayer de cacher. Comme pour toutes les choses de la vie, les réseaux profonds ont des forces et des faiblesses. Si les atouts sont largement partagés, ce dernier est souvent omis ou même écarté par les entreprises et même par certains chercheurs.
Les réseaux profonds - Forces et faiblesses
Cet article 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 que nous devons surmonter. De plus, tout comme pour notre propre cerveau, nous ne comprenons toujours pas pleinement leur fonctionnement interne, ce qui rend l'utilisation des réseaux profonds encore plus limitée, car nous ne pouvons pas maximiser leurs forces et limiter leurs faiblesses.
Comme l'a déclaré O. Hobert,
“c'est comme une carte routière qui vous indique où les voitures peuvent conduire, mais qui ne vous dit pas quand ni où les voitures roulent réellement.” - Traduction
C'est un autre point dont ils discutent dans leur article. À savoir, quel est l'avenir des algorithmes de vision par ordinateur? Comme vous le pensez peut-être, une façon d'améliorer les applications de vision par ordinateur est de mieux comprendre notre propre système visuel, en commençant par notre cerveau. C'est pourquoi la neuroscience est un domaine si important 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 minimal d'exemples en exploitant notre mémoire et les connaissances que nous avons déjà acquises. Nous pouvons également exploiter notre compréhension du monde et de ses propriétés physiques pour faire des déductions, ce qu'un réseau profond ne peut pas faire. En 1999, Gopnik et al. a expliqué que les bébés ressemblent plus à de petits scientifiques qui comprennent le monde en effectuant des expériences et en recherchant des explications causales aux phénomènes, plutôt que de simplement recevoir un stimulus d'images comme les réseaux profonds actuels.
Nous, les humains, sommes beaucoup plus robustes, car nous pouvons facilement identifier un objet de n'importe quel point de vue, n’importe quelle texture, ou même une toutes occlusions que nous pouvons rencontrer et de nouveaux contextes. À titre d'exemple concret, vous pouvez simplement visualiser le Captcha énervant que vous devez constamment remplir lorsque vous vous connectez à un site Web. Ce Captcha est utilisé pour détecter les ‘bots’ car ils sont pathétiques quand il y a des occlusions comme celle-ci.
Comme vous pouvez le voir ci-dessous, le réseau profond a été trompé par tous les exemples à cause du contexte de la jungle et du fait qu'un singe ne tient généralement pas de guitare. Cela se produit parce qu'il ne figurait certainement pas dans le jeu de données d'entraînement. Bien sûr, cette situation exacte peut ne pas se produire si souvent dans la vie réelle, même si elle ne figure pas dans l'ensemble de données d'entraînement.
Je montrerai quelques exemples plus concrets et qui se sont déjà produits plus tard dans cet article. Les réseaux profonds ont également des atouts que nous devons souligner. Ils peuvent nous surpasser pour les tâches de reconnaissance faciale, car les humains ne sont pas habitués, jusqu'à récemment, à voir plus de quelques milliers de personnes au cours de leur vie. Mais cette force des réseaux profonds s'accompagne également d'une limitation où ces visages doivent être droits, centrés, clairs, sans aucune occlusion, etc. En effet, l'algorithme ne pouvait pas reconnaître votre meilleur ami à la fête d'Halloween déguisé en harry potter, n'ayant que des lunettes et un éclair sur le front. Où vous le reconnaîtriez instantanément et lui diriez: «Wow, ce n'est pas très original. On dirait que tu as juste mis des lunettes ». De même, de tels algorithmes sont des radiologues extrêmement précis… si tous les paramètres sont similaires à ce qu'ils ont vu au cours de leur entraînement, ils surpasseront n'importe quel humain. C'est principalement parce que même les radiologues les plus experts n'ont vu qu'un assez petit nombre de photos de tomodensitogrammes dans leur vie. Comme ils le suggèrent, cette supériorité des algorithmes peut aussi s'expliquer par le fait qu'ils accomplissent une tâche peu prioritaire pour les humains. Par exemple, une application de vision par ordinateur sur votre téléphone peut identifier les centaines de plantes de votre jardin bien mieux que la plupart d'entre nous ne le peuvent, mais un expert en plantes peut aisément surpasser un tel algorithme (et nous tous ensemble par le fait même). Mais encore une fois, cette force s'accompagne d'un énorme problème lié aux données dont l'algorithme a besoin pour être aussi puissant. Comme ils le mentionnent et comme nous le voyons souvent sur Twitter ou dans les titres d'articles populaires, il existe des biais dus à l'ensemble de données sur lequel ces réseaux profonds sont formés, car
un algorithme n'est aussi bon que l'ensemble de données sur lequel il est évalué et les mesures de performance utilisées.
Les réseaux profonds vs le système de vision humain
Cette limitation de l'ensemble de données a comme conséquence que ces réseaux de neurones profonds sont beaucoup moins polyvalents, flexibles et adaptatifs que notre propre système visuel. Ils sont moins polyvalents et flexibles dans la mesure où, contrairement à notre système visuel où nous effectuons automatiquement la détection des contours, la vision stéréo binoculaire, la segmentation sémantique, la classification d'objets, la classification de scènes et l'estimation de la profondeur 3D, les réseaux profonds ne peuvent être entraînés que pour l’une de ces tâches. En effet, simplement en regardant autour de vous, votre système de vision réalise automatiquement toutes ces tâches avec une extrême précision là où les réseaux profonds ont du mal à atteindre une précision similaire sur l'un d'eux. Mais même si cela nous semble sans effort, la moitié de nos neurones sont en train de traiter l'information et d'analyser ce qui se passe.
Nous sommes encore loin d'imiter notre système de vision même avec la profondeur actuelle de nos réseaux, mais est-ce vraiment le but de nos algorithmes? Serait-il préférable de les utiliser comme un outil pour améliorer nos faiblesses? Je ne pourrais pas dire. Mais je suis sûr que nous voulons nous attaquer aux limites des réseaux profonds qui peuvent entraîner de graves conséquences plutôt que de les omettre. Je montrerai quelques exemples concrets de telles conséquences juste après avoir introduit ces limitations. L'une des plus grandes limites des réseaux profonds est qu'ils dépendent des données. En effet, le manque de précision que nous avons mentionné précédemment par ces réseaux profonds provient principalement de la disparité entre les données que nous utilisons pour entraîner notre algorithme et ce qu'il verra dans la vie réelle. Comme vous le savez, un algorithme a besoin de voir beaucoup de données pour s'améliorer de manière itérative à la tâche pour laquelle il est formé. Ces données sont souvent appelées ensemble de données d'entraînement.
Le problème de la dépendance des données
Cette disparité entre l'ensemble de données d'entraînement et le monde réel est un problème, car le monde réel est trop compliqué pour être représenté avec précision dans un seul ensemble de données, c'est pourquoi les réseaux profonds sont moins adaptatifs que notre système de vision. Dans l'article, ils ont appelé cela l'explosion de complexité combinatoire des images naturelles. La complexité combinatoire provient de la multitude de variations possibles au sein d'une image naturelle comme la pose de la caméra, l'éclairage, la texture, le matériau, l'arrière-plan, la position des objets, etc. Vous pouvez voir à quel point ces grands ensembles de données semblent maintenant très petits en raison de tous ces facteurs, étant donné que n'ayant que, disons, 13 de ces différents paramètres, et nous n'autorisons que 1000 valeurs différentes pour chacun d'eux par exemple, ce qui est très faible considérant la quantité de possibilités réelle si nous prenons en compte chaque infime variation, nous sautons rapidement à ce nombre d'images différentes pour ne représenter qu'un seul objet: 10^39. Les ensembles de données actuels ne couvrent qu'une poignée de ces multitudes de variations possibles pour chaque objet, manquant ainsi la plupart des situations du monde réel qu'il rencontrera en production.
Il convient également de mentionner que la variété des images étant très limitée, le réseau peut trouver des raccourcis pour détecter certains objets, comme nous l'avons vu précédemment avec le singe. Il détectait un humain au lieu d'un singe à cause de la guitare devant lui. De même, vous pouvez voir qu'il détecte un oiseau ici au lieu d'une guitare, probablement parce que le modèle n'a jamais vu de guitare avec un fond de jungle. Il s'agit d'un cas appelé «surajustement au contexte d'arrière-plan», où l'algorithme ne se concentre pas sur la bonne chose et trouve plutôt un motif dans les images elles-mêmes plutôt que sur l'objet d'intérêt. En outre, ces ensembles de données sont tous construits à partir d'images prises par des photographies. Cela signifie qu'ils ne couvrent que des angles et des poses spécifiques qui ne se transfèrent pas à toutes les possibilités d'orientation dans le monde réel.
Actuellement, nous utilisons des benchmarks avec les ensembles de données les plus complexes possible pour comparer les algorithmes actuels et les évaluer, qui, si vous vous en souvenez, sont incomplets par rapport au monde réel. Néanmoins, nous sommes souvent satisfaits d'une précision de 99% pour une tâche sur de tels benchmarks. Premièrement, le problème est que cette erreur de 1% est déterminée sur un ensemble de données de référence, ce qui signifie qu'elle est similaire à notre ensemble de données d'entraînement dans la mesure où elle ne représente pas la richesse des images naturelles. C’est normal car il est impossible de représenter le monde réel en quelques images, c’est trop compliqué et il y a trop de situations possibles. Ces benchmarks que nous utilisons pour tester notre ensemble de données afin de déterminer s'ils sont prêts à être déployés dans l'application du monde réel ne sont pas vraiment précis pour déterminer dans quelle mesure il fonctionnera *réellement*, ce qui conduit au deuxième problème: comment se comportera l’algorithme dans le monde réel?
Disons que le jeu de données de référence est énorme et que la plupart des cas sont couverts, et que nous avons vraiment une précision de 99%. Quelles sont les conséquences du 1% de cas où l'algorithme échoue dans le monde réel? Ce nombre sera représenté dans des erreurs de diagnostic, des accidents, des erreurs financières ou, pire encore, des décès.
De tels cas pourraient être une voiture autonome pendant une journée de pluie abondante, affectant fortement les capteurs de profondeur utilisés par le véhicule, ce qui lui ferait échouer de nombreuses estimations de profondeur. Confieriez-vous votre vie à ce «robotaxi» partiellement aveugle?
Je ne pense pas que je le ferais. De même, feriez-vous confiance à une voiture autonome la nuit pour éviter de rouler sur des piétons ou des cyclistes où vous-même avez du mal à les voir? Ces types de situations potentiellement mortelles sont si vastes qu’il est presque impossible qu’elles soient toutes représentées dans l’ensemble de données de formation.
Et bien sûr, j'ai utilisé ici des exemples extrêmes de l'application la plus pertinente, mais vous pouvez imaginer à quel point cela pourrait être nocif lorsque l'algorithme «parfaitement formé et testé» classifie mal votre tomodensitométrie conduisant à un diagnostic erroné simplement parce que votre hôpital a des paramètres différents dans leur scanneur, ou parce que vous n'avez pas bu la quantité régulière d'eau ou de colorant. Tout ce qui serait différent de vos données d'entraînement pourrait entraîner un problème majeur dans la vie réelle, même si le benchmark utilisé pour le tester indique qu'il est parfait. Comme cela s'est déjà produit, ça peut conduire à ce que des personnes appartenant à des groupes démographiques sous-représentés soient injustement traitées par ces algorithmes, et même pire. C'est pourquoi je soutiens que nous devons nous concentrer sur les tâches où les algorithmes nous aident et non là où ils nous remplacent tant qu'ils dépendent des données.
Cela nous amène aux deux questions qu'ils mettent en évidence (I) Comment pouvons-nous tester efficacement ces algorithmes pour nous assurer qu'ils fonctionnent dans ces énormes ensembles de données si nous ne pouvons les tester que sur un sous-ensemble fini? Et (II) comment pouvons-nous former des algorithmes sur des ensembles de données de taille finie afin qu'ils puissent bien fonctionner sur les ensembles de données vraiment énormes nécessaires pour capturer la complexité combinatoire du monde réel?
Dans l'article, ils suggèrent de «repenser nos méthodes pour comparer les performances et évaluer les algorithmes de vision». Et je suis entièrement d'accord. Surtout maintenant, où la plupart des applications sont destinées à des utilisations réelles au lieu de se limiter à des circonstances académiques, il est crucial de sortir de ces mesures d'évaluation universitaires et de créer des outils d'évaluation plus appropriés. Nous devons également accepter que les données biaisées existent et qu'elles puissent causer des problèmes dans le monde réel. Bien sûr, il faut apprendre à réduire ces biais, mais aussi à les accepter. Les biais sont inévitables en raison de la complexité combinatoire du monde réel qui ne peut pas encore être représentée de manière réaliste dans un seul ensemble de données d'images. Ainsi, en focalisant notre attention, sans aucun jeu de mots avec les ‘Transformers’ et leur système d’attention, sur de meilleurs algorithmes qui peuvent apprendre à être justes même lorsqu'ils sont formés sur de tels ensembles de données «incomplets» plutôt que d'avoir des modèles de plus en plus grands essayant de représenter le plus de données possible.
Même si cela peut en avoir l'air, cet article n'était pas une critique des approches actuelles. Il s'agit plutôt d'un article d'opinion motivé par des discussions avec d'autres chercheurs dans plusieurs disciplines. Comme ils le disent, “nous soulignons que les opinions exprimées dans le document sont les nôtres et ne reflètent pas nécessairement celles de la communauté de la vision par ordinateur.” Mais je dois dire que c'était une lecture très intéressante et que mes opinions sont assez similaires. Ils discutent également de nombreuses innovations importantes qui se sont produites au cours des 40 dernières années dans le domaine de la vision par ordinateur qui vaut la peine d'être lu. Comme toujours, le lien vers l'article se trouve dans les références ci-dessous, et vous devez absolument le lire. Je ne pourrais pas le souligner davantage!
Pour terminer sur une note plus positive, nous sommes maintenant près d'une décennie dans la révolution des réseaux de neurones profonds qui a débuté en 2012 avec AlexNet dans le cadre de la compétition Imagenet. Depuis lors, il y a eu d'immenses progrès sur notre puissance de calcul et les architectures des réseaux profonds comme l'utilisation de la normalisation par lots, des connexions résiduelles et, plus récemment, de “l'auto-attention”.
Les chercheurs amélioreront encore sans aucun doute l'architecture des réseaux profonds, mais nous ne devons pas oublier qu'il existe d'autres moyens de réaliser des modèles intelligents que d’«aller plus loin…» et utiliser plus de données. Bien sûr, ces moyens restent à être découverts…
Merci d’avoir lu cet article!
Venez discuter avec nous dans notre communauté Discord: ‘Learn AI Together’ et partagez vos projets, vos articles, vos meilleurs cours, trouvez des coéquipiers pour des compétitions Kaggle et plus encore!
Si vous aimez mon travail et que vous souhaitez rester à jour avec l'IA, vous devez absolument me suivre sur mes autres médias sociaux (LinkedIn, Twitter) et vous abonner à ma newsletter hebdomadaire sur l'IA!
Pour supporter mon travail:
La meilleure façon de me soutenir est de souscrire à ma newsletter tel que mentionné précédemment ou de vous abonner à ma chaîne sur YouTube si vous aimez le format vidéo en anglais.
Soutenez mon travail financièrement sur Patreon
Références
Yuille, A.L., and Liu, C., 2021. Deep nets: What have they ever done for vision?. International Journal of Computer Vision, 129(3), pp.781–802, https://arxiv.org/abs/1805.04025.