Guía de generación de imágenes

Tarea del generador de imágenes

La tarea del generador de imágenes de MediaPipe te permite generar imágenes a partir de una instrucción de texto. En esta tarea, se usa un modelo de texto a imagen para generar imágenes con técnicas de difusión.

La tarea acepta una instrucción de texto como entrada, junto con una imagen de condición opcional que el modelo puede mejorar y usar como referencia para la generación. Para obtener más información sobre la generación de texto a imagen condicionado, consulta Complementos de difusión integrados en el dispositivo para la generación de texto a imagen condicionado.

El generador de imágenes también puede generar imágenes basadas en conceptos específicos que se proporcionan al modelo durante el entrenamiento o la nueva capacitación. Para obtener más información, consulta Cómo personalizar con LoRa.

Comenzar

Para comenzar a usar esta tarea, sigue una de estas guías de implementación para tu plataforma de destino. En estas guías específicas de la plataforma, se explica una implementación básica de esta tarea, con ejemplos de código que usan un modelo predeterminado y las opciones de configuración recomendadas:

Detalles de la tarea

En esta sección, se describen las capacidades, las entradas, las salidas y las opciones de configuración de esta tarea.

Funciones

Puedes usar el generador de imágenes para implementar lo siguiente:

  1. Generación de texto a imagen: Genera imágenes con una instrucción de texto.
  2. Generación de imágenes con imágenes de condiciones: Genera imágenes con una instrucción de texto y una imagen de referencia. El generador de imágenes usa imágenes de condiciones de manera similar a ControlNet.
  3. Generación de imágenes con pesos de LoRA: Genera imágenes de personas, objetos y estilos específicos con una instrucción de texto usando pesos de modelos personalizados.
Entradas de tareas Resultados de las tareas
El generador de imágenes acepta las siguientes entradas:
  • Instrucción de texto
  • Semilla
  • Cantidad de iteraciones generativas
  • Opcional: imagen de estado
El generador de imágenes muestra los siguientes resultados:
  • Imagen generada en función de las entradas.
  • Opcional: Instantáneas iterativas de la imagen generada.

Opciones de configuración

Esta tarea tiene las siguientes opciones de configuración:

Nombre de la opción Descripción Rango de valores
imageGeneratorModelDirectory Es el directorio del modelo del generador de imágenes que almacena los pesos del modelo. PATH
loraWeightsFilePath Establece la ruta de acceso al archivo de pesos de LoRA. Es opcional y solo se aplica si el modelo se personalizó con LoRA. PATH
errorListener Establece un objeto de escucha de errores opcional. N/A

La tarea también admite modelos de complementos, lo que permite a los usuarios incluir imágenes de condiciones en la entrada de la tarea, que el modelo de base puede aumentar y usar como referencia para la generación. Estas imágenes de condiciones pueden ser puntos de referencia faciales, contornos de bordes y estimaciones de profundidad, que el modelo usa como contexto y como información adicional para generar imágenes.

Cuando agregues un modelo de complemento al modelo de base, también configura las opciones del complemento. El complemento de punto de referencia de rostro usa faceConditionOptions, el complemento de borde Canny usa edgeConditionOptions y el complemento de profundidad usa depthConditionOptions.

Opciones de bordes definidos

Configura las siguientes opciones en edgeConditionOptions.

Nombre de la opción Descripción Rango de valores Valor predeterminado
threshold1 Primer umbral para el procedimiento de histéresis. Float 100
threshold2 Segundo umbral para el procedimiento de histéresis. Float 200
apertureSize Es el tamaño de la apertura para el operador Sobel. El rango típico es de 3 a 7. Integer 3
l2Gradient Indica si se usa la norma L2 para calcular la magnitud del gradiente de la imagen, en lugar de la norma L1 predeterminada. BOOLEAN False
EdgePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso del modelo del complemento Objeto BaseOptions N/A

Para obtener más información sobre el funcionamiento de estas opciones de configuración, consulta Detector de bordes de Canny.

Opciones de puntos de referencia faciales

Configura las siguientes opciones en faceConditionOptions.

