L'une des tâches les plus difficiles pour une IA
Vous pouvez utiliser l'IA pour identifier ce qu'il y a dans une image, comme savoir s'il y a un chat ou non. S'il y en a un, vous pouvez utiliser une autre IA pour trouver où il se trouve dans l'image. Et vous pouvez le trouver très précisément. Ces tâches sont la classification d'images, la détection d'objets et enfin, la segmentation d'instances.
Ensuite, vous pouvez créer des applications sympas pour extraire votre chat d'une image et le mettre dans une carte-cadeau amusante ou un “meme”. Mais que se passe-t-il si vous voulez une application qui comprend la scène et l'image ? Non seulement être capable d'identifier s'il y a un objet et où il se trouve, mais aussi ce qui se passe. Vous ne voulez probablement pas identifier s'il y a un client ou non dans un magasin, mais vous voudriez peut-être savoir si le client en question vous vole. Que l'utilisation d'une telle surveillance soit éthiquement correcte ou non est une toute autre question que vous devez considérer.
Néanmoins, supposons que nous nous concentrions sur la découverte de ce qui se passe dans une scène ou une image particulière. Dans ce cas, vous voudriez utiliser une tâche appelée génération de graphe de scène (figure ci-dessous, à gauche) où les objets sont détectés à l'aide de boîtes, comme indiqué précédemment avec la détection d'objet, qui est ensuite utilisée pour créer un graphique avec la relation de chaque objet avec l'autre objet. L’IA essaiera essentiellement de comprendre ce qui se passe à partir de tous les objets principaux de la scène. Cela fonctionne assez bien et découvre les caractéristiques principales de l'image, mais il y a un gros problème. Il s'appuie sur la précision de la boîte et ignore complètement l'arrière-plan, ce qui est souvent crucial pour comprendre ce qui se passe ou au moins pour donner un résumé plus réaliste.
Au lieu de cela, vous voudrez peut-être utiliser cette nouvelle tâche appelée génération de graphes de scène panoptiques, ou PSG (image ci-dessus, à droite). PSG est une nouvelle tâche visant à générer une représentation graphique plus complète d'une image ou d'une scène basée sur une segmentation panoptique plutôt que sur des boîtes. Quelque chose de beaucoup plus précis, prenant en compte tous les pixels d'une image, comme on l'a vu.
Et les créateurs de cette tâche ne l'ont pas seulement inventée, mais ils ont également créé un ensemble de données ainsi qu'un modèle de base pour tester vos résultats, ce qui est vraiment cool. Cette tâche a beaucoup de potentiel, car comprendre ce qui se passe dans une image est incroyablement utile et complexe pour les machines, même si les humains le font automatiquement. Cette tâche apporte une sorte d'intelligence nécessaire aux machines, faisant la différence entre être une application amusante comme Snapchat et un produit que vous utiliseriez pour gagner du temps ou répondre à un besoin, comme comprendre quand votre chat veut jouer et utiliser un robot pour jouer avec lui automatiquement pour qu'il ne s'ennuie pas tout le temps.
Comprendre une scène, c'est vraiment cool, mais comment une machine peut-elle faire ça ?
Eh bien, vous avez besoin de deux choses : un jeu de données et un modèle puissant. Nous savons que nous avons l'ensemble de données puisqu'ils l'ont construit pour nous. Maintenant la deuxième chose : comment apprendre de cet ensemble de données ? Ou, en d'autres termes, comment construire ce modèle d'IA, et que doit-il faire ? Il existe plusieurs façons d'aborder ce problème, et je vous invite à lire leur article pour en savoir plus, mais voici une façon de le faire:
Comme nous l'avons dit, le modèle doit trouver la classe de chaque pixel de l'image. Cela signifie qu'il doit identifier chaque pixel de l'image. La première étape (image ci-dessus) du modèle sera responsable de cela. Il s'agira d'un modèle, appelé Panoptic FPN, déjà entraîné pour classer chaque pixel. Un tel modèle est déjà disponible en ligne et assez puissant. Il prendra une image et renverra ce que nous appelons un masque avec chaque pixel correspondant à un objet existant comme une balle, un humain ou de l'herbe dans ce cas. Vous avez maintenant la segmentation, et vous savez ce qu'il y a dans l'image et ou ils sont. Si vous n'êtes pas familier avec le fonctionnement d'un tel modèle, je vous invite à lire l'un des articles que j'ai rédigés sur des approches similaires à celle-ci. La prochaine étape consiste à découvrir ce qui se passe avec ces objets.
Ici, vous savez déjà que c'est un homme qui joue au football (ou soccer!) sur un terrain, mais la machine n'en a aucune idée. La seule chose qu'elle sait, c'est qu'il y a un homme, un ballon et un terrain avec beaucoup de confiance, mais elle ne comprend rien et ne peut pas relier des éléments comme nous le faisons avec tant de facilité. Nous avons besoin d'un deuxième modèle (image ci-dessus, à droite) formé juste pour prendre ces objets et comprendre pourquoi ils sont dans la même image. Il s'agit de l'étape de génération du graphe de scène où un modèle apprendra à faire correspondre un dictionnaire de mots et de concepts couvrant plusieurs relations d'objet possibles avec des objets de la scène en utilisant les informations extraites de la première étape, en apprenant à structurer les objets les uns avec les autres. .
Et voilà !
Vous vous retrouvez avec un graphique clair que vous pouvez utiliser pour construire des phrases et des paragraphes couvrant ce qui se passe dans votre image. Vous pouvez maintenant utiliser cette approche dans votre prochaine application et lui donner quelques points de QI, la rapprochant de quelque chose d'intelligent !
Si vous souhaitez en savoir plus sur cette nouvelle tâche, je vous invite fortement à lire leur articles en lien ci-dessous.
Merci d'avoir lu jusqu'à la fin, et je vous verrai la semaine prochaine avec un autre article incroyable, et félicitations aux auteurs pour avoir été acceptés à ECCV 2022, auquel j'assisterai également !
Références
►Yang, J., Ang, Y.Z., Guo, Z., Zhou, K., Zhang, W. and Liu, Z., 2022. Panoptic Scene Graph Generation. arXiv preprint arXiv:2207.11247.
►Code: https://github.com/Jingkang50/OpenPSG
►Page du projet (dataset de PSG): https://psgdataset.org/
►Essayez-le: https://replicate.com/cjwbw/openpsg, https://huggingface.co/spaces/ECCV2022/PSG