Vision par ordinateurIA générativeVision par ordinateurIA générative
Vision par ordinateur7 min de lecture

Infinite Nature : plongez dans une image et explorez le paysage

La prochaine étape de la synthèse de vues : la génération de vues perpétuelles, dont le but est de plonger dans une image et d’en explorer le paysage !

Mis à jour le 06 mai 2021
Infinite Nature : plongez dans une image et explorez le paysage
Sommaire

(facultatif) Vous pouvez regarder la vidéo sur cet article à la fin !

L’article scientifique de cette semaine porte sur une nouvelle tâche appelée « génération perpétuelle de vues », ou Perpetual View Generation. Son objectif est de plonger dans une image et d’explorer le paysage. Il s’agit de la première solution à ce problème, et elle est extrêmement impressionnante puisque nous fournissons une seule image au réseau, qui peut ensuite générer l’impression d’y voler comme un oiseau. Bien sûr, la tâche est très complexe et s’améliorera avec le temps. Comme le dirait Two Minute Papers, imaginez dans seulement quelques articles scientifiques à quel point cette technologie pourrait être utile pour les jeux vidéo ou les simulateurs de vol !

Je suis impressionné de voir à quel point le système fonctionne déjà bien, même s’il s’agit de l’article qui introduit cette nouvelle tâche. C’est particulièrement remarquable compte tenu de sa complexité. Le modèle doit non seulement générer de nouveaux points de vue, comme GANverse3D, que j’ai présenté dans un article précédent, mais aussi générer une nouvelle image à chaque trame. Après quelques dizaines de trames, il ne reste presque plus rien de l’image originale à utiliser. Malgré tout, le processus peut continuer pendant des centaines de trames et produire un résultat bien meilleur que celui des approches actuelles de synthèse de vues.

Voyons comment les chercheurs génèrent toute une vidéo en vue aérienne, dans la direction désirée, à partir d’une seule image, ainsi que la façon dont vous pouvez l’essayer dès maintenant sans rien installer !

Exemple visuel de l’article « Infinite Nature : plongez dans une image et explorez le paysage »

Lio, A et al., Infinite Nature

Pour y arriver, ils doivent utiliser la géométrie de l’image. Ils commencent donc par produire une carte de disparité. Un réseau à l’état de l’art appelé MiDaS s’en charge. Je n’entrerai pas dans son fonctionnement, mais voici l’output qu’il produit. Cette carte de disparité est essentiellement l’inverse d’une carte de profondeur et renseigne le réseau sur les profondeurs présentes dans la scène.

Exemple visuel de l’article « Infinite Nature : plongez dans une image et explorez le paysage »

Lio, A et al., Infinite Nature

Nous passons ensuite à la vraie première étape de la technique : le moteur de rendu.
Le but de ce moteur est de générer une nouvelle vue à partir de l’ancienne.
Cette nouvelle vue devient la prochaine trame et, comme vous l’avez compris, l’ancienne vue est l’image en input. Un moteur de rendu différentiable accomplit cette tâche. Il est différentiable simplement parce que nous pouvons utiliser la rétropropagation pour l’entraîner, comme nous le faisons normalement avec les réseaux profonds traditionnels. Ce moteur reçoit l’image et la carte de disparité, puis produit un maillage tridimensionnel qui représente la scène, comme vous pouvez le voir à gauche de la figure 3 ci-dessous. Nous utilisons ensuite ce maillage 3D pour générer une image depuis un nouveau point de vue, P1 dans ce cas-ci. Nous obtenons cette impressionnante nouvelle image qui semble seulement un peu agrandie, mais qui n’est pas un simple zoom. Vous pouvez voir des marques roses sur l’image rendue et des marques noires sur la carte de disparité dans la figure 2 ci-dessus. Elles représentent les régions cachées ou situées hors du champ de vision de l’image précédente fournie en input au moteur de rendu. Celui-ci génère seulement une nouvelle vue et ne peut pas inventer les détails jamais observés. Nous faisons donc face à un problème important. Comment produire une image complète et réaliste si nous ne savons pas ce qui devrait se trouver à ces endroits ? Nous pouvons utiliser un autre réseau qui reçoit lui aussi la nouvelle carte de disparité et l’image en input afin de les « raffiner », comme à droite de la figure 3.

Exemple visuel de l’article « Infinite Nature : plongez dans une image et explorez le paysage »

Lio, A et al., Infinite Nature