Nombre de la opción Descripción Rango de valores Valor predeterminado
minFaceDetectionConfidence La puntuación de confianza mínima para que la detección de rostros se considere exitosa. Float [0.0,1.0] 0.5
minFacePresenceConfidence Es la puntuación de confianza mínima de la puntuación de presencia de rostro en la detección de puntos de referencia del rostro. Float [0.0,1.0] 0.5
faceModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo que crea la imagen de la condición. Objeto BaseOptions N/A
FacePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo del complemento Objeto BaseOptions N/A

Para obtener más información sobre el funcionamiento de estas opciones de configuración, consulta la tarea de Face Landmarker.

Opciones de profundidad

Configura las siguientes opciones en depthConditionOptions.

Nombre de la opción Descripción Rango de valores Valor predeterminado
depthModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo que crea la imagen de la condición. Objeto BaseOptions N/A
depthPluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo del complemento Objeto BaseOptions N/A

Modelos

El generador de imágenes requiere un modelo de base, que es un modelo de IA de texto a imagen que usa técnicas de difusión para generar imágenes nuevas. Los modelos de base que se enumeran en esta sección son modelos ligeros optimizados para ejecutarse en smartphones de alta gama.

Los modelos de complementos son opcionales y complementan los modelos básicos, lo que permite a los usuarios proporcionar una imagen de condición adicional junto con una instrucción de texto para generar imágenes más específicas. La personalización de los modelos de base con pesos de LoRA es una opción que le enseña al modelo de base sobre un concepto específico, como un objeto, una persona o un estilo, y los inserta en las imágenes generadas.

Modelos de base

Los modelos de base son modelos de difusión latente de texto a imagen que generan imágenes a partir de una instrucción de texto. El generador de imágenes requiere que el modelo de base coincida con el formato del modelo runwayml/stable-diffusion-v1-5 EMA-only, según el siguiente modelo:

Los siguientes modelos de base también son compatibles con el generador de imágenes:

Después de descargar un modelo de base, usa image_generator_converter para convertirlo en el formato integrado en el dispositivo adecuado para el generador de imágenes.

Instala las dependencias necesarias:

$ pip install torch typing_extensions numpy Pillow requests pytorch_lightning absl-py

Ejecuta la secuencia de comandos convert.py:

$ python3 convert.py --ckpt_path <ckpt_path> --output_path <output_path>

Modelos de complementos

Google desarrolló los modelos de complementos de esta sección y deben usarse en combinación con un modelo de base. Los modelos de complementos permiten que el generador de imágenes acepte una imagen de condición junto con una instrucción de texto como entrada, lo que te permite controlar la estructura de las imágenes generadas. Los modelos de complementos proporcionan capacidades similares a ControlNet, con una arquitectura novedosa específicamente para la difusión en el dispositivo.

Los modelos de complementos deben especificarse en las opciones básicas y es posible que debas descargar archivos de modelos adicionales. Cada complemento tiene requisitos únicos para la imagen de estado, que puede generar el generador de imágenes.

Complemento Canny Edge

Ejemplo de resultado de dos imágenes generadas que usan una imagen de condición proporcionada con un contorno fuerte de ladrillos y la instrucción

El complemento Canny Edge acepta una imagen de condición que describe los bordes deseados de la imagen generada. El modelo de base usa los bordes que implica la imagen de condición y genera una imagen nueva según la instrucción de texto. El generador de imágenes contiene capacidades integradas para crear imágenes de condiciones y solo requiere que descargues el modelo del complemento.

Descarga el complemento Canny Edge

El complemento Canny Edge contiene las siguientes opciones de configuración:

Nombre de la opción Descripción Rango de valores Valor predeterminado
threshold1 Primer umbral para el procedimiento de histéresis. Float 100
threshold2 Segundo umbral para el procedimiento de histéresis. Float 200
apertureSize Es el tamaño de la apertura para el operador Sobel. El rango típico es de 3 a 7. Integer 3
l2Gradient Indica si se usa la norma L2 para calcular la magnitud del gradiente de la imagen, en lugar de la norma L1 predeterminada. BOOLEAN False
EdgePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso del modelo del complemento Objeto BaseOptions N/A

