
Amazon Titan permite a los creadores generar, editar y refinar imágenes de alta calidad utilizando indicaciones de lenguaje natural. La versión V2 admite el condicionamiento de la imagen y la consistencia del sujeto.
Usarlo mediante Python es muy sencillo.
Requisitos: Debes instalar previamente Boto3 y tener establecidas tus credenciales de AWS en el sistema.
import base64
import boto3
import json
import os
import random
# Crear un ambiente de tiempo de ejecución para Bedrock
client = boto3.client("bedrock-runtime", region_name="us-east-1")
# Establecer el ID del modelo a usar, en este caso Titan Image Generator G1.
model_id = "amazon.titan-image-generator-v2:0"
# Definir el Prompt para el modelo.
prompt = "A sci fi scenario, in front of it the word AUTOMATION where each letter is a circuit, piles, cable or light."
# generar un valor aleatorio.
seed = random.randint(0, 2147483647)
# Formatear la petición en la estructura adecuada.
native_request = {
"taskType": "TEXT_IMAGE",
"textToImageParams": {"text": prompt},
"imageGenerationConfig": {
"numberOfImages": 1,
"quality": "standard",
"cfgScale": 8.0,
"height": 512,
"width": 512,
"seed": seed,
},
}
# Convertir la petición en JSON.
request = json.dumps(native_request)
# Invocar el modelo con la petición.
response = client.invoke_model(modelId=model_id, body=request)
# Decodificar la el cuerpo de la respuesta.
model_response = json.loads(response["body"].read())
# Extraer la información de la imagen.
base64_image_data = model_response["images"][0]
# Almacenar la imagen generada por el modelo en un directorio local.
i, output_dir = 1, "output"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
while os.path.exists(os.path.join(output_dir, f"steam_{i}.png")):
i += 1
image_data = base64.b64decode(base64_image_data)
image_path = os.path.join(output_dir, f"steam{i}.png")
with open(image_path, "wb") as file:
file.write(image_data)
print(f"La imagen generada se almacenó en: {image_path}")
Comentarios