Arte Generativa com IA
De forma geral, arte generativa é a arte criada com a ajuda de um sistema automatizado, muitas vezes um software. O artista define as regras e parâmetros, e o sistema usa essas diretrizes para gerar a própria obra de arte. Essa é a definição clássica. Porém, no mundo real, arte generativa é arte gerada por um modelo de inteligência artificial (IA) direcionado por prompts criados por pessoas que não precisam ser artistas. Esse site, por exemplo, é cheio de exemplos de arte criada por nerds. Saber escrever prompts é uma habilidade atual, mas ela não é aprendida em cursos de arte.
Todos sabemos que a arte generativa já é bem popular, e conta com vários modelos disponíveis gratuitamente. Mas, para quem gosta de entender a geração de arte com IA num nível mais técnico, o mais interessante é poder interagir diretamente com os modelos e com seus parâmetros. Uma das formas mais acessíveis de se fazer isso é com os modelos diffusers pré-treinados da plataforma Hugging Face.
Modelos Stable Diffusion Destilados
Em termos de modelo, a arte generativa é geralmente criada com sistemas Stable Diffusion (difusão estável). Porém, a inferência com difusão estável pode ser um processo computacionalmente intensivo porque deve remover o ruído iterativamente para gerar uma imagem. Felizmente, a Hugging Face conta com alguns modelos menores reduzidos com uma técnica conhecida como destilação. Modelos destilados são menores, mas podem ter desempenhos ótimos e comparáveis aos modelos tradicionais dos quais se originaram. Para esse post, usaremos um modelo da Nota AI. A versão destilada de seu modelo Stable Diffusion elimina alguns elementos da rede neural original, reduzindo o tamanho do modelo em 51% e melhorando a latência na CPU/GPU em 43%.
Stable Diffusion com modelo destilado na prática
O modelo que usaremos está disponível na Hugging Face e é acessado diretamente com o Python. Para usá-lo, precisa instalar PyTorch e o diffusers da Hugging Face. Durante a instalação, pode ocorrer do processo precisar de outras dependências adicionais.
pip install torch diffusers
Na prática, o uso do modelo de Stable Diffusion que selecionamos é simples e direto, marca registrada dos modelos pré-treinados da Hugging Face. Para usar o modelo, primeiro precisamos carregá-lo.
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"nota-ai/bk-sdm-small", torch_dtype=torch.float16, use_safetensors=True,
).to("cuda")
Depois, definimos alguns parâmetros, incluindo número de iterações, imagens e o número de passos de inferência que queremos. O número de passos para o processo de inferência é muito importante. Mas esse parâmetro é computacionalmente custoso. Por isso, comece com um número baixo como fizemos e aumente conforme a capacidade do seu sistema.
NUM_ITERS_TO_RUN = 3
NUM_INFERENCE_STEPS = 50
NUM_IMAGES_PER_PROMPT = 3
Em seguida, definimos um prompt para gerar as imagens e fazemos um loop com o processo generativo em si.
prompt = "an orange cat staring off with pretty eyes, Striking image, 8K, Desktop background, Immensely sharp."
for i in range(NUM_ITERS_TO_RUN):
image = pipe(
prompt,
num_inference_steps=NUM_INFERENCE_STEPS,
num_images_per_prompt=NUM_IMAGES_PER_PROMPT
).images[0]
image.save(f"{prompt}+_str({i}).png")
Pronto! Veja alguns de nossos resultados.