Pixel 3 apprend à déterminer la profondeur des photos

Le mode portrait sur les smartphones Pixel vous permet de prendre des photos d'aspect professionnel qui attirent l'attention sur le sujet en floutant l'arrière-plan. L'année dernière, nous avons décrit comment nous calculons la profondeur à l'aide d'une seule caméra et d'un autofocus à détection de phase (Autofocus à détection de phase, PDAF), également connu sous le nom d' autofocus à deux pixels . Ce processus a utilisé un algorithme stéréo traditionnel sans formation. Cette année, au Pixel 3, nous avons adopté l'apprentissage automatique afin d'améliorer l'évaluation de la profondeur et de produire des résultats encore meilleurs en mode portrait.


Gauche: l'image originale capturée en HDR + . À droite, une comparaison des résultats de la prise de vue en mode portrait utilisant la profondeur de la stéréo traditionnelle et de l'apprentissage automatique. Les résultats d'apprentissage produisent moins d'erreurs. Dans le résultat stéréo traditionnel, la profondeur de nombreuses lignes horizontales derrière l'homme est incorrectement estimée égale à la profondeur de l'homme lui-même, ce qui fait qu'elles restent nettes.

Une brève excursion dans le matériel précédent


L'année dernière, nous avons décrit que le mode portrait utilise un réseau de neurones pour séparer les pixels appartenant aux images des personnes et aux images d'arrière-plan, et complète ce masque à deux niveaux avec des informations de profondeur dérivées des pixels PDAF. Tout cela a été fait pour obtenir un flou, en fonction de la profondeur, proche de ce que peut donner un appareil photo professionnel.

Pour fonctionner, le PDAF prend deux plans légèrement différents de la scène. En basculant entre les images, vous pouvez voir que la personne ne bouge pas et que l'arrière-plan se déplace horizontalement - cet effet est appelé parallaxe . Puisque la parallaxe est fonction de la distance d'un point à la caméra et de la distance entre deux points de vue, nous pouvons déterminer la profondeur en comparant chaque point d'une image avec son point correspondant dans une autre.


Les images PDAF Ă  gauche et au milieu semblent similaires, mais la parallaxe peut ĂŞtre vue dans le fragment agrandi Ă  droite. Il est plus facile Ă  remarquer par la structure ronde au centre de l'agrandissement.

Cependant, trouver de telles correspondances dans les images PDAF (cette méthode est appelée profondeur stéréo) est une tâche extrêmement difficile, car les points entre les photos se déplacent très faiblement. De plus, toutes les technologies stéréo souffrent de problèmes d'ouverture. Si vous regardez la scène à travers une petite ouverture, il ne sera pas possible de trouver la correspondance des points pour les lignes parallèles à la ligne de base stéréo, c'est-à-dire la ligne reliant les deux caméras. En d'autres termes, lorsque vous étudiez les lignes horizontales dans la photo présentée (ou les lignes verticales dans les images avec une orientation portrait), tous les décalages d'une image par rapport à une autre sont approximativement les mêmes. Dans le mode portrait de l'année dernière, tous ces facteurs pouvaient conduire à des erreurs dans la détermination de la profondeur et de l'apparence d'artefacts désagréables.

Amélioration de l'évaluation de la profondeur


Avec le mode portrait Pixel 3, nous corrigeons ces erreurs en utilisant le fait que la parallaxe des photos stéréo n'est qu'un des nombreux indices dans les images. Par exemple, les points éloignés du plan de mise au point semblent moins nets, et ce sera un indice de la profondeur de la mise au point. De plus, même lorsque vous regardez une image sur un écran plat, nous pouvons facilement estimer la distance aux objets, car nous connaissons la taille approximative des objets du quotidien (c'est-à-dire que vous pouvez utiliser le nombre de pixels représentant le visage d'une personne pour évaluer sa distance). Ce sera un indice sémantique.

Développer manuellement un algorithme qui combine ces conseils est extrêmement difficile, mais en utilisant MO, nous pouvons le faire tout en améliorant les performances des conseils de parallaxe PDAF. Plus précisément, nous formons un réseau de neurones convolutifs écrit en TensorFlow , recevant des pixels PDAF en entrée et apprenant à prédire la profondeur. Cette nouvelle méthode améliorée d'estimation de la profondeur basée sur MO est utilisée en mode portrait Pixel 3.


Notre réseau de neurones convolutionnels reçoit des images PDAF et fournit une carte de profondeur. Le réseau utilise une architecture de type codeur-décodeur avec des connexions de saut supplémentaires et des blocs résiduels.

