Una guía para generar conjuntos de datos de imágenes sintéticas realistas con Kubric

Estás leyendo la publicación: Una guía para generar conjuntos de datos de imágenes sintéticas realistas con Kubric

Kubric, un generador de conjuntos de datos escalable, es el marco de Python que se utiliza para generar imágenes y videos fotorrealistas generados por computadora. La principal ventaja de esta herramienta de Python es que ayuda a crear conjuntos de datos de forma muy económica y nos da un control total sobre ellos. En este artículo repasaremos la Introducción de Kubric, luego veremos cuál es la necesidad de este marco. También trataremos de entender su mecanismo de funcionamiento. Los puntos principales que se discutirán en este artículo se enumeran a continuación.

Tabla de contenido

  1. Introducción a Kubric
  2. Arquitectura e imágenes de muestra
  3. Flujo de trabajo de Kubric
  4. ¿Por qué necesitamos este marco?
  5. Trabajo de trabajador

Introducción a Kubric

Después de varias bibliotecas y marcos innovadores de NLP, visión por computadora, Google ha lanzado otro marco llamado Kubric. El 07 de marzo de 2022, los investigadores de Google Klaus Greff, Francois Belletti, Lucas Beyer publicaron su trabajo de investigación sobre Kubric: un generador de conjuntos de datos escalable.

Es un marco Python de código abierto que le permite crear escenas fotorrealistas combinando las funciones de PyBullet y Blender. PyBullet es el módulo de Python que se usa para crear simulaciones de física y Blender se usa para renderizar. Estos datos generados se conocen como Datos sintéticos. Estos conjuntos de datos sintéticos proporcionan etiquetas de alta calidad para diversas tareas de imágenes, como detección de objetos, segmentación, clasificación, etc.

Arquitectura e imágenes de muestra

La siguiente imagen muestra la escena generada por Kubric junto con algunas de las anotaciones generadas automáticamente.

🔥 Recomendado:  TorchRec Sharding: un marco para construir sistemas de recomendación a gran escala

(Fuente de imagen)

Hay muchos conjuntos de datos sintéticos disponibles en Internet, como ScanNet, SYNTHIA, etc., pero no contienen todas las anotaciones posibles para todas las tareas de imagen (máscaras de segmentación semántica e instancia, flujo óptico), pero Kubric genera las imágenes con anotaciones y admite diferentes ángulos de visualización. y condiciones de iluminación. Para generar conjuntos de datos sintéticos también hay canalizaciones disponibles como Blender y Unity3D, estas canalizaciones cumplen con las limitaciones de iluminación y diferentes ángulos de visión, pero para crear anotaciones adicionales necesitan un conocimiento profundo del motor de renderizado subyacente.

La arquitectura de Kubric se da a continuación.

Kubric es una biblioteca de Python de alto nivel que fusiona la funcionalidad de PyBullet y Blender. Vemos un cuadro azul llamado Obrero, el componente principal de Kubric que se encarga de crear datos sintéticos. Al igual que en web scraping, el código que extrae datos del sitio web lo llamamos Crawler o Spider. De la misma manera, el código que es responsable de generar datos sintéticos lo llamamos Obrero.

Ahora, en la figura, los activos se cargan desde la fuente externa para que el trabajador cree una escena, PyBullet crea una simulación física, Blender procesa los fotogramas y, finalmente, se exportan imágenes, capas de anotaciones y otros metadatos.

Flujo de trabajo de Kubric

El flujo de trabajo de Kubric es muy simple, solo escriba el script de trabajo que crea una sola escena. Para crear un conjunto de datos completo, debe ejecutar un script de trabajo muchas veces. Después de esto, recopile el conjunto de datos generado.

🔥 Recomendado:  Huemint: ese asombroso generador de paleta de colores con IA

¿Por qué necesitamos este marco?

La pregunta más importante es por qué necesitamos este marco generador de datos. Como sabemos el aprendizaje automático y la inteligencia artificial, cuánto confiamos en los datos. Como se menciona en el trabajo de investigación:

“Los datos son la fuerza impulsora del aprendizaje automático”

Los datos son necesarios pero, ¿qué tal unos buenos datos?. Los buenos datos son la clave para el rendimiento de un sistema de aprendizaje automático que la anatomía de los modelos y los detalles de entrenamiento. Pero la recopilación, la anotación y la limpieza de datos reales a gran escala es un trabajo laborioso y costoso y, con frecuencia, genera problemas de privacidad, equidad de uso y problemas legales. Para manejar estas preocupaciones, Google presenta Kubric, con esta herramienta podemos generar datos de manera muy económica, automatizar la anotación de la verdad en el terreno, otorgar un control total sobre los datos y reducir los problemas de sesgo, privacidad y licencias.

Trabajo de trabajador

A Obrero es el componente principal de Kubric como discutimos anteriormente. Así que cada trabajador establece un Escena objeto, que realiza un seguimiento de la configuración global como la resolución, el número de fotogramas para renderizar, la gravedad, un Cámara, y todos los objetos, incluyendo luces, material, animaciones, etc. se llaman Activos. Cuando colocamos el activo en la escena, crea objetos correspondientes de diferentes vistas, como discutimos anteriormente PyBullet crea la simulación física y el módulo bpy para usar la funcionalidad de Blender, Blender es un potente renderizador de gráficos en 3D. Debajo de la imagen está la salida del Obrero. Un entorno sencillo con un suelo, luz apuntando, una cámara de perspectiva y 8 objetos KuBasic colocados en el suelo con velocidad. Es un vídeo de animación pero ponemos la imagen fija.

🔥 Recomendado:  Descripción del puesto de técnico de farmacia: Plantillas para contratar en su empresa

(Fuente de imagen)

Se pueden generar infinitas variaciones aleatorias de la escena mediante diferentes valores de Semilla aleatoria (rng), y el resultado final se puede ver en Blender abriendo el .licuadora archivo. La imagen exportada contiene anotaciones como segmentación, profundidad, flujo, normales.

Ultimas palabras

En este artículo, aprendimos sobre Kubric, desde su definición hasta su arquitectura, y sabemos por qué es necesario este marco. También podríamos entender cómo aborda los problemas de creación del conjunto de datos real y con qué facilidad Kubric aborda esos problemas.

Referencias

Tabla de Contenido