Use o modelo DALL·E 2 da OpenAI para gerar imagens usando Python.

Se você já usou o ChatGPT, testemunhou sua intuição. Com as APIs da OpenAI, geração de código, conclusão de texto, comparação de texto, treinamento de modelo e geração de imagem estão disponíveis para os desenvolvedores explorarem e integrarem aos aplicativos.

Neste tutorial, você aprenderá como usar a API do OpenAI com Python para gerar, editar e variar imagens usando prompts de linguagem natural.

Introdução ao OpenAI usando Python

Você precisa configurar algumas coisas antes de iniciar este tutorial. Primeiro, verifique se você instalou a versão mais recente do Python em seu computador. Se você usa uma distribuição Linux como o Ubuntu, também pode querer ver como instalar Python no Ubuntu.

Crie uma nova pasta para o seu projeto e abra a linha de comando no diretório do projeto.

Em seguida é a instalação do pacote OpenAI. você precisa instalar travesseiro para converter imagens em RGBA ao usar o endpoint de edição de imagens. Você também pode querer instalar python-dotenv; você usará isso para mascarar chaves secretas.

Recomendamos a criação de um ambiente virtual Python dedicado para isolar dependências.

O código utilizado neste projeto está disponível em um Repositório GitHub e é gratuito para você usar sob a licença do MIT.

Para instalar o python-dotenv, travesseiro, e openai pacotes, execute o seguinte comando no terminal:

pip install openai travesseiro python-dotenv

Agora vá para OpenAI e faça login no seu painel para obter sua chave de API:

  1. Depois de fazer login, clique no ícone do seu perfil na seção superior direita.
  2. Vá para Exibir chaves de API. Se sua chave de API não estiver visível, clique em Criar nova chave secreta para gerar um novo.
  3. Copie a chave secreta gerada e cole-a em algum lugar seguro do seu computador. Você pode querer colá-lo em um arquivo de variável de ambiente no diretório raiz do projeto para segurança.

Como gerar e editar imagens com OpenAI API em Python

A geração de imagens da OpenAI API apresenta pontos de extremidade para gerar novas imagens, criar variações de imagens e editá-las.

Nas seções a seguir, você explorará esses pontos de extremidade para gerar, editar, ajustar e baixar imagens usando prompts de linguagem natural.

Gerando imagens usando a API OpenAI

O endpoint de geração de imagem aceita três argumentos de palavra-chave. Esses incluem incitar, n, e tamanho.

O incitar palavra-chave é uma string de texto que descreve a imagem que você deseja gerar, enquanto n é o número de imagens a serem geradas durante uma chamada de API. O tamanho é o tamanho da imagem e, até o momento, aceita apenas 256x256, 512x512 e 1024x1024 pixels, de acordo com o oficial OpenAI documentação de geração de imagens.

O código a seguir gera imagens usando prompts de linguagem natural e gera sua URL (endereços de imagem):

importar openai
importar os
importar solicitações de
de dotenv importar load_dotenv
de PIL importar Imagem
load_dotenv()

aulaImageGenerator:
def__iniciar__(auto) -> str:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
auto. APIKey = openai.api_key
self.name = Nenhum

defgerar imagem(self, Prompt, ImageCount, ImageSize):
tentar:
auto. Chave API
resposta = openai. Imagem.criar(
prompt = prompt,
n = ImageCount,
tamanho = tamanho da imagem,
)
self.image_url = resposta['dados']

self.image_url = [imagem["url"] para imagem em self.image_url]
imprimir (self.image_url)
retornar self.image_url
exceto openai.error. OpenAIError como e:
imprimir (e.http_status)
imprimir (e.error)

defdownloadImage(auto, nomes)-> Nenhum:
tentar:
self.name = nomes
para url em self.image_url:
imagem = request.get (url)
para nome em self.name:
com abrir("{}.png".formato (nome), "wb") como f:
f.write (imagem.conteúdo)
exceto:
imprimir("Um erro ocorreu")
retornar self.name

# Instancia a classe
imageGen = ImageGenerator()

# Gerar imagens:
imageGen.generateImage(
Aviso = "Leão gigante, urso, macaco e tigre em pé sobre uma queda d'água",
ImageCount = 2,
ImageSize = '1024x1024'
)

# Baixe as imagens:
imageGen.downloadImage (nomes=[
"Animais",
"Animais2"
])

O código acima contém um ImageGenerator aula com o imagem URL e Chave API atributos. O gerar imagem O método adapta os requisitos do endpoint de geração de imagem. Ele gera n URLs usando o prompt de linguagem natural, dependendo do ImageCount valor.

