Saltar al contenido principal

Imagen 3: Una guía con ejemplos en la API Géminis

Aprende a generar imágenes utilizando la API Imagen 3 de Google con Python, incluyendo la configuración de tu entorno y el ajuste de opciones como la relación de aspecto y los filtros de seguridad.
Actualizado 26 feb 2025  · 12 min de lectura

Imagen 3 es un modelo de generación de texto a imagen que puede representar con precisión escenas detalladas en varios estilos e incluso incorporar texto dentro de las imágenes, lo que lo hace adecuado para aplicaciones como la publicidad y la creación de contenidos multimedia.

Podemos utilizar Imagen 3 a través de la interfaz Vertex AI Studio o integrarla directamente en las aplicaciones mediante una API.

En este tutorial, te explicaré cómo generar imágenes con Imagen 3 utilizando la API de generación de Google con Python. Te guiaré a través de ejemplos prácticos que muestran cómo configurar el entorno, escribir el código necesario e integrar esta tecnología en tus proyectos. Tanto si quieres mejorar nuestras aplicaciones con imágenes dinámicas como si simplemente quieres satisfacer tu curiosidad, esta guía te proporcionará un camino sencillo para comprender y utilizar Imagen 3 mediante programación.

Desarrollar aplicaciones de IA

Aprende a crear aplicaciones de IA utilizando la API OpenAI.
Empieza a hacer Upskilling gratis

Configuración de la API de IA Generativa de Google

Para empezar a utilizar Imagen 3 en Python, necesitamos realizar un par de pasos esenciales. En primer lugar, crearemos un proyecto de Google Cloud. Una vez que nuestro proyecto esté listo, tenemos que generar una clave API. Esta clave permitirá a nuestro código Python interactuar con el servicio Imagen 3.

Crear un proyecto de Google Cloud

Crear un proyecto de Google Cloud es el primer paso para utilizar la API de IA de Google. Recorramos juntos el proceso:

  1. Accede a la consola de Google Cloud: Comenzamos navegando a la Consola de Google Cloud. Tendrás que iniciar sesión con tu cuenta de Google.
  2. Selecciona o crea un nuevo proyecto: En la consola, busca el menú desplegable del proyecto en la barra de navegación superior. Al hacer clic en él, aparecerán opciones para seleccionar un proyecto existente o crear uno nuevo. Elegimos "Nuevo Proyecto" para continuar.
  3. Proporciona detalles del proyecto: Aparecerá un sencillo formulario solicitando información básica. Podemos elegir cualquier nombre para el proyecto, pero es útil elegir algo descriptivo. Esto se puede cambiar más adelante si es necesario. Utilizaremos Imagen-tutorial. La organización puede dejarse en blanco.

Configurar un proyecto de Google Cloud para imagen 3

Crear la clave API

Ahora que el proyecto de Google Cloud está creado, podemos crear una clave API navegando hasta la página de la clave API en Google AI Studio.

Para crear la clave, haz clic en el botón "Crear clave API":

Crear una clave API en la consola de Google Cloud

En la ventana emergente, escribe el nombre del proyecto que hemos creado antes, selecciónalo y haz clic en "Crear clave API en proyecto existente":

Crear una clave API para un proyecto específico en Google Cloud

Copia la clave y crea un archivo llamado .env situado en la misma carpeta donde escribiremos el script de Python. El contenido del archivo .env debe ser:

GEMINI_API_KEY=<paste_your_key_here>

Cuenta de facturación

Si intentáramos utilizar la clave API ahora, obtendríamos un error que diría "La API de Imagen sólo es accesible para los usuarios facturados en este momento". Esto ocurre porque la API no es gratuita, y necesitamos asociar una cuenta de facturación al proyecto antes de poder utilizarla.

En el momento de escribir esto, el precio de generar una imagen con Imagen 3 es de 0,03 $. Consulta su página de precios para obtener más información.

Para añadir una cuenta de facturación, haz clic en el botón "Configurar facturación" situado junto a la clave API en Google AI Studio.