Formation au réseau de neurones


Pour former le réseau, nous avons besoin de beaucoup d'images PDAF et de cartes de profondeur correspondantes de haute qualité. Et comme nous avons besoin de prévisions de profondeur pour être utiles en mode portrait, nous avons besoin que les données de formation soient similaires aux photos prises par les utilisateurs avec les smartphones.

Pour ce faire, nous avons conçu un appareil Frankenfon spécial, dans lequel nous avons combiné cinq téléphones Pixel 3 et établi une connexion WiFi entre eux, ce qui nous a permis de prendre simultanément des photos de tous les téléphones (avec une différence ne dépassant pas 2 ms). Avec cet appareil, nous avons calculé des cartes de profondeur de haute qualité basées sur des photographies, en utilisant à la fois le mouvement et la stéréo sous plusieurs angles.


À gauche: un appareil pour collecter les données d'entraînement. Au milieu: un exemple de basculement entre cinq photographies. La synchronisation de la caméra garantit la capacité de calculer la profondeur dans les scènes dynamiques. Droite: profondeur totale. Les points avec une faible confiance, où la comparaison des pixels dans différentes photos était incertaine en raison de la faiblesse des textures, sont peints en noir et ne sont pas utilisés dans la formation.

Les données obtenues à l'aide de cet appareil étaient idéales pour former le réseau pour les raisons suivantes:

  • Cinq points de vue garantissent la prĂ©sence de parallaxe dans plusieurs directions, ce qui nous Ă©vite le problème de l'ouverture.
  • L'emplacement des camĂ©ras garantit que tout point de l'image est rĂ©pĂ©tĂ© dans au moins deux photographies, ce qui rĂ©duit le nombre de points qui ne peuvent pas ĂŞtre mis en correspondance.
  • La ligne de base, c'est-Ă -dire la distance entre les camĂ©ras, est supĂ©rieure Ă  celle du PDAF, ce qui garantit une estimation plus prĂ©cise de la profondeur.
  • La synchronisation de la camĂ©ra garantit la capacitĂ© de calculer la profondeur dans les scènes dynamiques.
  • La portabilitĂ© de l'appareil garantit la possibilitĂ© de prendre des photos dans la nature, simulant des photos que les utilisateurs prennent Ă  l'aide de smartphones.

Cependant, malgré l'idéalité des données obtenues à l'aide de cet appareil, il est toujours extrêmement difficile de prédire la profondeur absolue des objets de la scène - une paire PDAF donnée peut correspondre à différentes cartes de profondeur (tout dépend des caractéristiques des objectifs, de la distance focale, etc.). Pour tenir compte de tout cela, nous estimons la profondeur relative des objets de la scène, ce qui est suffisant pour obtenir des résultats satisfaisants en mode portrait.

Nous combinons tout cela


L'estimation de la profondeur à l'aide de MO sur le Pixel 3 devrait fonctionner rapidement afin que les utilisateurs n'aient pas à attendre trop longtemps pour obtenir des résultats de portrait. Cependant, pour obtenir de bonnes estimations de profondeur en utilisant une petite défocalisation et une parallaxe, vous devez alimenter les réseaux de neurones de la photo en pleine résolution. Pour garantir des résultats rapides, nous utilisons TensorFlow Lite , une solution multiplateforme pour le lancement de modèles MO sur des appareils mobiles et embarqués, ainsi qu'un puissant GPU Pixel 3, qui vous permet de calculer rapidement la profondeur sur des données d'entrée inhabituellement volumineuses. Ensuite, nous combinons les estimations de profondeur obtenues avec des masques de notre réseau de neurones, qui distingue les personnes, pour obtenir les plus beaux résultats de prise de vue en mode portrait.

Essayez-le vous-mĂŞme


Dans Google Camera App version 6.1 et supérieure, nos cartes de profondeur sont intégrées dans des images en mode portrait. Cela signifie que nous pouvons utiliser l' éditeur de profondeur de Google Photos pour modifier le degré de flou et le point AF après avoir pris une photo. Vous pouvez également utiliser des programmes tiers pour extraire des cartes de profondeur à partir de jpeg et les étudier vous-même. Vous pouvez également prendre un album à partir du lien , montrant des cartes de profondeur relative et des images correspondantes en mode portrait, pour comparer l'approche stéréo et MO traditionnelle.

Source: https://habr.com/ru/post/fr433600/


All Articles