IA COGNITO – EP06 – La Computer Vision
Premier volet de cette saison 2 d’IA COGNITO : la vision par ordinateur (computer vision en anglais). Un domaine d’expertise à Neovision, que nous avons à cœur de vous présenter.
Au-delà d’une simple définition, nous allons voir ce qu’est réellement la vision par ordinateur et quelles applications trouve cette dernière.
Définition du domaine
Mais alors, qu’est ce que la vision par ordinateur ?
Il s’agit d’un des domaines prominents de l’intelligence artificielle depuis les prémices de la discipline.
Cette branche de l’IA s’intéresse à la reproduction du système visuel humain en comprenant et en automatisant les tâches impliquées dans ce processus comme l’acquisition, le traitement et l’analyse de l’image.
Pour faire simple, la computer vision est un domaine de l’IA qui analyse des images, captées par des équipements tels que des caméras, pour en extraire des informations.
Ce domaine scientifique vise à rendre une machine – un ordinateur en somme – capable de comprendre une image ou une vidéo. Il s’agit donc de donner une dimension sémantique, un sens, à ces dernières.
Pour atteindre cet objectif, un ordinateur peut avoir à effectuer différentes tâches comme détecter un objet, donner une description de l’image, produire un modèle 3D…
Il n’est pas étonnant que l’humain se soit autant penché sur ce domaine. Au quotidien, s’il y a un sens qui nous est important, c’est bien la vue. Et de nombreux processus cognitifs en dépendent : la mémorisation et la reconnaissance, la prise de décisions, la navigation et l’orientation… Même l’alimentation et le dialogue lui sont liés !
Ce constat est toujours vrai aujourd’hui, puisqu’au rayon des innovations, il y a bien deux choses qui ont pullulé. Ecrans et objectifs ponctuent chaque moment de nos journées. Et les caméras produisent toujours plus de données qui n’auront de valeur qu’une fois analysées.
La computer vision représente ainsi une alternative – la solution logicielle permettant de traiter ces données et de s’en servir pour se perfectionner. Ceci amène à l’automatisation des processus et tâches qui nous sont plus ou moins pénibles en analysant et comprenant les images pour nous.
Enfin… en partie.
Sur la reconnaissance de certaines images, l’IA commence à nous rattraper voir nous dépasser. Mais sur d’autres tâches plus complexes, nous, humains, gardons un avantage certain. Avant d‘être surpassés par l’IA, nous devrons déjà comprendre comment fonctionne la vision humaine, de la perception à son interprétation.
Toutefois, cet avantage pourrait être relatif, puisque l’intelligence artificielle a plus d’un atout dans sa manche et peut notamment se doter de senseurs différents des nôtres.
Un sujet que nous ne manquerons pas d’aborder, mais avant cela, concentrons-nous sur ce qu’ils produisent : des données.
Typologie de données et méthodes algorithmiques
Typologie de données
Côté données donc, vous l’aurez deviné, la Computer Vision s’appuie sur des entrées visuelles comme des images ou de la vidéo.
Bien entendu, vous ne trouverez pas une photo ou vidéo qui se ressemble. Tout d’abord, les données visuelles ont des formats très divers. Une photo peut aussi bien être au format PDF, que PNG ou encore JPEG. Il en va de même pour les vidéos.
Outre le format, les dimensions peuvent, elles aussi, varier. Et dernier point à prendre en compte : la modalité. Si quand on pense à une donnée visuelle, on fait tout de suite le lien avec une photo du domaine visible prise par un caméra du quotidien, de multiples autres capteurs existent. Ils peuvent être thermiques, infrarouges, à rayons X ou encore multispectraux (c’est-à-dire qu’il mélangeront plusieurs modalités visuelles).
Par ailleurs, tous les formats, dimensions ou modalités ne seront pas forcément exploitables par tous les algorithmes qui demandent des données bien précises en entrée. Par exemple, des images RGB, de dimensions carrées 100×100 au format PNG. De plus, il n’est pas si simple d’obtenir des données qualitatives et exploitables sans les traiter au préalable.
La qualité des prises de vues est souvent soumise aux conditions du monde réel. Par exemple, un éclairage changeant peut venir modifier l’apparence d’un objet. Ou, si l’on est face à un objet en mouvement, un mauvais angle de prise de vue peut tout simplement empêcher de le reconnaître. C’est donc ici que le traitement d’images entre en jeu.
Ce traitement d’image peut être minime, comme un petit recadrage ou une rotation. Mais il est également possible de venir modifier l’image, en touchant à ses propriétés, pour venir mettre certains éléments en lumière ou supprimer un bruit causé par un faible éclairage.
Méthodes algorithmiques
Mais quelles sont les méthodes qui permettent ensuite de tirer du sens de ces données pré-traitées ?
Si on entend depuis quelques années parler massivement de la vision par ordinateur, il s’agit comme de nombreux domaines de l’IA d’une discipline ancienne qui a connu de nombreuses évolutions. Il serait réducteur de penser que la vision par ordinateur se limite aux avancées récentes en deep learning.
En particulier, il a s’agit pendant longtemps de créer à la main des méthodes algorithmiques permettant de trouver les informations désirées dans une image ou de pouvoir décrire une image. Pour résumer, on dit qu’on cherche les descripteurs d’une image, c’est-à-dire une façon de la représenter d’une manière qui soit compréhensible par la machine et adaptée à la tâche en question.
Par exemple, des descripteurs bas niveau d’une image peuvent être les contours des objets présents dans la scène. Mais ils peuvent être aussi plus poussés et représenter la position et l’orientation de points saillants dans l’image. Dans ce second cas, l’idée est de trouver une façon de représenter une image qui soit compacte et informative tout en étant généraliste. Ce que l’on entend par là, c’est qu’on veut que cette représentation permette à la machine de comprendre lorsque deux images différentes sont proches – par exemple parce qu’elles représentent la même personne ou le même monument sous des angles de vue différents. C’est l’intérêt de ces descripteurs.
De manière générale, les descripteurs constituent une première étape pour appliquer ensuite des algorithmes, par exemple de machine learning, pour la tâche finale. Jusqu’à la popularisation du deep learning, les méthodes pour trouver ces descripteurs étaient minutieusement développées et améliorées. De nos jours, c’est le réseau de neurones qui se charge de trouver lui-même ces descripteurs. Si les descripteurs y perdent en signification pour l’humain, ceci permet par contre au réseau d’apprendre lui-même les descripteurs qui lui sont le plus adaptés pour une tâche donnée.
C’est aussi une des raisons qui a permis au deep learning d’obtenir les résultats qu’on lui connaît aujourd’hui : ce n’est plus à l’humain de concevoir des descripteurs difficiles à généraliser mais bien à la machine de le faire – à partir des données qu’on lui présente.
Mais alors, maintenant qu’on comprend un peu mieux comment fonctionne la vision par ordinateur, penchons-nous sur ses grandes applications !
Grandes familles de technologies et sous-domaines
Dans la Computer Vision il existe un ensemble de sous-domaines. Chacun d’entre eux correspond à une tâche que l’ordinateur doit atteindre. Vous avez sans doute déjà entendu parler de classification ou de détection mais nous allons ici faire un tour plus vaste de ces sous-domaines.
La classification
Commençons par la première d’entre elles, la classification.
Si vous avez écouté/lu l’épisode 3 sur le machine learning, vous devriez déjà savoir de quoi il s’agit.
La classification d’image revient à ranger une image dans une catégorie précise, une classe. Pour illustrer tout cela, nous allons prendre un exemple. Disons que nous avons créé une énième fois une technologie classant des photos de chiens et de chats. Pour chaque photo, l’IA indiquera s’il s’agit d’un chat ou d’un chien.
Un classifieur est donc capable de comprendre ce que représente une photo. Mais que se passe-t-il lorsque nous voyons un chat ET un chien sur une même photo ?
Dans ce cas de figure, il est possible de développer un classifieur multilabel. C’est-à dire qu’une telle technologie sera capable de donner plusieurs classes à une même image.
La détection
Parlons maintenant de la seconde grande famille d’application de la Computer Vision, la détection.
Là aussi, il s’agit d’un sujet que nous avons déjà abordé dans l’épisode 3.
A première vue, la détection semble assez proche de la classification. Détecter un chien sur une photo revient à dire si une photo représente un chien ou non, n’est ce pas ? Eh bien, pas tout à fait, loin de là même !
La classification ne donne aucune information quant à la localisation de l’objet ou de l’individu à classifier. Si nous souhaitons localiser un élément sur une image, nous devons avoir recours à une technologie de détection.
Un détecteur va indiquer les coordonnées spatiales d’un objet ou d’un individu sur l’image et s’attacher à définir une zone dans laquelle se trouve l’objet détecté. Cette zone généralement rectangulaire est appelée bounding box ou boîte englobante.
C’est ce que certains smartphones récents utilisent pour régler les paramètres photos de manière automatique. Ils vont détecter des visages, des sourires, des chats, des chiens, etc pour réaliser le bon focus.
En pratique, on ne se contente généralement pas de détecter la position d’un objet mais on cherche aussi à l’identifier. Ceci veut dire que nous classifions l’objet détecté dans une zone précise en même temps qu’on trouve sa position. On mélange donc un classifieur et un détecteur. Vous pouvez déjà avoir pu le faire lorsque vous partagez vos photos sur Facebook, Instagram ou Linkedin.
Cela est également très intéressant pour automatiser ou assister des tâches d’annotation.
Il est important de noter qu’on ne se contente pas toujours de détecter des boîtes englobantes. Par exemple, il peut être intéressant d’avoir des informations plus précises en détectant les points d’intérêt qui composent une forme. C’est-à-dire que l’on cherche les points saillants qui décrivent le mieux la forme. Ceci peut permettre par exemple de détecter la pose d’une personne à partir de quelques points définissants son squelette.
La segmentation
Vient enfin la segmentation. Un sous-domaine que nous n’avons pas encore réellement abordé dans IA COGNITO.
Pour vulgariser au maximum, la segmentation c’est la version améliorée de la détection.
Quand nous parlons de segmentation, la détection ne se fait plus sur une boîte englobante autour d’un objet mais directement sur l’objet, pixel par pixel. Cela nous permet de définir la forme quasi exacte de l’objet en question.
La segmentation d’images va venir créer et apposer des “masques” sur chaque objet détecté au pixel près. Cela permet de bien distinguer les différents objets présents, sans superpositions.
On fait alors ensuite la distinction entre segmentation sémantique et segmentation par instance. Dans le cas de la segmentation sémantique, il faut imaginer que c’est comme si chaque pixel du masque était coloré d’une façon différente en fonction de l’objet segmenté. Par exemple un chat en rouge et un chien en vert. Cependant, deux chiens seront représentés par un masque de la même couleur. Donc, s’ils sont proches sur une image, leurs deux masques seront fusionnés en un seul.
La segmentation par instance, elle, permet justement de segmenter deux sujets appartenant à la même classe. Elle fait donc la distinction entre les masques de segmentation de différentes instances de la même classe.
Ces 3 grands sous-domaines sont les plus couramment cités mais il serait quelque peu réducteur de s’arrêter là. En effet, on peut par exemple aussi citer le domaine de la super-résolution, dans lequel on s’intéresse à l’amélioration de la résolution d’images. L’IA peut ainsi produire des images de très haute résolution à partir d’images basse définition, par exemple pour restaurer des images détériorées. Surtout, la super-résolution permet d’améliorer à la fois la résolution spatiale (donc, la qualité visuelle) mais aussi la résolution temporelle dans le cas de vidéo ; ceci veut dire qu’on peut donc augmenter le nombre d’images par seconde d’une vidéo !
Avec la vision par ordinateur, on peut même générer de nouvelles images. Par exemple, en partant d’un masque de segmentation ou d’un dessin sommaire, une intelligence artificielle peut générer une toute nouvelle scène photoréaliste. Elle peut aussi créer des images intermédiaires pour une vidéo, rendant un ralenti bien plus fluide.
Un autre sous-domaine est celui de la reconstruction 3D. L’idée est de permettre, à partir de plusieurs images en 2D ou d’une vidéo, de reconstituer la forme en 3D d’un objet sur une image. C’est une problématique complexe, notamment lorsque l’on ne dispose pas de capteurs de distance mais qui a connu nombre d’améliorations ces dernières années. On est maintenant par exemple capable de reconstituer l’organisation complète d’une pièce à partir de photos 2D.
L’intelligence artificielle, et la computer vision, sont des domaines très intriqués et des applications se transforment régulièrement en nouveaux sous-domaines plus bas niveau et toujours plus près de l’application. De nouveaux sous-domaines de la vision par ordinateur connaissent de grandes avancées et de multiples cas d’usages de plus en plus concrets. A titre d’exemples, nous pouvons citer la détection d’événements, l’analyse automatique de vidéo, la reconnaissance d’objets, l’apprentissage, l’indexation, le suivi ou encore l’estimation de mouvement.
Applications concrètes et en production
Si nous avons vu à quoi peut servir la Computer Vision et ses applications, quelles formes prennent-elles dans notre vie du quotidien ?
Ses domaines d’applications sont divers et variés, allant aussi bien du médical, aux transports en passant par le retail et l’industrie.
Mais commençons par parler santé, et plus précisément imagerie médicale. En effet, depuis quelques années, l’IA est au service d’une imagerie médicale plus performante. Grâce à l’extraction d’informations tirées d’images (que ce soit des images RGB, à rayons X etc…), les algorithmes viennent ici en complémentarité des médecins pour les assister dans leur diagnostic. De nombreuses applications de l’IA dans l’imagerie médicale se sont d’ailleurs développées pour aider à la détection de différents cancers, comme celui du sein ou encore de la peau.
Côté industrie, la Computer Vision trouve particulièrement sa place pour des problématiques de contrôle qualité. Son analyse précise des pièces permet de détecter les défauts, et ainsi les pièces à mettre au rebut. Cela permet aux entreprises de conserver de hauts standards de qualité, tout en évitant une tâche “robotisante” à leurs équipes et en accélérant les contrôles. Mais la vision industrielle trouve bien d’autres applications, par exemple dans des problématiques de tri optique, utilisé notamment dans les processus agricoles pour trier les aliments.
Quand on pense à l’IA dans les transports, impossible de ne pas parler du véhicule autonome. Ces derniers utilisent la vision par ordinateur pour naviguer. Cela leur permet de savoir où ils se trouvent, et de détecter les éventuels obstacles sur leur passage. Et, le saviez-vous ? Les images prises par les Google Cars, qui pour le coup ne sont pas des véhicules autonomes, sont réutilisées par Google Maps afin de pouvoir répertorier les noms des rues et les panneaux de signalisation automatiquement. De quoi contribuer à améliorer votre expérience de navigation lorsque vous utilisez l’application lors d’un trajet !
Mais, attardons-nous maintenant sur des applications tirées de votre quotidien. Car, oui, vous utilisez de la Computer Vision, peut être sans vous en rendre compte !
Cela commence dès le matin lorsque vous déverrouillez votre téléphone grâce à la reconnaissance faciale. Cette technologie, de plus en plus répandue, permet d’identifier une personne sur une photo ou une vidéo en comparant son visage à ceux sauvegardés dans une base de données. Cette application de la Computer Vision est très sensible, notamment d’un point de vue éthique. Principalement à cause du risque qu’elle représente pour la vie privée des personnes. Si vous souhaitez en savoir plus sur le sujet, n’hésitez pas à aller consulter l’épisode 3 dédié à la thématique “IA et éthique”.
Pour en revenir à vos applications, sos réseaux sociaux préférés, comme Instagram, Snapchat ou encore TikTok intègrent également de la Computer Vision via les filtres que vous pouvez placer sur votre visage. Et, lorsque vous dégainez votre appareil photo pour capturer un moment, plus besoin d’être un grand photographe. L’appareil détecte automatiquement la scène qui va être photographiée et adapte automatiquement les paramètres en conséquence.
Avis aux amateurs de shopping qui apprécieront tout particulièrement le Visual Shopping, qui permet de retrouver facilement des produits à partir d’une simple photo, ou le cas échéant de trouver des produits similaires. Quant aux adeptes des marketplaces du marché de l’occasion, ils utilisent déjà de la vision par ordinateur en mettant en vente leurs articles. En effet, celle-ci vient de plus en plus souvent aider à la complétion des fiches produits pour s’assurer de la cohérence entre la photo et sa description.
Dernières avancées scientifiques
Mais comment en est-on arrivé là ? Comment a-t-on pu développer toutes ces applications ?
Et pour aller encore plus loin, à quoi ressemblera la Computer Vision de demain ?
Lorsque l’on parle de vision par ordinateur aujourd’hui, il est nécessaire de parler de réseaux de neurones convolutifs. En réalité, on devrait même parler de couches de convolution qui sont intégrées parmi des réseaux de neurones profonds. Si ces méthodes sont aujourd’hui largement utilisées, elles ont représenté une avancée majeure aux débuts du deep learning.
Lorsque l’on parle de réseaux convolutifs, il faut en fait imaginer que c’est comme si on passait un filtre sur l’ensemble de l’image. De la même manière qu’un filtre coloré permettrait de ne faire ressortir que certaines couleurs, les filtres des réseaux convolutifs permettent d’extraire des informations précises de l’image. Si on en cumule un grand nombre et qu’on laisse le réseau apprendre lui-même ce que ces filtres doivent extraire, on obtient alors des réseaux avec de très grandes capacités de compréhension et de généralisation.
Depuis ce concept de base, de nombreuses évolutions ont été développées afin d’améliorer la performance des réseaux convolutifs. Mais aujourd’hui, l’état de l’art tend à s’éloigner des réseaux convolutifs pour utiliser plutôt ce qu’on appelle des transformers. Plutôt que d’utiliser des convolutions de filtres, ceux-ci découpent l’image en plusieurs morceaux, que l’on appelle des patchs, et apprennent des relations entre ces patchs. C’est une technologie qui vient à la base du domaine du NLP et qui a montré qu’elle pouvait dépasser l’état de l’art aussi en vision par ordinateur. Nous parlerons des transformers plus en détail dans l’épisode sur le NLP.
Une autre avancée célèbre en vision par ordinateur est celle des GAN, c’est-à-dire les réseaux génératifs antagonistes. Ceux-ci sont spécialisés, comme leur nom l’indique, dans la génération d’images. C’est ce genre de réseaux qui permettent par exemple de générer des visages réalistes, ou des images photo-réalistes à partir de dessins. Leur principe de fonctionnement est intéressant. Ils cumulent en fait deux réseaux concurrents. Le premier, le générateur a pour but de générer des images au plus proche des exemples en entrée pour tromper le second, le discriminateur, qui tente de distinguer les vraies images de celles générées. Chaque réseau doit donc s’améliorer à mesure que l’autre réseau progresse aussi, permettant au final d’apprendre un générateur extrêmement performant.
On vous a beaucoup parlé d’images 2D jusqu’ici mais toutes les avancées techniques successives en vision par ordinateur ont aussi permi de faire de grands progrès dans le domaine de la 3D. Que ce soit pour reconstruire une scène en 3 dimensions à partir de quelques photos ou d’améliorer la réalité augmentée, la vision par ordinateur ne se limite aujourd’hui plus à 2 dimensions.
Aujourd’hui, toutes ces avancées en vision par ordinateur permettent d’avoir des IA qui peuvent surpasser l’humain. Il est néanmoins nécessaire de tout de suite relativiser ceci. L’intelligence artificielle peut surpasser l’humain sur certaines tâches bien définies pour lesquelles elle a été spécialisée et entraînée, dans un contexte et un périmètre donnés. Ça n’enlève rien aux progrès de l’IA et à son utilité mais il ne faut pas non plus exagérer ses capacités.
La Computer Vision est donc l’un des domaines d’applications les plus avancés en Intelligence Artificielle, ou au moins celui dont les avancées nous paraissent les plus concrètes. Dans tous les secteurs, la vision par ordinateur trouve de nouveaux débouchés et cela n’est pas près de s’arrêter au regard des travaux et avancées scientifiques récentes. Qui sait quelles futures surprises nous réserve la vision par ordinateur ?