Utilice el modelo DALL·E 2 de OpenAI para generar imágenes usando Python.
Si alguna vez ha usado ChatGPT, entonces ha sido testigo de su intuición. Con las API de OpenAI, la generación de código, la finalización de texto, la comparación de texto, el entrenamiento de modelos y la generación de imágenes están en la bolsa para que los desarrolladores exploren e integren en las aplicaciones.
En este tutorial, aprenderá a usar la API de OpenAI con Python para generar, editar y variar imágenes mediante indicaciones en lenguaje natural.
Primeros pasos con OpenAI usando Python
Debe configurar algunas cosas antes de comenzar este tutorial. Primero, asegúrese de haber instalado la última versión de Python en su computadora. Si usa una distribución de Linux como Ubuntu, es posible que también desee ver cómo instalar Phyton en Ubuntu.
Cree una nueva carpeta para su proyecto y abra su línea de comando en el directorio de su proyecto.
Lo siguiente es la instalación del paquete OpenAI. Necesitas instalar
almohada para convertir imágenes a RGBA mientras usa el punto final de edición de imágenes. Es posible que también desee instalar python-dotenv; usará esto para enmascarar claves secretas.Recomendamos crear un entorno virtual Python dedicado para aislar dependencias.
El código utilizado en este proyecto está disponible en un repositorio GitHub y es gratis para su uso bajo la licencia MIT.
Para instalar el python-dotenv, almohada, y abierto paquetes, ejecute el siguiente comando en la terminal:
pip instalar openai python-dotenv almohada
Ahora dirígete a IA abierta e inicie sesión en su tablero para obtener su clave API:
- Una vez que haya iniciado sesión, haga clic en el icono de su perfil en la sección superior derecha.
- Ir a Ver claves API. Si su clave API no está visible, haga clic en Crear nueva clave secreta para generar uno nuevo.
- Copie la clave secreta generada y péguela en algún lugar seguro de su computadora. Es posible que desee pegarlo en un archivo de variables de entorno en el directorio raíz de su proyecto por seguridad.
Cómo generar y editar imágenes con la API de OpenAI en Python
La generación de imágenes de OpenAI API presenta puntos finales para generar nuevas imágenes, crear variaciones de imágenes y editarlas.
En las siguientes secciones, explorará estos puntos finales para generar, editar, modificar y descargar imágenes mediante indicaciones en lenguaje natural.
Generación de imágenes usando la API de OpenAI
El punto final de generación de imágenes acepta tres argumentos de palabras clave. Éstas incluyen inmediato, norte, y tamaño.
El inmediato palabra clave es una cadena de texto que describe la imagen que desea generar, mientras que norte es el número de imágenes a generar durante una llamada a la API. El tamaño es el tamaño de la imagen, y al momento de escribir, solo acepta 256x256, 512x512 y 1024x1024 píxeles, según el oficial IA abierta documentación de generación de imágenes.
El siguiente código genera imágenes utilizando indicaciones en lenguaje natural y genera su URL (direcciones de imagen):
importar abierto
importar sistema operativo
importar peticiones
de dotenv importar carga_dotenv
de PIL importar Imagen
cargar_dotenv()claseGenerador de imágenes:
definitivamente__en eso__(ser) -> cadena:
self.imagen_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
ser. APIKey = openai.api_key
self.nombre = NingunodefinitivamentegenerarImagen(self, Prompt, ImageCount, ImageSize):
intentar:
ser. Clave API
respuesta = openai. Imagen.crear(
aviso = aviso,
n = Recuento de imágenes,
tamaño = tamaño de la imagen,
)
self.image_url = respuesta['datos']
self.image_url = [imagen["dirección URL"] para imagen en self.image_url]
imprimir (self.image_url)
devolver self.image_url
excepto openai.error. OpenAIError como mi:
imprimir (e.http_status)
imprimir (e.error)definitivamentedescargarImagen(yo, nombres)-> Ninguno:
intentar:
self.nombre = nombres
para URL en self.image_url:
imagen = solicitudes.get (url)
para nombre en propio.nombre:
con abierto("{}.png".formato (nombre), "wb") como F:
f.escribir (imagen.contenido)
excepto:
imprimir("Ocurrió un error")
devolver propio.nombre# Instanciar la clase
imageGen = ImageGenerator()# Generar imágenes:
imageGen.generarImagen(
Aviso = "León gigante, oso, mono y tigre parados en una cascada de agua",
ImageCount = 2,
Tamaño de la imagen = '1024x1024'
)
# Descarga las imágenes:
imageGen.downloadImage (nombres=[
"Animales",
"Animales2"
])
El código anterior contiene un Generador de imágenes clase con el URL de la imagen y Clave API atributos El generarImagen El método adapta los requisitos del punto final de generación de imágenes. genera norte URL que utilizan el mensaje de lenguaje natural, dependiendo de la Número de imágenes valor.
Sin embargo, self.image_url extrae las URL de imagen generadas de la respuesta JSON en una lista mediante el bucle for en una lista de comprensión.
La salida se ve así:
Finalmente, el descargarImagen El método descarga cada imagen solicitando las direcciones generadas. Este método acepta norte número de nombres que le quieras dar a cada imagen.
Edición de imágenes usando la API de OpenAI
El punto final de edición le permite editar una imagen existente basada en una plantilla de máscara. La máscara es un formato RGBA con un área transparente anotada y debe tener el mismo tamaño que la imagen que desea editar.
Cuando proporciona una máscara, el punto final de edición reemplaza su área enmascarada con el nuevo mensaje en la imagen existente para producir una nueva. Agregue los siguientes métodos a la clase anterior anterior:
claseGenerador de imágenes:
definitivamente__en eso__(ser, ...):
...definitivamenteconvertirImagen(self, nombre de la máscara):
imagen = Imagen.abrir("{}.png".format (nombre de la máscara))
rgba_image = imagen.convert('RGBA')
rgba_image.save("{}.png".format (nombre de la máscara))devolver imagen_rgba
definitivamenteEditar imagen(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> cadena:
self.convertImage (máscaraNombre)
respuesta = openai. Imagen.create_edit(
imagen = abrir ("{}.png".formato (nombre de la imagen), "rb"),
máscara = abrir ("{}.png".format (nombre de la máscara), "rb"),
aviso = aviso,
n = Recuento de imágenes,
tamaño = tamaño de la imagen,
)
self.image_url = respuesta['datos']
self.image_url = [imagen["dirección URL"] para imagen en self.image_url]imprimir (self.image_url)
devolver self.image_url# Editar una imagen existente:
imageGen.editImage(
nombre de la imagen = "Animales",
nombre de máscara = "mascarilla",
ImageCount = 1,
Tamaño de la imagen = "1024x1024",
Aviso = "Un águila parada en la orilla del río bebiendo agua con una gran montaña"
)
# Descarga la imagen editada:
imageGen.downloadImage (nombres=[
"Animales nuevos",
])
El convertirImagen El método convierte la imagen de la máscara al formato RGBA. Puedes lograr esto usando el convertir método del paquete almohada de Python (importado como PIL).
Una vez convertida, guarda la nueva máscara como anulación de la existente. Por lo tanto, la conversión de imágenes es la primera tarea del método de edición (Editar imagen) ejecuta.
El imagen lee la imagen de destino de un archivo existente, mientras que la mascarilla lee la imagen de la máscara convertida, que debe tener un área transparente.
Puede marcar un área transparente en la máscara usando software de edición de fotos como Gimp o Photoshop.
Por ejemplo, la imagen que queremos editar usando el mensaje en el código anterior es:
Ahora, suponga que desea reemplazar el antílope que se encuentra junto a la orilla del río con un águila, como se indica en el mensaje.
Así es como se ve la máscara:
Dado que la palabra clave en el indicador del código anterior dice "un águila parada en la orilla del río", el espacio en blanco se llena con un águila, reemplazando al antílope que estaba allí anteriormente.
Aquí está la nueva imagen en este caso:
Puede intentar jugar con el punto final de edición de imágenes usando otras fotos.
Generación de variaciones de imagen en Python usando la API de OpenAI
El punto final de variación genera imágenes alternativas a partir de una imagen existente. Amplíe aún más la clase de generador de imágenes agregando un método de variación de imagen como se muestra a continuación:
claseGenerador de imágenes:
definitivamente__en eso__(ser) -> cadena:
...
definitivamentevariaciones de imagen(self, ImageName, VariationCount, ImageSize):
respuesta = openai. Imagen.create_variation(
imagen = abrir ("{}.png".format (Nombre de imagen), "rb"),
n = Contador de variaciones,
tamaño = tamaño de la imagen
)
self.image_url = respuesta['datos']
self.image_url = [imagen["dirección URL"] para imagen en self.image_url]
imprimir (self.image_url)
devolver self.image_url
# Instanciar la clase
imageGen = ImageGenerator()# Generar variaciones para una imagen existente
imageGen.imageVariations(
Nombre de la imagen = "Nuevos_animales",
VariationCount = 2,
Tamaño de la imagen = "1024x1024"
)
# Descarga las variaciones
imageGen.downloadImage (nombres=[
"Variación1",
"Variación2",
]
)
El código anterior genera variaciones de una imagen.
Utilice OpenAI a su favor
Si bien algunas personas temen que la IA pueda robarles sus trabajos, después de todo, podría ser un refugio, si aprende a controlarlo y usarlo. Este tutorial de creación de imágenes OpenAI es solo uno de los muchos casos de uso de IA en el mundo real. Las API de OpenAI proporcionan prácticos modelos preentrenados que puede integrar fácilmente en su aplicación. Así que puedes aceptar el desafío y construir algo que valga la pena a partir de este tutorial.
Aunque la API de generación de imágenes todavía está en versión beta al momento de escribir, ya le permite crear obras de arte imaginarias. Con suerte, recibe más actualizaciones para permitir la ampliación y aceptar diferentes tamaños de imagen.