top of page


Helisi-1984
Como Criar Imagens Com Inteligência Atrificial em Python utilizando Stable Diffusion no huggingface
___________________________________________________________ PARA CRIAR PROGRAMA
https://www.python.org/downloads
https://www.jetbrains.com/pycharm/download/?section=windows
___________________________________________________________ IA DE IMAGENS
1. Utilizando IA de Geração de Imagens
Ferramentas como DALL·E, MidJourney ou Stable Diffusion
2. Obtendo a API Key do Hugging Face:
Hugging Face : https://huggingface.co
python.exe -m pip install --upgrade pip
pip install huggingface_hub
pip install diffusers transformers accelerate
cole no termina:huggingface-cli login
vai pedir = Enter your token (input will not be visible):
cole a chave: 'AQUI SUA CHAVE'
obs ela nao aparece no terminal mas ela esta la, É so de enter e 'y' e pronto
CRIANDO IMAGENS COM CPU ___________________criar aquivo____________________________ Usando_CPU.py
from diffusers import StableDiffusionPipeline
import torch
print('USANDO CPU............................. "')
def gerar_imagem(texto_prompt, caminho_saida="CPU_imagem.png"):
# Carregar o pipeline do Stable Diffusion
modelo = "runwayml/stable-diffusion-v1-5"
pipeline = StableDiffusionPipeline.from_pretrained(modelo, torch_dtype=torch.float32) # Alterado para float32
pipeline.to("cpu") # Forçar o uso da CPU
# Gerar a imagem
print(f"Gerando imagem para o prompt: '{texto_prompt}'...")
imagem = pipeline(texto_prompt).images[0]
# Salvar a imagem
imagem.save(caminho_saida)
print(f"Imagem salva em: {caminho_saida}")
# Exemplo de uso
prompt = "A White Nelore Cattle, In The Green Pasture."
gerar_imagem(prompt)
___________________________________________________________ MODULOS PARA GPU
se:
import torch
print(torch.cuda.is_available())
for igual a False:
pip uninstall numpy
pip install numpy==1.24.0
pip uninstall torch
pip uninstall torchvision
pip uninstall torchaudio
no MEU caso, para a GTX 1050, você pode usar o CUDA 11.2 ou superior)
pip install torch==2.1.0+cu118 torchvision==0.16.0+cu118 torchaudio==2.1.0+cu118 -f https://download.pytorch.org/whl/torch_stable.html
CRIANDO IMAGENS COM PLACA GRAFICA - GPU ____________criar aquivo______________________ Usando_GPU.py
from diffusers import StableDiffusionPipeline
import torch
print('USANDO GPU PLACA DE VIDEO............................. "')
def gerar_imagem(texto_prompt, caminho_saida="GPU_imagem.png"):
# Carregar o pipeline do Stable Diffusion
modelo = "runwayml/stable-diffusion-v1-5"
pipeline = StableDiffusionPipeline.from_pretrained(modelo)
# Verificar se CUDA está disponível e mover o modelo para GPU
if torch.cuda.is_available():
pipeline.to("cuda")
else:
raise RuntimeError("CUDA não está disponível. Certifique-se de que sua GPU está configurada corretamente.")
# Gerar a imagem
print(f"Gerando imagem para o prompt: '{texto_prompt}'...")
imagem = pipeline(texto_prompt).images[0]
# Salvar a imagem
imagem.save(caminho_saida)
print(f"Imagem salva em: {caminho_saida}")
# Exemplo de uso
prompt = "A White Nelore Cattle, In The Green Pasture."
gerar_imagem(prompt)
TENTAR CRIAR IMAGENS COM CPU e GPU AO MESMO TEMPO __________criar aquivo____________ Usando_GPU_CPU.py
from diffusers import StableDiffusionPipeline
import torch
import multiprocessing
# Função para dividir um texto longo em partes menores
def dividir_prompt(texto, limite_tokens=77):
palavras = texto.split()
partes = []
while palavras:
parte = []
while palavras and len(" ".join(parte + [palavras[0]]).split()) <= limite_tokens:
parte.append(palavras.pop(0))
partes.append(" ".join(parte))
return partes
# Função que vai processar um lote de imagens em um dispositivo específico (GPU ou CPU)
def processar_lote(lote_prompts, dispositivo, caminho_saida_prefixo="imagem_gerada"):
print(f"Processando no dispositivo {dispositivo}...")
modelo = "runwayml/stable-diffusion-v1-5"
pipeline = StableDiffusionPipeline.from_pretrained(modelo, torch_dtype=torch.float32)
# Enviar o pipeline para o dispositivo adequado (GPU ou CPU)
pipeline.to(dispositivo)
for i, prompt in enumerate(lote_prompts):
# Gerar a imagem para cada prompt
with torch.no_grad(): # Desativa o cálculo de gradientes para otimizar a memória
imagem = pipeline(prompt).images[0]
# Salvar a imagem gerada
caminho_saida = f"{caminho_saida_prefixo}_{dispositivo}_{i}.png"
imagem.save(caminho_saida)
print(f"Imagem salva em: {caminho_saida}")
# Função para dividir os prompts entre GPU e CPU e processar em paralelo
def gerar_imagens_em_paralelo(prompts, num_lotes=2):
if len(prompts) < num_lotes:
num_lotes = len(prompts) # Não criar mais lotes do que o número de prompts
# Dividir os prompts em lotes
lotes = [prompts[i:i + len(prompts) // num_lotes] for i in range(0, len(prompts), len(prompts) // num_lotes)]
# Garantir que o último lote tenha o resto dos prompts (caso haja uma divisão desigual)
if len(lotes) > num_lotes:
lotes[num_lotes - 1].extend(lotes[-1])
del lotes[-1]
# Criar uma lista de dispositivos, começando com a GPU
dispositivos = ["cuda", "cpu"]
# Atribuir dispositivos aos lotes
dispositivos_para_lotes = []
for i in range(len(lotes)):
dispositivo = dispositivos[i % len(dispositivos)] # Alternar entre "cuda" e "cpu"
dispositivos_para_lotes.append(dispositivo)
# Agora, distribuímos os lotes de forma balanceada entre a GPU e a CPU
processos = []
for i, lote in enumerate(lotes):
dispositivo = dispositivos_para_lotes[i] # Usa o dispositivo atribuído ao lote
p = multiprocessing.Process(target=processar_lote, args=(lote, dispositivo))
processos.append(p)
p.start()
# Aguardar todos os processos terminarem
for p in processos:
p.join()
if __name__ == '__main__':
# Exemplo de uso com o texto sobre o gado Nelore
prompt_original = (
"A White Nelore Cattle, In The Green Pasture."
)
# Dividir o prompt em partes menores para que caibam no modelo
prompts_divididos = dividir_prompt(prompt_original)
gerar_imagens_em_paralelo(prompts_divididos)
# ======================== BONUS CODIGO GPT ============================
tem q por creditos--> https://platform.openai.com/usage
gerar chave--> https://platform.openai.com/api-keys
INSTALE ISSO NO SEU AMBIENTE:
python.exe -m pip install --upgrade pip
pip install openai
**** CODIGO PARA CRIAR IMAGENS COM CHAT-GPT ___________criar aquivo____________ Usando_servidor_GPT.py
import requests
from openai import OpenAI
Chave = ""
def gerar_imagem(prompt, caminho_saida="imagem.png"):
try:
IA = OpenAI(
api_key=Chave,
)
Resp = IA.images.generate(
model='dall-e-3',
prompt=prompt,
size='1024x1024',
quality='standard',
n=1)
Link_Imagem = Resp.data[0].url
print(Link_Imagem)
# Baixar e salvar a imagem localmente
resposta_imagem = requests.get(Link_Imagem)
with open(caminho_saida, "wb") as f:
f.write(resposta_imagem.content)
print(f"Imagem salva em: {caminho_saida}")
except Exception as e:
print(f"Erro ao gerar imagem: {e}")
# Exemplo de uso
prompt = "A White Nelore Cattle, in the green pasture, realistic style"
gerar_imagem(prompt)
bottom of page