No entanto, self.image_url extrai os URLs de imagem gerados da resposta JSON em uma lista usando o loop for em uma compreensão de lista.

A saída se parece com isso:

finalmente, o downloadImage O método baixa cada imagem solicitando os endereços gerados. Este método aceita n número de nomes que você deseja dar a cada imagem.

Editando imagens usando a API OpenAI

O ponto de extremidade de edição permite editar uma imagem existente com base em um modelo de máscara. A máscara é um formato RGBA com uma área transparente anotada e deve ter o mesmo tamanho da imagem que você deseja editar.

Quando você fornece uma máscara, o endpoint de edição substitui sua área mascarada pelo novo prompt na imagem existente para produzir uma nova. Adicione os seguintes métodos à classe anterior acima:

aulaImageGenerator:
def__iniciar__(auto, ...):
...

defconvertImage(self, maskName):
imagem = Image.open("{}.png".format (maskName))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (maskName))

retornar rgba_image


defeditar imagem(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
self.convertImage (maskName)
resposta = openai. Image.create_edit(
imagem = abrir("{}.png".format (nome da imagem), "rb"),
máscara = abrir("{}.png".format (maskName), "rb"),
prompt = prompt,
n = ImageCount,
tamanho = tamanho da imagem,
)
self.image_url = resposta['dados']
self.image_url = [imagem["url"] para imagem em self.image_url]

imprimir (self.image_url)
retornar self.image_url

# Edite uma imagem existente:
imageGen.editImage(
imageName = "Animais",
maskName = "mascarar",
ImageCount = 1,
ImageSize = "1024x1024",
Aviso = "Uma águia parada na margem do rio bebendo água com uma grande montanha"
)

# Baixe a imagem editada:
imageGen.downloadImage (nomes=[
"Novos Animais",
])

O convertImage O método converte a imagem da máscara para o formato RGBA. Você pode conseguir isso usando o converter método do pacote pillow do Python (importado como PIL).

Uma vez convertido, ele salva a nova máscara como uma substituição da existente. Assim, a conversão da imagem é a primeira tarefa do método de edição (editar imagem) executa.

O imagem lê a imagem de destino de um arquivo existente, enquanto o mascarar lê a imagem da máscara convertida, que deve ter uma área transparente.

Você pode marcar uma área transparente na máscara usando software de edição de fotos como Gimp ou Photoshop.

Por exemplo, a imagem que queremos editar usando o prompt do código acima é:

Agora, suponha que você queira substituir o antílope parado na margem do rio por uma águia, conforme indicado no prompt.

Veja como fica a máscara:

Como a palavra-chave no prompt do código acima diz "uma águia parada na margem do rio", o espaço em branco é preenchido por uma águia, substituindo o antílope que estava lá anteriormente.

Aqui está a nova imagem neste caso:

Você pode tentar brincar com o endpoint de edição de imagem usando outras fotos.

Gerando variações de imagem em Python usando a API OpenAI

O endpoint de variação gera imagens alternativas de uma imagem existente. Expanda ainda mais a classe do gerador de imagem adicionando um método de variação de imagem conforme mostrado abaixo:

aulaImageGenerator:
def__iniciar__(auto) -> str:
...

defVariações de imagem(self, ImageName, VariationCount, ImageSize):
resposta = openai. Image.create_variation(
imagem = abrir("{}.png".format (ImageName), "rb"),
n = VariaçãoContagem,
tamanho = tamanho da imagem
)

self.image_url = resposta['dados']

self.image_url = [imagem["url"] para imagem em self.image_url]
imprimir (self.image_url)
retornar self.image_url

# Instancia a classe
imageGen = ImageGenerator()

# Gera variações para uma imagem existente
imageGen.imageVariations(
ImageName = "Novos_Animais",
VariaçãoContagem = 2,
ImageSize = "1024x1024"
)

# Baixe as variações
imageGen.downloadImage (nomes=[
"Variação1",
"Variação2",
]
)

O código acima gera variações de uma imagem.

Use o OpenAI a seu favor

Embora algumas pessoas temam que a IA possa roubar seus empregos, ela pode ser um paraíso, afinal – se você aprender a controlá-la e usá-la. Este tutorial de criação de imagem OpenAI é apenas um dos muitos casos de uso de IA no mundo real. As APIs OpenAI fornecem modelos pré-treinados úteis que você pode integrar facilmente em seu aplicativo. Assim, você pode aceitar o desafio e construir algo que valha a pena a partir deste tutorial.

Embora a API de geração de imagens ainda esteja em versão beta, ela já permite que você crie obras de arte imaginárias. Esperançosamente, ele recebe mais atualizações para permitir o aumento de escala e aceitar tamanhos de imagem variados.