configurar una cuenta de facturación en google cloud

Esto nos redirigirá al sitio web de Google Cloud, donde podemos seleccionar una cuenta de facturación existente haciendo clic en "Vincular una cuenta de facturación" o crear una nueva haciendo clic en "Gestionar cuentas de facturación".

Crear una cuenta de facturación en google cloud projecs

Supongamos que no tenemos ninguna, así que creamos "Gestionar cuentas de facturación". En la parte superior izquierda de la página, hay un botón "Crear cuenta". Para crear la cuenta, necesitamos rellenar nuestros datos personales y una tarjeta de crédito para procesar los pagos.

Generar una imagen con Imagen 3 utilizando Python

Configuración del entorno con Anaconda

En este tutorial, utilizamos Anaconda, una popular plataforma que simplifica la gestión de paquetes y la configuración de proyectos, facilitando la ejecución de scripts Python.

Podemos instalar Anaconda desde su web oficial.

Para configurar el entorno Anaconda, abre un terminal y:

  • Crea un entorno: conda create -n imagen python=3.9. Este comando creó un entorno llamado imagen que utiliza la versión 3.9 de Python.
  • Activa el entorno: conda activate imagen.
  • Instala el paquete de IA generativa de Google: pip install -q -U google-genai.
  • Instala un paquete de procesamiento de imágenes para procesar las imágenes generadas: pip install pillow.
  • Instala un paquete para cargar la clave API: pip install python-dotenv

También podemos instalar los paquetes directamente sin utilizar Anaconda, pero existe el riesgo de que algunos de los paquetes actualmente instalados entren en conflicto con algunos de los nuevos paquetes o de que nuestra instalación de Python utilice una versión diferente de Python. Utilizar Anaconda evita estos problemas potenciales.

Generar nuestra primera imagen

Ya estamos preparados para empezar a utilizar Imagen 3. Crea un nuevo script de Python, por ejemplo, gen_image.py, en la misma carpeta que el archivo .env..

En primer lugar, importamos los paquetes necesarios:

# Google generative AI:
from google import genai
from google.genai import types

# Packages to process the generated image:
from PIL import Image
from io import BytesIO

# Packages to load the .env file:
import os
from dotenv import load_dotenv

A continuación, cargamos la clave API desde el archivo .env:

load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")

A continuación, inicializamos el cliente de IA generativa de Google. Es el objeto que nos permite comunicarnos con la API de Google:

client = genai.Client(api_key=api_key)

Para generar una imagen, utilizamos la función client.models.generate_images():

prompt="""
A dog surfing at the beach
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        number_of_images=1,
    )
)

Por último, mostramos la imagen generada utilizando el objeto Image:

for generated_image in response.generated_images:
  image = Image.open(BytesIO(generated_image.image.image_bytes))
  image.show()

He aquí el resultado:

Generar nuestra primera imagen con Imagen 3

Generación de texto

Una de las características interesantes de Imagen 3, en comparación con otros modelos de conversión de texto en imagen, es la capacidad de generar texto. Vamos a probarlo haciendo que genere la palabra "Té" utilizando hojas de té frescas:

prompt="""
Word "tea" made from fresh tea leaves, white background
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
)

He aquí el resultado:

Generar texto con Imagen 3

Opciones de generación de imágenes con Imagen 3

Las opciones de generación de imágenes se proporcionan mediante las opciones de types.GenerateImagesConfig. En el ejemplo anterior, sólo hemos especificado el número de imágenes a generar:

config=types.GenerateImagesConfig(
    number_of_images=1,
)

En esta sección, exploraremos las demás opciones que ofrece la API de Imagen 3. Consulta la documentación oficial para obtener más información.

Generar varias imágenes

Podemos utilizar el parámetro number_of_images para generar varias imágenes con una sola solicitud. Por defecto, se generan cuatro imágenes.

Intentemos generar dos imágenes para un cómic.

