Python AI Pintura

En este artículo presentaremos cómo construir una propia herramienta de creación de imágenes con IA basada en algunas API de desarrollo o bibliotecas de código abierto.


Mediante la API de texto a imagen

Mediante la API de texto a imagen, puede crear imágenes originales completamente nuevas basadas en descripciones de texto.

Alibaba Cloud Bailian ofrece dos grandes series de modelos:

  • Tongyi Qianwen (Qwen-Image): Especializado en representar texto complejo en chino e inglés, este capítulo lo toma como ejemplo.
  • Tongyi Wanxiang (serie Wan): Se utiliza para generar imágenes realistas y efectos visuales de nivel fotográfico.

Instale el SDK de Python de DashScope ejecutando el siguiente comando:

# 如果运行失败,您可以将pip替换成pip3再运行
pip install -U requests dashscope

Necesitamos activar el servicio de modelos Bailian de Alibaba Cloud y obtener una API-KEY.

Primero podemos usar la cuenta principal de Alibaba Cloud para acceder a la plataforma de servicios de modelos Bailian:https://bailian.console.aliyun.com/, luego haga clic en Iniciar sesión en la esquina superior derecha. Después de iniciar sesión, haga clic en el icono de engranaje ⚙️ en la esquina superior derecha, seleccione API key, luego copie la API key; si no tiene una, también puede crear una API key:

Activar Alibaba Cloud Bailian no genera costos; solo la invocación de modelos (después de superar la cuota gratuita), el despliegue de modelos y el ajuste de modelos generarán los cargos correspondientes.

Ahora, para usar la API, se cobra por token. Afortunadamente no es caro; podemos comprar primero el paquete más barato:Plataforma de servicios de modelos grandes Bailian de Alibaba Cloud。

A continuación, generamos imágenes configurando el prompt:

Ejemplo

from http import HTTPStatus
from urllib.parse import urlparse, unquote
from pathlib import PurePosixPath
import requests
from dashscope import ImageSynthesis
import os

prompt = Un elegante y solemne pareado cuelga en el salón; la habitación tiene una distribución china clásica y tranquila, y sobre la mesa hay algunas porcelanas azules y blancas. En el pareado, a la izquierda está escrito 'La justicia nace del saber innato; humanos y máquinas comparten el mismo camino; el buen pensar renueva', a la derecha 'Surcar las nubes confiere sabiduría; el universo revela los números; altas aspiraciones y metas lejanas', y la inscripción horizontal es 'La sabiduría despierta la justicia universal', con una caligrafía fluida. En el centro cuelga un cuadro de estilo chino cuyo contenido es la Torre Yueyang.

# Por favor, use la API Key de Bailian
api_key = "sk-xxx"

print('----Llamada síncrona, espere a que se ejecute la tarea----')
rsp = ImageSynthesis.call(api_key=api_key,
                          model="qwen-image",
                          prompt=prompt,
                          n=1,
                          size='1328*1328',
                          prompt_extend=True,
                          watermark=True)
print('response: %s' % rsp)
if rsp.status_code == HTTPStatus.OK:
    # Guardar la imagen en el directorio actual
    for result in rsp.output.results:
        file_name = PurePosixPath(unquote(urlparse(result.url).path)).parts[-1]
        with open('./%s' % file_name, 'wb+') as f:
            f.write(requests.get(result.url).content)
else:
    print('Error en la llamada síncrona, status_code: %s, code: %s, message: %s' %
          (rsp.status_code, rsp.code, rsp.message))

La salida será similar a la siguiente; verá un parámetro url. Podemos acceder a él para descargar la imagen descrita por el prompt:

----同步调用,请等待任务执行----
response: {"status_code": 200, "request_id": "1968746e-f434-4f77-9f8c-9b1adb80e8d7", "code": null, "message": "", "output": {"task_id": "d85c65d9-c4ff-4d66-a895-7c7746620b0c", "task_status": "SUCCEEDED", "results": [{"url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/7d/05/20250916/8d68e658/d85c65d9-c4ff-4d66-a895-7c7746620b0c-1.png?xxxxxxxxx", 
...

La imagen generada por el ejemplo anterior es la siguiente:

Para más contenido, puede consultar la documentación oficial:https://help.aliyun.com/zh/model-studio/text-to-image


Stable Diffusion

La biblioteca de código abierto que se necesita usar es Stable Diffusion web UI, que es una interfaz de navegador para Stable Diffusion basada en la biblioteca Gradio.

Dirección de GitHub de Stable Diffusion web UI:https://github.com/AUTOMATIC1111/stable-diffusion-webui

Ejecutar Stable Diffusion requiere requisitos de hardware bastante altos; durante la ejecución consume muchos recursos, especialmente la tarjeta gráfica.

Instalación en entorno Windows

El entorno local requiere instalar Python 3.10.6 o superior y agregarlo a las variables de entorno del equipo.

Descargue el código fuente de Stable Diffusion web UI desde GitHubhttps://github.com/AUTOMATIC1111/stable-diffusion-webui。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

Si Git no está instalado, puede descargar el paquete comprimido zip en la esquina superior derecha.

Descomprima stable-diffusion-webui y entre en el directorio stable-diffusion-webui.

A continuación, necesitamos descargar el modelo. Dirección de descarga:https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

Mueva el modelo descargado astable-diffusion-webui/models/Stable-diffusionel directorio.

Entre en el directorio stable-diffusion-webui:

En Windows, ejecute como no administrador:

webui-user.bat

En entornos Linux y Mac OS, ejecute los siguientes comandos:

./webui.sh

A continuación, el programa se instalará y se iniciará automáticamente. Si el inicio es exitoso, verá una URL accesible.http://127.0.0.1:7860:

Acceda ahttp://127.0.0.1:7860, la interfaz es la siguiente:

Nota:Si la instalación se queda atascada, probablemente haya un problema al descargar el código fuente de GitHub. Puede usar algunos espejos de GitHub para resolverlo. Actualmente no hay espejos muy estables; se sugiere buscar en Google.https://hub.fgit.mlPor mi parte, el 6 de abril de 2023 usé la siguiente dirección de espejo

Introducción a Civitai

Civitai tiene muchos modelos personalizados y se pueden descargar gratis. Usaremos elGuofeng 3modelo para probar. Dirección de descarga:https://civitai.com/models/10415/3-guofeng3?modelVersionId=36644

Después de la descarga, movemos el modelo astable-diffusion-webui/models/Stable-diffusionel directorio, y reiniciamos stable-diffusion-webui:

./webui.sh

De esta manera, podemos seleccionar el modeloGuofeng 3en la lista de modelos:

Una vez seleccionado, podemos ir a la página de introducción del modelo para copiar algunos prompts y parámetros de prueba:

Para generar rápidamente, reduje a la mitad tanto la altura como el ancho; luego haga clic en el botón Generar:

El proceso completo de generación se puede ver siguiendo nuestra cuenta de video de WeChat:

Otras extensiones