Créez des images époustouflantes avec l’API OpenAI et DALL·E 2 en Python

Si vous avez déjà utilisé ChatGPT, vous avez vu son intuition. Avec les API d’OpenAI, la génération de code, la complétion de texte, la comparaison de texte, la formation de modèles et la génération d’images sont toutes dans le sac que les développeurs peuvent explorer et intégrer dans les applications.


Dans ce didacticiel, vous apprendrez à utiliser l’API d’OpenAI avec Python pour générer, éditer et modifier des images à l’aide d’invites en langage naturel.


Démarrer avec OpenAI en utilisant Python

Vous devez configurer quelques éléments avant de commencer ce didacticiel. Tout d’abord, assurez-vous que la dernière version de Python est installée sur votre ordinateur. Si vous utilisez une distribution Linux comme Ubuntu, vous voudrez peut-être aussi voir comment installer python sur ubuntu.

Créez un nouveau répertoire pour votre projet et ouvrez votre ligne de commande dans le répertoire de votre projet.

Vient ensuite l’installation du package OpenAI. Vous devez installer oreiller pour convertir des images en RGBA tout en utilisant le point de terminaison de manipulation d’image. Vous pouvez également installer python-dotenv; vous l’utiliserez pour masquer les clés secrètes.

Lire aussi :  Supprimer un photobomber de vos images avec Photoshop et DALL-E 2

Nous recommandons un environnement virtuel Python dédié isoler les dépendances.

Le code utilisé dans ce projet est disponible dans un Référentiel GitHub et est libre d’utilisation sous la licence MIT.

Autour de la python-dotenv, oreilleret ouvrir packages, exécutez la commande suivante dans le terminal :

 pip install openai python-dotenv pillow

Allez maintenant vérifier OpenAI et connectez-vous à votre tableau de bord pour récupérer votre clé API :

  1. Une fois connecté, cliquez sur l’icône de votre profil en haut à droite.
    Page de documentation OpenAI

  2. Aller à Afficher les clés API. Si votre clé API n’est pas visible, cliquez sur Créer une nouvelle clé secrète pour en générer un nouveau.
    Ouvrir la boîte modale de la clé API

  3. Copiez la clé secrète générée et collez-la dans un endroit sûr sur votre ordinateur. Vous voudrez peut-être coller ceci dans un fichier de variable d’environnement dans le répertoire racine de votre projet pour des raisons de sécurité.

Comment générer et éditer des images avec l’API OpenAI en Python

La génération d’images de l’API OpenAI comporte des points de terminaison pour générer de nouvelles images, créer des variations d’images et les modifier.

Dans les sections suivantes, vous explorerez ces points de terminaison pour générer, modifier, personnaliser et télécharger des images à l’aide d’invites en langage naturel.

Générer des images à l’aide de l’API OpenAI

Le point de terminaison de génération d’image accepte trois arguments de mots clés. Ceci comprend vitesse, unet taille.

Le vitesse mot-clé est une chaîne de texte qui décrit l’image que vous souhaitez générer, tandis que un est le nombre d’images à générer lors d’un appel API. Le taille est la taille de l’image, et à ce jour, elle n’accepte que 256×256, 512×512 et 1024×1024 pixels, selon l’officiel OpenAI documentation sur la génération d’images.

Le code suivant génère des images à l’aide d’invites en langage naturel et affiche leur URL (adresses d’image) :

 import openai
import os
import requests
from dotenv import load_dotenv
from PIL import Image
load_dotenv()

class ImageGenerator:
    def __init__(self) -> str:
        self.image_url: str
        openai.api_key = os.getenv("OPENAI_API_KEY")
        self.APIKey = openai.api_key
        self.name = None

    def generateImage(self, Prompt, ImageCount, ImageSize):
        try:
            self.APIKey
            response = openai.Image.create(
            prompt = Prompt,
            n = ImageCount,
            size = ImageSize,
            )
            self.image_url = response['data']
            
            self.image_url = [image["url"] for image in self.image_url]
            print(self.image_url)
            return self.image_url
        except openai.error.OpenAIError as e:
            print(e.http_status)
            print(e.error)

    def downloadImage(self, names)-> None:
        try:
            self.name = names
            for url in self.image_url:
                image = requests.get(url)
            for name in self.name:
                with open("{}.png".format(name), "wb") as f:
                    f.write(image.content)
        except:
            print("An error occured")
            return self.name


imageGen = ImageGenerator()


imageGen.generateImage(
Prompt = "Giant lion, bear, ape, and tiger standing on a water water fall",
ImageCount = 2,
ImageSize = '1024x1024'
)


imageGen.downloadImage(names=[
"Animals",
"Animals2"
])

Le code ci-dessus contient un Générateur d’images classe avec le URL de l’image et Clé API caractéristiques. Le générerImage La méthode adapte les exigences du point de terminaison de génération d’image. Il génère un Les URL qui utilisent l’invite en langage naturel, selon le Nombre d’images valeur.

