Pixel 3 aprende a determinar la profundidad en fotos

El modo retrato en los teléfonos inteligentes Pixel le permite tomar fotos de aspecto profesional que llaman la atención sobre el sujeto con desenfoque del fondo. El año pasado, describimos cómo calculamos la profundidad usando una cámara única y el enfoque automático de detección de fase (enfoque automático de detección de fase, PDAF), también conocido como enfoque automático de doble píxel . Este proceso utilizó un algoritmo estéreo tradicional sin entrenamiento. Este año en Pixel 3, adoptamos el aprendizaje automático para mejorar la evaluación de profundidad y producir resultados aún mejores en modo vertical.


Izquierda: la imagen original capturada en HDR + . A la derecha hay una comparación de los resultados de disparo en modo vertical usando la profundidad del estéreo tradicional y el aprendizaje automático. Los resultados del aprendizaje producen menos errores. En el resultado estéreo tradicional, la profundidad de muchas líneas horizontales detrás del hombre se estima incorrectamente igual a la profundidad del hombre mismo, como resultado de lo cual permanecen nítidas.

Una breve excursión al material anterior.


El año pasado, describimos que el modo retrato usa una red neuronal para separar los píxeles que pertenecen a las imágenes de las personas y una imagen de fondo, y complementa esta máscara de dos niveles con información de profundidad derivada de los píxeles PDAF. Todo esto se hizo para obtener desenfoque, dependiendo de la profundidad, cerca de lo que puede ofrecer una cámara profesional.

Para trabajar, la PDAF toma dos tomas ligeramente diferentes de la escena. Al cambiar de imagen, puede ver que la persona no se mueve y el fondo se mueve horizontalmente; este efecto se llama paralaje . Dado que el paralaje es una función de la distancia de un punto desde la cámara y la distancia entre dos puntos de vista, podemos determinar la profundidad comparando cada punto en una imagen con su punto correspondiente en otra.


Las imágenes PDAF a la izquierda y en el centro se ven similares, pero se puede ver paralaje en el fragmento ampliado a la derecha. Es más fácil notarlo por la estructura redonda en el centro de aumento.

Sin embargo, encontrar tales correspondencias en las imágenes PDAF (este método se llama profundidad estéreo) es una tarea extremadamente difícil, ya que los puntos entre las fotos se mueven muy débilmente. Además, todas las tecnologías estéreo sufren problemas de apertura. Si observa la escena a través de una pequeña abertura, no será posible encontrar la correspondencia de puntos para líneas paralelas a la línea de base estéreo, es decir, la línea que conecta las dos cámaras. En otras palabras, cuando se estudian líneas horizontales en la foto presentada (o líneas verticales en imágenes con orientación vertical), todos los cambios en una imagen en relación con otra se ven aproximadamente iguales. En el modo de retrato del año pasado, todos estos factores podrían conducir a errores en la determinación de la profundidad y la aparición de artefactos desagradables.

Mejora de la evaluación de profundidad


Con el modo retrato de Pixel 3, solucionamos estos errores usando el hecho de que el paralaje de las fotos estéreo es solo una de las muchas pistas en las imágenes. Por ejemplo, los puntos que están lejos del plano de enfoque parecen menos nítidos, y esto será una pista de la profundidad desenfocada. Además, incluso al ver una imagen en una pantalla plana, podemos estimar fácilmente la distancia a los objetos, ya que conocemos el tamaño aproximado de los objetos cotidianos (es decir, puede usar la cantidad de píxeles que representan la cara de una persona para evaluar qué tan lejos está ubicada). Esta será una pista semántica.

Desarrollar manualmente un algoritmo que combine estos consejos es extremadamente difícil, pero usando MO, podemos hacerlo mientras mejoramos el rendimiento de los consejos de paralaje PDAF. Específicamente, entrenamos una red neuronal convolucional escrita en TensorFlow , que recibe píxeles de PDAF como entrada, y aprende a predecir la profundidad. Este nuevo método mejorado para estimar la profundidad basado en MO se usa en el modo vertical Pixel 3.