prompt="""
Single comic book panel of two people overlooking a destroyed city. 
A speech bubble points from one of them and says: I guess this is the end.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        number_of_images=2,
    )
)

He aquí el resultado:

Generar varias imágenes para un cómic con Imagen 3

Este es otro ejemplo de generación de texto en imágenes. Aunque la imagen de la izquierda tiene algún texto extra no deseado, gracias a la posibilidad de generar varias imágenes podemos aumentar nuestras posibilidades de obtener el resultado deseado. La imagen de la derecha cumple casi totalmente nuestra petición.

Control de la relación de aspecto

Por defecto, las imágenes generadas son cuadradas con una relación de aspecto 1:1. El modelo admite las siguientes relaciones de aspecto: 1:1, 3:4, 4:3, 9:16, y 16:9.

Vamos a generar una imagen 9:16 para utilizarla como fondo del teléfono:

prompt="""
A drone shot of a river flowing between mountains with a stormy sky.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        aspect_ratio="9:16",
    )
)

He aquí el resultado:

Generar una imagen con relación de aspecto 9:16 con Imagen 3

Filtro de nivel de seguridad

La documentación menciona que podemos utilizar la dirección safety_filter_level para especificar el nivel de filtrado de la imagen. Cada imagen generada recibe una puntuación de probabilidad que mide la probabilidad de que la imagen no sea segura (por ejemplo, contenido inapropiado). 

Establecer el filtro de nivel de seguridad es importante porque ayuda a garantizar que el contenido generado es apropiado y se ajusta a las preferencias del usuario, manteniendo así un entorno seguro y respetuoso para las distintas aplicaciones.

La documentación dice que admite tres niveles:

  • BLOCK_LOW_AND_ABOVE: Bloquea la imagen incluso con una puntuación de probabilidad baja.
  • BLOCK_MEDIUM_AND_ABOVE : Bloquea sólo las imágenes con puntuaciones de probabilidad medias y altas.
  • BLOCK_ONLY_HIGH : Bloquea sólo las imágenes con una puntuación de probabilidad alta

Sin embargo, tras experimentar, ahora la API sólo admite la opción BLOCK_LOW_AND_ABOVE. Cualquier otra cosa provocará un error.

Generación de personas

Podemos controlar si se permite que el modelo genere personas utilizando la opción person_generation. Ofrece dos opciones:

  • DONT_ALLOW: Las imágenes en las que aparezcan personas serán bloqueadas.
  • ALLOW_ADULT: Esto nos permitirá generar imágenes en las que aparezcan personas (sólo adultos).

La opción por defecto es permitir personas. Por ejemplo, si establecemos la opción de no permitir personas e intentamos generar una imagen de alguien cocinando, no obtendremos ninguna imagen.

prompt="""
A person cooking.
"""
response = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
    config=types.GenerateImagesConfig(
        person_generation="DONT_ALLOW",
    )
)
print(response.generated_images)

Este es el resultado:

None

Hacer un buen Prompt para Imagen 3

La documentación oficial proporciona una guía rápida completa para Imagen 3, así que no la repetiré aquí. Aquí tienes las ideas clave sobre cómo hacer un buen aviso:

  • Conceptos básicos de la redacción de avisos:
    • Asunto: Céntrate en el objeto, la persona o la escena principal que quieres representar.
    • Contexto y antecedentes: Describe el escenario o el entorno en el que se sitúa el sujeto.
    • Estilo: Especifica el estilo artístico o fotográfico que deseas (por ejemplo, boceto, pintura, fotografía).
  • Utiliza un lenguaje descriptivo: Utiliza adjetivos detallados y el contexto para aclarar el resultado deseado.
  • Estilos específicos de referencia: Utiliza artistas o movimientos artísticos conocidos para orientar la estética.
  • Texto en imágenes: Limita el texto a 25 caracteres o menos y utiliza frases distintas para proporcionar información adicional.
  • Pide la parametrización: Si necesitamos generar varias imágenes con el mismo estilo, es una buena idea crear una plantilla de aviso reutilizable y sólo proporcionar como entrada la parte que cambia.
  • Fotografía: Especifica los ajustes de la cámara, los tipos de objetivo y la iluminación para influir en el resultado.
  • Arte: Utiliza descriptores como "una pintura de..." o técnicas específicas como "pintura de acuarela de...".
  • Modificadores de la calidad de la imagen: Utiliza palabras clave como "alta calidad" o "4K" para mejorar la calidad del resultado.
  • Imágenes fotorrealistas: Incluye detalles técnicos como el tipo de objetivo y la distancia focal para aumentar el realismo.