Mais self.image_url extraire les URL d’image générées de la réponse JSON dans une liste à l’aide de la boucle for dans une compréhension de liste.

La sortie ressemble à ceci :

Exportation de code API OpenAI

Finalement, le téléchargerImage La méthode télécharge chaque image en demandant les adresses générées. Cette méthode est acceptée un nombre de noms que vous voulez donner à chaque image.

Modifier des images avec l’API OpenAI

Le point de terminaison de modification vous permet de modifier une image existante basée sur un modèle de masque. Le masque est au format RGBA avec une zone transparente annotée et doit être de la même taille que l’image que vous souhaitez modifier.

Lorsque vous fournissez un masque, le point de terminaison de modification remplace sa zone masquée par la nouvelle invite dans l’image existante pour en produire une nouvelle. Ajoutez les méthodes suivantes à la classe précédente ci-dessus :

 class ImageGenerator:
    def __init__(self, ...):
        ..............

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

       return rgba_image

    
    def editImage(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> str:
        self.convertImage(maskName)
        response = openai.Image.create_edit(
          image = open("{}.png".format(imageName), "rb"),
          mask = open("{}.png".format(maskName), "rb"),
          prompt = Prompt,
          n = ImageCount,
          size = ImageSize,
          )
        self.image_url = response['data']
        self.image_url = [image["url"] for image in self.image_url]

        print(self.image_url)
        return self.image_url


imageGen.editImage(
   imageName = "Animals",
   maskName = "mask",
   ImageCount = 1,
   ImageSize = "1024x1024",
   Prompt = "An eagle standing on the river bank drinking water with a big mountain"
)


imageGen.downloadImage(names=[
"New Animals",
])

Le convertirImage convertit l’image du masque au format RGBA. Vous pouvez y parvenir en utilisant le convertir méthode du package coussin de Python (importé en tant que PIL).

Une fois converti, il enregistre le nouveau masque en remplacement de celui existant. Ainsi, la conversion d’image est la première tâche de la méthode d’édition (éditer l’image) exporter.

Le image lit l’image cible à partir d’un fichier existant, tandis que le masque lit l’image de masque convertie, qui doit avoir une zone transparente.

Vous pouvez mettre en surbrillance une zone transparente dans le masque en logiciel de retouche photo comme Gimp ou Photoshop.

Par exemple, l’image que nous voulons modifier à l’aide de l’invite dans le code ci-dessus est :

Les animaux boivent de l'eau au bord de la rivière

Supposons maintenant que vous vouliez remplacer l’antilope debout près de la berge par un aigle, comme indiqué dans la commande.

Voici à quoi ressemble le masque :

Image d'animaux buvant de l'eau avec une zone annotée

Étant donné que le mot-clé dans l’invite du code ci-dessus indique “un aigle debout sur la rive du fleuve”, la place vide est remplie par un aigle, remplaçant la chèvre qui était là auparavant.

Voici la nouvelle image dans ce cas :

Les animaux boivent l'eau d'une rivière avec un aigle au bord de la rivière

Vous pouvez essayer de jouer avec le point final de l’édition d’image en utilisant d’autres photos.

Générer des variations d’image en Python à l’aide de l’API OpenAI

Le point de terminaison de variation génère des images alternatives à partir d’une image existante. Étendez davantage la classe de générateur d’image en ajoutant une méthode de variation d’image comme indiqué ci-dessous :

 class ImageGenerator:
    def __init__(self) -> str:
        .............
        
    def imageVariations(self, ImageName, VariationCount, ImageSize):
        response = openai.Image.create_variation(
            image = open("{}.png".format(ImageName), "rb"),
            n = VariationCount,
            size = ImageSize
            )
        
        self.image_url = response['data']
            
        self.image_url = [image["url"] for image in self.image_url]
        print(self.image_url)
        return self.image_url
        
imageGen = ImageGenerator()


imageGen.imageVariations(
    ImageName = "New_Animals",
    VariationCount = 2,
    ImageSize = "1024x1024"
)


imageGen.downloadImage(names=[
    "Variation1",
    "Variation2",
    ]
)

Le code ci-dessus génère des variations d’une image.

Utilisez OpenAI à votre avantage

Alors que certaines personnes craignent que l’IA ne leur vole leur emploi, cela peut être un refuge, si vous apprenez à la contrôler et à l’utiliser. Ce didacticiel de création d’images OpenAI n’est qu’un des nombreux cas d’utilisation réels de l’IA. Les API OpenAI fournissent des modèles pré-formés pratiques que vous pouvez facilement intégrer à votre application. Vous pouvez donc relever le défi et construire quelque chose de valable à partir de ce tutoriel.

Bien que l’API de génération d’images soit encore en version bêta au moment d’écrire ces lignes, elle vous permet déjà de créer des œuvres d’art imaginaires. Espérons qu’il obtienne d’autres mises à jour pour permettre la mise à l’échelle et accepter différentes tailles d’image.

Mathieu

Laisser un commentaire

Publicité :