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:
- Depois de fazer login, clique no ícone do seu perfil na seção superior direita.
- 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.
- 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 = Nenhumdefgerar 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.