Edición y personalización de imágenes

Imagen 3 también tiene la capacidad de editar imágenes y realizar la personalización de imágenes. Por desgracia, estas funciones siguen estando bloqueadas y sólo son accesibles para determinados usuarios.

Por ejemplo, la función de personalización nos permite personalizar una imagen de referencia a partir de una indicación. En el ejemplo, se da una foto de una mujer, y el indicador modifica esa imagen por una de la misma persona sosteniendo naranjas.

Ejemplo de personalización de imagen en imagen 3

Puedes encontrar más información al respecto y el formulario de solicitud de acceso en su sitio web.

Conclusión

En este tutorial, aprendimos a utilizar Imagen 3 para crear imágenes utilizando Python y la API Generativa de Google. En general, estoy satisfecho con el resultado que obtuve al experimentar con la API. Creo que los resultados son de alta calidad y contienen menos artefactos de IA, lo que hace más difícil distinguirlos de las imágenes reales.

La posibilidad de trabajar con texto en las imágenes es útil para la marca y el marketing. En general, creo que este modelo funciona bien. Sólo desearía que todas sus funciones fueran abiertas, porque creo que la edición de imágenes es aún más útil que la generación de imágenes.


François Aubry's photo
Author
François Aubry
LinkedIn
Enseñar siempre ha sido mi pasión. Desde mis primeros días como estudiante, busqué con entusiasmo oportunidades para dar clases particulares y ayudar a otros estudiantes. Esta pasión me llevó a realizar un doctorado, en el que también trabajé como ayudante de profesor para apoyar mis esfuerzos académicos. Durante esos años, encontré una inmensa satisfacción en el entorno tradicional del aula, fomentando las conexiones y facilitando el aprendizaje. Sin embargo, con la llegada de las plataformas de aprendizaje en línea, reconocí el potencial transformador de la educación digital. De hecho, participé activamente en el desarrollo de una plataforma de este tipo en nuestra universidad. Estoy profundamente comprometida con la integración de los principios de la enseñanza tradicional con metodologías digitales innovadoras. Mi pasión es crear cursos que no sólo sean atractivos e informativos, sino también accesibles para los alumnos en esta era digital.
Temas

Aprende IA con estos cursos

programa

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado
An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

Ajuste fino de GPT-3 mediante la API OpenAI y Python

Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Zoumana Keita 's photo

Zoumana Keita

12 min

tutorial

Tutorial de Generación de nubes de palabras en Python

Aprende a realizar Análisis exploratorios de datos para el Procesamiento del lenguaje natural utilizando WordCloud en Python.
Duong Vu's photo

Duong Vu

21 min

tutorial

Aprendizaje automático de datos categóricos con el tutorial de Python

Aprenda los trucos más comunes para manejar datos categóricos y preprocesarlos para construir modelos de aprendizaje automático.
Moez Ali's photo

Moez Ali

28 min

tutorial

Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas

Este tutorial te presenta la API de OpenAI, sus casos de uso, un enfoque práctico para utilizar la API y todas las prácticas recomendadas que debes seguir.
Arunn Thevapalan's photo

Arunn Thevapalan

13 min

tutorial

21 herramientas esenciales de Python

Conozca las herramientas esenciales de Python para el desarrollo de software, raspado y desarrollo web, análisis y visualización de datos y aprendizaje automático.
Abid Ali Awan's photo

Abid Ali Awan

6 min

Ver másVer más