Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Intelligence artificielle Discussion :

NVIDIA transforme des images 2D en modèles 3D en moins de 100 ms


Sujet :

Intelligence artificielle

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 113
    Points : 178 809
    Points
    178 809
    Par défaut NVIDIA transforme des images 2D en modèles 3D en moins de 100 ms
    Dans le développement de jeux vidéo, la création de modèles 3D prend une bonne partie du temps total, mais aussi des gens compétents. Certains ont donc eu l’idée d’automatiser cette partie, par exemple à l’aide de réseaux neuronaux, la tarte à la crème actuelle. L’idée très générale est simple : on entre une image, on ressort un modèle 3D. Un peu plus en détail, on voit déjà apparaître des zones d’ombre : on peut traiter assez facilement des images avec des réseaux neuronaux, mais quid des modèles 3D ? Quelle architecture pourrait-on utiliser pour relier les deux ? Comment effectuer l’entraînement du système ? Commençons par la troisième partie.

    Quand il s’agit de transformations du genre, il est courant d’utiliser des GAN, des réseaux antagonistes génératifs : dans ce cas-ci, par exemple, un réseau neuronal crée un modèle 3D à partir d’une image 2D, un autre réseau décide si le modèle 3D correspond bien à l’image 2D. Ainsi, on dispose d’un mécanisme qui peut améliorer le générateur de modèles 3D. Cependant, comment décider si le modèle 3D correspond à l’image ? Pour ce faire, il faut utiliser un moteur de rendu, auquel on fournit le modèle 3D produit : il ressort une image, que l’on compare avec l’image d’entrée.

    Et si on simplifiait la chose, en intégrant le moteur de rendu dans le réseau neuronal (au moins pendant son entraînement) ? Ainsi, on a un réseau qui prend une image en entrée, ressort un modèle 3D, qui passe dans un moteur de rendu, on calcule l’erreur du modèle en comparant l’image obtenue à la sortie du moteur de rendu avec l’image d’entrée. Il faut “juste” arriver à dériver le moteur de rendu, ce que l’on arrive à faire depuis quelques années, de manière approchée (mais de manière exacte avec du lancer de rayons). Les chercheurs introduisent cependant une nouvelle approche, DIB-R (differentiable interpolation-based renderer), avec un mélange d’interpolation locale (comme le fait tout moteur de rendu, par exemple à l’échelle d’un triangle éclairé) et d’agrégation globale.


    Ensuite, quelle architecture de réseau faut-il utiliser ? Le choix des chercheurs de NVIDIA s’est porté sur un encodeur-décodeur, pour (en principe) réduire l’image à quelques paramètres très significatifs (par exemple : oiseau, petit, jaune). L’encodeur peut donc notamment effectuer une tâche de reconnaissance d’objet.


    Comment représenter un modèle 3D ? Les chercheurs ont pris la manière la plus classique de faire : ils présupposent que le modèle peut être formé à partir d’une sphère avec une discrétisation donnée ; la sortie du modèle est la position et la couleur de chaque arête de cette sphère. D’une certaine manière, cette sortie est une “image” à six dimensions (trois pour la position, trois pour la couleur), d’où l’utilisation d’une architecture avec des convolutions pour gérer la sortie. (Pour obtenir de meilleurs résultats, les chercheurs ont aussi étendu leur travail pour générer une texture en sortie, ainsi que des informations d’éclairage.) L’arrière-plan de l’image est extrait et affiché derrière le modèle 3D.


    Le résultat est une application qui peut générer des modèles 3D en moins de cent millisecondes. Ces derniers ne sont pas encore parfaits (bien que meilleurs que les approches précédentes), mais sont une bonne base pour un artiste : il peut gagner beaucoup de temps en partant de ces modèles plutôt que de zéro. Son entraînement a néanmoins pris deux jours.

    Source : l’article et son supplément.

    Voir aussi : le code source de DIB-R.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    tlt
    tlt est déconnecté
    Membre actif Avatar de tlt
    Homme Profil pro
    Chef de projet IT/Telecom, Architecte de système d'information
    Inscrit en
    juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chef de projet IT/Telecom, Architecte de système d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : juillet 2004
    Messages : 155
    Points : 288
    Points
    288
    Par défaut
    Qu'entend-on par "rendu dérivable"? Du/par transfert learning?

  3. #3
    Membre à l'essai
    Homme Profil pro
    intense
    Inscrit en
    décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : intense

    Informations forums :
    Inscription : décembre 2012
    Messages : 3
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup pour la clarté de l'article et plus généralement pour la qualité de vos nouvelles

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 113
    Points : 178 809
    Points
    178 809
    Par défaut
    Citation Envoyé par alf2010 Voir le message
    Merci beaucoup pour la clarté de l'article et plus généralement pour la qualité de vos nouvelles
    Merci, c'est le genre de message qui fait plaisir !

    Citation Envoyé par tlt Voir le message
    Qu'entend-on par "rendu dérivable"? Du/par transfert learning?
    C'est-à-dire qu'un opérateur de dérivation peut passer à travers le moteur de rendu (vraiment au sens mathématique). Plus précisément : si on note le modèle 3D x et l'image obtenue par le moteur de rendu f(x), on veut pouvoir calculer la dérivée d'une chose comme ||f(x) - y||, c'est-à-dire une erreur sur l'image produite f(x) par rapport à l'image initiale y. Sauf que cette notation est un peu tronquée : x dépend déjà de y par rapport à une fonction assez complexe, paramétrée disons par θ. On veut calculer la dérivée de ||f(x(y, θ)) - y|| par rapport à chacun de ces paramètres θ. Or, pour y arriver, il faut une manière de dériver cette fonction f, d'où la notion de "moteur de rendu dérivable".
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. [Débutant] transformation des images dicom
    Par Assou95 dans le forum Images
    Réponses: 0
    Dernier message: 22/02/2018, 18h36
  2. Transformation des images en carrés
    Par bendesarts dans le forum Word
    Réponses: 2
    Dernier message: 07/11/2013, 23h31
  3. transformer des images en flux vidéo
    Par archer dans le forum C++
    Réponses: 3
    Dernier message: 30/09/2008, 10h21
  4. Transformer des images OpenCV en AVI
    Par bustaja dans le forum OpenCV
    Réponses: 2
    Dernier message: 24/04/2007, 15h11
  5. Réponses: 2
    Dernier message: 03/09/2004, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo