top of page
pixel-art-1674061099gif_1674061104.gif

Nossas redes sociais

youtube

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