Nuestra red neuronal convolucional recibe imágenes PDAF y proporciona un mapa de profundidad. La red utiliza una arquitectura de estilo codificador-decodificador con conexiones de omisión adicionales y bloques residuales.

Entrenamiento de redes neuronales


Para entrenar la red, necesitamos muchas imágenes PDAF y mapas de profundidad de alta calidad correspondientes. Y dado que necesitamos que las predicciones de profundidad sean útiles en el modo vertical, necesitamos que los datos de entrenamiento sean similares a las fotos que los usuarios toman con los teléfonos inteligentes.

Para hacer esto, diseñamos un dispositivo Frankenfon especial, en el que combinamos cinco teléfonos Pixel 3 y establecimos una conexión WiFi entre ellos, lo que nos permitió tomar fotos simultáneamente desde todos los teléfonos (con una diferencia de no más de 2 ms). Con este dispositivo, calculamos mapas de profundidad de alta calidad basados ​​en fotografías, utilizando tanto movimiento como estéreo desde múltiples ángulos.


Izquierda: un dispositivo para recopilar datos de entrenamiento. En el medio: un ejemplo de cambio entre cinco fotografías. La sincronización de la cámara garantiza la capacidad de calcular la profundidad en escenas dinámicas. Derecha: profundidad total. Los puntos con poca confianza, donde la comparación de píxeles en diferentes fotos era incierta debido a la debilidad de las texturas, están pintados de negro y no se usan en el entrenamiento.

Los datos obtenidos con este dispositivo fueron ideales para entrenar la red por las siguientes razones:

  • Cinco puntos de vista garantizan la presencia de paralaje en varias direcciones, lo que nos salva del problema de la apertura.
  • La ubicación de las cámaras garantiza que cualquier punto de la imagen se repita en al menos dos fotografías, lo que reduce el número de puntos que no pueden coincidir.
  • La línea base, es decir, la distancia entre las cámaras, es mayor que la del PDAF, lo que garantiza una estimación más precisa de la profundidad.
  • La sincronización de la cámara garantiza la capacidad de calcular la profundidad en escenas dinámicas.
  • La portabilidad del dispositivo garantiza la posibilidad de tomar fotos en la naturaleza, simulando fotos que los usuarios toman con teléfonos inteligentes.

Sin embargo, a pesar de la idealidad de los datos obtenidos con este dispositivo, todavía es extremadamente difícil predecir la profundidad absoluta de los objetos de la escena: cualquier par PDAF puede corresponder a varios mapas de profundidad (todo depende de las características de las lentes, la distancia focal, etc.). Para tener todo esto en cuenta, estimamos la profundidad relativa de los objetos de la escena, que es suficiente para obtener resultados satisfactorios en modo retrato.

Combinamos todo esto


La estimación de la profundidad utilizando MO en el Pixel 3 debería funcionar rápidamente para que los usuarios no tengan que esperar demasiado para obtener los resultados de los retratos. Sin embargo, para obtener buenas estimaciones de profundidad utilizando un pequeño desenfoque y paralaje, debe alimentar las redes neuronales de la foto en resolución completa. Para garantizar resultados rápidos, utilizamos TensorFlow Lite , una solución multiplataforma para lanzar modelos MO en dispositivos móviles e integrados, así como una potente GPU Pixel 3, que le permite calcular rápidamente la profundidad para datos de entrada inusualmente grandes. Luego combinamos las estimaciones de profundidad obtenidas con máscaras de nuestra red neuronal, que distingue a las personas, para obtener los resultados más bellos de disparar en modo retrato.

Pruébalo tú mismo


En la aplicación Google Camera versión 6.1 y superior, nuestros mapas de profundidad están integrados en imágenes en modo retrato. Esto significa que podemos usar el Editor de profundidad de Google Photos para cambiar el grado de desenfoque y el punto de enfoque después de tomar una foto. También puede usar programas de terceros para extraer mapas de profundidad de jpeg y estudiarlos usted mismo. También puede tomar un álbum del enlace , que muestra mapas de profundidad relativa e imágenes correspondientes en modo vertical, para comparar el enfoque estéreo tradicional y MO.

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


All Articles