Guía de generación de imágenes

Tarea de generador de imágenes

La tarea MediaPipe Image Generator te permite generar imágenes a partir de una instrucción de texto. Esta tarea 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 aumentar y usar como referencia para la generación. Para obtener más información sobre la generación de texto a imagen condicional, consulta Complementos de difusión en el dispositivo para la generación de texto a imagen condicional.

El Generador de imágenes también puede generar imágenes basadas en conceptos específicos que se le proporcionan al modelo durante el entrenamiento o el reentrenamiento. Para obtener más información, consulta Personaliza 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 para cada 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 condición: Genera imágenes con una instrucción de texto y una imagen de referencia. El Generador de imágenes usa imágenes de condición 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 del modelo personalizados.
Entradas de la tarea Resultados de la tarea
El Generador de imágenes acepta las siguientes entradas:
  • Instrucción de texto
  • Semilla
  • Cantidad de iteraciones generativas
  • Opcional: Imagen de condición
El Generador de imágenes arroja los siguientes resultados:
  • Imagen generada en función de las entradas.
  • Opcional: Son 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 de 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 base puede aumentar y usar como referencia para la generación. Estas imágenes de condición pueden ser marcas faciales, contornos de bordes y estimaciones de profundidad, que el modelo usa como contexto e información adicionales para generar imágenes.

Cuando agregues un modelo de complemento al modelo de base, también configura las opciones del complemento. El complemento Face landmark usa faceConditionOptions, el complemento Canny edge usa edgeConditionOptions y el complemento Depth usa depthConditionOptions.

Opciones de detección de bordes de Canny

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 Tamaño de la apertura para el operador de 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 al modelo del complemento. Objeto BaseOptions N/A

Para obtener más información sobre cómo funcionan 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 Es 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 presencia del rostro en la detección de puntos de referencia faciales. Float [0.0,1.0] 0.5
faceModelBaseOptions Objeto BaseOptions que establece la ruta de acceso al modelo que crea la imagen de condición. Objeto BaseOptions N/A
FacePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso al modelo del complemento. Objeto BaseOptions N/A

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

Opciones de profundidad

Configura las siguientes opciones en depthConditionOptions.

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

Modelos

El Generador de imágenes requiere un modelo fundamental, 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 livianos 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. Personalizar los modelos de base con pesos de LoRA es una opción que enseña al modelo de base sobre un concepto específico, como un objeto, una persona o un estilo, y los inyecta en las imágenes generadas.

Modelos de base

Los modelos base son modelos de difusión latentes 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 stable-diffusion-v1-5/stable-diffusion-v1-5 EMA-only, según el siguiente modelo:

Los siguientes modelos básicos también son compatibles con el Generador de imágenes:

Después de descargar un modelo fundamental, usa image_generator_converter para convertir el modelo al formato adecuado en el dispositivo 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 que se incluyen en esta sección, y deben usarse en combinación con un modelo de base. Los modelos de complementos permiten que Image Generator 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 condición, que puede generar el Generador de imágenes.

Complemento Canny Edge

Ejemplo de salida de dos imágenes generadas que usan una imagen de condición proporcionada con un contorno definido 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 fundamental usa los bordes que implica la imagen de condición y genera una imagen nueva basada en la instrucción de texto. El Generador de imágenes contiene funciones 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 Tamaño de la apertura para el operador de 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 al modelo del complemento. Objeto BaseOptions N/A

Para obtener más información sobre cómo funcionan estas opciones de configuración, consulta Detector de bordes de Canny.

Complemento Face Landmark

Ejemplo de salida de dos imágenes generadas que usan una imagen de condición proporcionada de un rostro bocetado 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 Face Landmarker proporciona una malla facial detallada de un solo rostro, que asigna la presencia y la ubicación de los rasgos faciales. El modelo fundamental usa la asignación facial implícita en la imagen de condición y genera un rostro nuevo sobre la malla.

Descarga el complemento Face landmark

El complemento Face landmark también requiere el paquete del modelo Face Landmarker para crear la imagen de condición. Este paquete de modelo es el mismo que usa la tarea Face Landmarker.

Descarga el paquete del modelo de puntos de referencia faciales

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

Nombre de la opción Descripción Rango de valores Valor predeterminado
minFaceDetectionConfidence Es 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 presencia del rostro en la detección de puntos de referencia faciales. Float [0.0,1.0] 0.5
faceModelBaseOptions Objeto BaseOptions que establece la ruta de acceso al modelo que crea la imagen de condición. Objeto BaseOptions N/A
FacePluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso al modelo del complemento. Objeto BaseOptions N/A

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

Complemento de profundidad

Ejemplo de salida de dos imágenes generadas que usan una imagen de condición proporcionada que muestra una forma general de un automóvil para demostrar que el complemento de Profundidad 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 fundamental usa la imagen de condición para inferir el tamaño y la profundidad del objeto que se generará, y genera una imagen nueva basada en la instrucción de texto.

Descargar el complemento Depth

El complemento de profundidad 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 Objeto BaseOptions que establece la ruta de acceso al modelo que crea la imagen de condición. Objeto BaseOptions N/A
depthPluginModelBaseOptions El objeto BaseOptions que establece la ruta de acceso al modelo del complemento. Objeto BaseOptions N/A

Personalización con LoRA

Personalizar 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 los nuevos pesos de LoRA después del entrenamiento, el modelo puede generar imágenes del nuevo concepto cuando se especifica el token en la instrucción de texto.

Para crear pesos de LoRA, se requiere entrenar un modelo fundamental con imágenes de un objeto, una persona o un estilo específicos, lo que permite que el modelo reconozca el nuevo concepto y lo aplique cuando genere 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 teteteras del conjunto de datos de DreamBooth, con el token "tetera monadikos":

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

Instrucción: Una tetera monádica junto a un espejo

El modelo personalizado recibió el token en la instrucción y agregó 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 solicitó 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 fundamental.