Para obtener más información sobre el funcionamiento de estas opciones de configuración, consulta Detector de bordes de Canny.

Complemento de puntos de referencia faciales

Ejemplo de resultado de dos imágenes generadas que usan una imagen de condición proporcionada de un rostro esbozado y dos instrucciones diferentes para mostrar que la misma imagen de condición se puede usar para generar imágenes de aspecto muy diferente

El complemento Face Landmark acepta el resultado de Face Landmarker de MediaPipe como la imagen de condición. El punto de referencia de rostro proporciona una malla facial detallada de un solo rostro, que asigna la presencia y la ubicación de los rasgos faciales. El modelo de base usa la asignación facial que implica la imagen de la condición y genera un rostro nuevo sobre la malla.

Descarga el complemento de puntos de referencia faciales

El complemento de puntos de referencia faciales también requiere el paquete de modelos de Face Landmarker para crear la imagen de condición. Este paquete de modelos es el mismo que usa la tarea Face Landmarker.

Descarga el paquete de modelos de puntos de referencia de rostros

El complemento Face Landmark contiene las siguientes opciones de configuración:

Nombre de la opción Descripción Rango de valores Valor predeterminado
minFaceDetectionConfidence La puntuación de confianza mínima para que la detección de rostros se considere exitosa. Float [0.0,1.0] 0.5
minFacePresenceConfidence Es la puntuación de confianza mínima de la puntuación de presencia de rostro en la detección de puntos de referencia del rostro. Float [0.0,1.0] 0.5
faceModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo que crea la imagen de la condición. Objeto BaseOptions N/A
FacePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo del complemento Objeto BaseOptions N/A

Para obtener más información sobre el funcionamiento de estas opciones de configuración, consulta la tarea de Face Landmarker.

Complemento de profundidad

Ejemplo de resultado de dos imágenes generadas que usan una imagen de condición proporcionada que muestra la forma general de un automóvil para mostrar que el complemento Depth puede crear imágenes que agregan profundidad a una imagen plana

El complemento Depth acepta una imagen de condición que especifica la profundidad monocular de un objeto. El modelo de base usa la imagen de condición para inferir el tamaño y la profundidad del objeto que se generará y genera una imagen nueva según la instrucción de texto.

Descarga el complemento Depth

El complemento Depth también requiere un modelo de estimación de profundidad para crear la imagen de condición.

Descarga el modelo de estimación de profundidad

El complemento Depth contiene las siguientes opciones de configuración:

Nombre de la opción Descripción Rango de valores Valor predeterminado
depthModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo que crea la imagen de la condición. Objeto BaseOptions N/A
depthPluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso para el modelo del complemento Objeto BaseOptions N/A

Personalización con LoRA

La personalización de un modelo con LoRA puede permitir que el generador de imágenes genere imágenes basadas en conceptos específicos, que se identifican con tokens únicos durante el entrenamiento. Con las nuevas ponderaciones de LoRA después de la capacitación, el modelo puede generar imágenes del concepto nuevo cuando se especifica el token en la instrucción de texto.

Para crear pesos LoRA, se debe entrenar un modelo de base en imágenes de un objeto, una persona o un estilo específicos, lo que permite que el modelo reconozca el concepto nuevo y lo aplique cuando se generen imágenes. Si creas pesos de LoRa para generar imágenes de personas y rostros específicos, usa esta solución solo en tu rostro o en los rostros de las personas que te hayan dado permiso para hacerlo.

A continuación, se muestra el resultado de un modelo personalizado entrenado con imágenes de teteras del conjunto de datos de DreamBooth, con el token "monadikos teapot":

Una imagen fotorrealista generada de una tetera sobre una mesa junto a un espejo montado en una pared

Consigna: Una tetera monadikos junto a un espejo

El modelo personalizado recibió el token en la instrucción y, luego, inyectó una tetera que aprendió a representar a partir de los pesos de LoRA y la colocó en la imagen junto a un espejo, como se solicita en la instrucción.

LoRA con Vertex AI

Para obtener más información, consulta la guía de personalización, que usa Model Garden en Vertex AI para personalizar un modelo aplicando pesos de LoRA a un modelo de base.