Cet autre réseau, illustré à droite et appelé SPADE, est lui aussi un réseau à l’état de l’art, mais pour la synthèse conditionnelle d’images. Il s’agit ici de synthèse conditionnelle parce que nous devons fournir certaines conditions au réseau, dans ce cas-ci les parties roses et noires manquantes. Nous envoyons essentiellement cette image incomplète au deuxième réseau afin qu’il remplisse les trous et ajoute les détails nécessaires. Vous pouvez voir SPADE comme une architecture de GAN où l’image est d’abord encodée dans un code latent qui en capture le style. Ce code est ensuite décodé afin de générer une nouvelle version de l’image initiale, en remplissant simplement les parties manquantes avec de nouvelles informations qui respectent le même style que celui contenu dans l’information encodée.

Et voilà ! Nous avons notre nouvelle trame et sa carte de profondeur inverse. Il suffit maintenant de répéter le processus encore et encore afin d’obtenir toutes les trames suivantes, ce qui ressemble maintenant à ceci. En utilisant chaque output comme input de la prochaine itération, nous pouvons produire une infinité d’itérations qui respectent toujours le point de vue demandé et le contexte de la trame précédente !

Comme vous le savez, des algorithmes aussi puissants ont souvent besoin de données et d’annotations pour être entraînés, et celui-ci ne fait pas exception. Les chercheurs avaient besoin de séquences aériennes de la nature filmées par des drones. Ils les ont trouvées sur YouTube, puis les ont sélectionnées et prétraitées manuellement pour créer leur propre dataset. Heureusement, les autres chercheurs qui souhaitent s’attaquer à ce défi n’ont pas à refaire le même travail. L’équipe a publié le dataset de séquences aériennes de scènes côtières naturelles utilisé pour entraîner l’algorithme. Vous pouvez le télécharger sur la page du projet, liée dans les références ci-dessous.

Comme je l’ai mentionné, vous pouvez même l’essayer vous-même puisque le code est public. Les chercheurs ont aussi créé une démo que vous pouvez essayer dès maintenant dans Google Colab. Le lien se trouve dans les références ci-dessous. Il suffit d’exécuter les premières cellules. Elles installent le code et ses dépendances, puis chargent le modèle. Vous pouvez ensuite voler librement dans les images fournies et même téléverser la vôtre ! Bien sûr, toutes les étapes que je viens de mentionner sont déjà prêtes.

Exécutez simplement le code et amusez-vous !

Regardez plus d’exemples dans la vidéo :

Venez discuter avec nous dans notre communauté Discord : Learn AI Together et partagez vos projets, vos articles scientifiques et les meilleurs cours, trouvez des coéquipiers pour Kaggle et bien plus encore !

Si vous aimez mon travail et souhaitez rester au courant de l’IA, suivez-moi sur mes autres réseaux sociaux (LinkedIn, Twitter) et abonnez-vous à 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 préférez le format vidéo.
  • Soutenez financièrement mon travail sur Patreon

Références

Article scientifique : Liu, A., Tucker, R., Jampani, V., Makadia, A., Snavely, N. and Kanazawa, A., 2020. Infinite Nature: Perpetual View Generation of Natural Scenes from a Single Image, https://arxiv.org/pdf/2012.09855.pdf
Lien du projet : https://infinite-nature.github.io/
Code : https://github.com/google-research/google-research/tree/master/infinite_nature
Démonstration Colab : https://colab.research.google.com/github/google-research/google-research/blob/master/infinite_nature/infinite_nature_demo.ipynb#scrollTo=sCuRX1liUEVM
MiDaSL : Ranftl et al., 2020, Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer, https://github.com/intel-isl/MiDaS
SPADE : Park et al., 2019, Semantic Image Synthesis with Spatially-Adaptive Normalization, https://github.com/NVlabs/SPADE

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Qu’est-ce que la génération de vues perpétuelles ?

Elle génère sans cesse de nouvelles vues d’un paysage afin de donner l’impression qu’une caméra avance à travers une seule image source.

Pourquoi la méthode a-t-elle besoin d’une carte de disparité ?

La disparité estime la profondeur de la scène, ce qui aide le système à déplacer la caméra virtuelle et à repérer les nouvelles régions dévoilées.

Que se passe-t-il après le déplacement du point de vue ?

Les pixels connus sont projetés dans la nouvelle vue, puis un générateur conditionnel remplit les régions manquantes.

Pourquoi la génération répétée est-elle difficile ?

De petites erreurs de géométrie ou de synthèse s’accumulent et peuvent faire dériver ou s’effondrer une longue trajectoire.

À quoi peuvent servir les vues perpétuelles ?

Les applications possibles comprennent les jeux, les simulateurs de vol, l’exploration virtuelle et le prototypage rapide d’environnements.