Χρησιμοποιήστε το μοντέλο DALL·E 2 του OpenAI για να δημιουργήσετε εικόνες χρησιμοποιώντας Python.

Εάν έχετε χρησιμοποιήσει ποτέ το ChatGPT, τότε έχετε δει τη διαίσθησή του. Με τα API του OpenAI, η δημιουργία κώδικα, η συμπλήρωση κειμένου, η σύγκριση κειμένου, η εκπαίδευση μοντέλων και η δημιουργία εικόνων είναι όλα στο σακίδιο για να εξερευνήσουν οι προγραμματιστές και να ενσωματωθούν σε εφαρμογές.

Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε το API του OpenAI με την Python για να δημιουργείτε, να επεξεργάζεστε και να αλλάζετε εικόνες χρησιμοποιώντας προτροπές φυσικής γλώσσας.

Ξεκινώντας με το OpenAI χρησιμοποιώντας Python

Πρέπει να ρυθμίσετε μερικά πράγματα πριν ξεκινήσετε αυτό το σεμινάριο. Πρώτα, βεβαιωθείτε ότι έχετε εγκαταστήσει την πιο πρόσφατη έκδοση της Python στον υπολογιστή σας. Εάν χρησιμοποιείτε μια διανομή Linux όπως το Ubuntu, ίσως θέλετε επίσης να δείτε πώς να εγκαταστήσετε την Python στο Ubuntu.

Δημιουργήστε έναν νέο φάκελο για το έργο σας και ανοίξτε τη γραμμή εντολών στον κατάλογο του έργου σας.

instagram viewer

Ακολουθεί η εγκατάσταση του πακέτου OpenAI. Πρέπει να εγκαταστήσετε μαξιλάρι για να μετατρέψετε εικόνες σε RGBA ενώ χρησιμοποιείτε το τελικό σημείο επεξεργασίας εικόνας. Μπορεί επίσης να θέλετε να εγκαταστήσετε python-dotenv; θα το χρησιμοποιήσετε για να κρύψετε μυστικά κλειδιά.

Συνιστούμε να δημιουργήσετε ένα αποκλειστικό εικονικό περιβάλλον Python να απομονώσει τις εξαρτήσεις.

Ο κώδικας που χρησιμοποιείται σε αυτό το έργο είναι διαθέσιμος στο α Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.

Για να εγκαταστήσετε το python-dotenv, μαξιλάρι, και openai πακέτα, εκτελέστε την ακόλουθη εντολή στο τερματικό:

pip install openai python-dotenv μαξιλάρι

Τώρα κατευθυνθείτε προς OpenAI και συνδεθείτε στον πίνακα ελέγχου σας για να πάρετε το κλειδί API σας:

  1. Αφού συνδεθείτε, κάντε κλικ στο εικονίδιο του προφίλ σας στην επάνω δεξιά ενότητα.
  2. Παω σε Προβολή κλειδιών API. Εάν το κλειδί API σας δεν είναι ορατό, κάντε κλικ Δημιουργήστε νέο μυστικό κλειδί για να δημιουργήσετε ένα νέο.
  3. Αντιγράψτε το μυστικό κλειδί που δημιουργήθηκε και επικολλήστε το σε ασφαλές μέρος στον υπολογιστή σας. Ίσως θέλετε να το επικολλήσετε σε ένα αρχείο μεταβλητής περιβάλλοντος στον ριζικό κατάλογο του έργου σας για ασφάλεια.

Πώς να δημιουργήσετε και να επεξεργαστείτε εικόνες με το OpenAI API στην Python

Η δημιουργία εικόνων του OpenAI API διαθέτει τελικά σημεία για τη δημιουργία νέων εικόνων, τη δημιουργία παραλλαγών εικόνων και την επεξεργασία τους.

Στις επόμενες ενότητες, θα εξερευνήσετε αυτά τα τελικά σημεία για να δημιουργήσετε, να επεξεργαστείτε, να τροποποιήσετε και να κατεβάσετε εικόνες χρησιμοποιώντας προτροπές φυσικής γλώσσας.

Δημιουργία εικόνων με χρήση του OpenAI API

Το τελικό σημείο δημιουργίας εικόνας δέχεται τρία ορίσματα λέξεων-κλειδιών. Αυτά περιλαμβάνουν προτροπή, n, και Μέγεθος.

ο προτροπή λέξη-κλειδί είναι μια συμβολοσειρά κειμένου που περιγράφει την εικόνα που θέλετε να δημιουργήσετε, ενώ n είναι ο αριθμός των εικόνων που θα δημιουργηθούν κατά τη διάρκεια μιας κλήσης API. ο Μέγεθος είναι το μέγεθος της εικόνας και από τη στιγμή που γράφτηκε, δέχεται μόνο 256x256, 512x512 και 1024x1024 pixels, σύμφωνα με τον επίσημο OpenAI τεκμηρίωση δημιουργίας εικόνας.

Ο ακόλουθος κώδικας δημιουργεί εικόνες χρησιμοποιώντας προτροπές φυσικής γλώσσας και εξάγει τη διεύθυνση URL τους (διευθύνσεις εικόνας):

εισαγωγή openai
εισαγωγή os
εισαγωγή αιτήσεων
από dotenv εισαγωγή load_dotenv
από PIL εισαγωγή Εικόνα
load_dotenv()

τάξηImageGenerator:
def__μέσα σε αυτό__(εαυτός) -> οδός:
self.image_url: str
openai.api_key = os.getenv("OPENAI_API_KEY")
εαυτός. APIKey = openai.api_key
αυτο.όνομα = Κανένας

defδημιουργία εικόνας(self, Prompt, ImageCount, ImageSize):
δοκιμάστε:
εαυτός. APIKey
ανταπόκριση = openai. Image.create(
προτροπή = Προτροπή,
n = ImageCount,
μέγεθος = Μέγεθος εικόνας,
)
self.image_url = απάντηση['δεδομένα']

self.image_url = [εικόνα["url"] Για εικόνα σε self.image_url]
εκτύπωση (self.image_url)
ΕΠΙΣΤΡΟΦΗ self.image_url
εκτός openai.λάθος. OpenAIEσφάλμα όπως και μι:
εκτύπωση (e.http_status)
εκτύπωση (e.error)

defλήψη εικόνας(εαυτός, ονόματα)-> Κανένας:
δοκιμάστε:
αυτο.όνομα = ονόματα
Για url σε self.image_url:
εικόνα = requests.get (url)
Για όνομα σε self.name:
με Άνοιξε("{}.png".format (όνομα), "wb") όπως και φά:
f.write (εικόνα.περιεχόμενο)
εκτός:
Τυπώνω("Προέκυψε ένα σφάλμα")
ΕΠΙΣΤΡΟΦΗ αυτο.όνομα

# Ξεκινήστε την τάξη
imageGen = ImageGenerator()

# Δημιουργία εικόνων:
imageGen.generateImage(
Προτροπή = "Γιγάντιο λιοντάρι, αρκούδα, πίθηκος και τίγρη που στέκονται σε μια καταρράκτη νερού",
ImageCount = 2,
Μέγεθος εικόνας = '1024x1024'
)

# Κατεβάστε τις εικόνες:
imageGen.downloadImage (ονόματα=[
"Των ζώων",
"Ζώα 2"
])

Ο παραπάνω κώδικας περιέχει ένα ImageGenerator τάξη με το image_url και APIKey γνωρίσματα. ο δημιουργία εικόνας Η μέθοδος προσαρμόζει τις απαιτήσεις του τελικού σημείου δημιουργίας εικόνας. Δημιουργεί n Διευθύνσεις URL που χρησιμοποιούν την προτροπή φυσικής γλώσσας, ανάλογα με το ImageCount αξία.

Ωστόσο, self.image_url εξάγει τις διευθύνσεις URL εικόνων που δημιουργούνται από την απόκριση JSON σε μια λίστα χρησιμοποιώντας τον βρόχο for σε μια κατανόηση λίστας.

Η έξοδος μοιάζει με αυτό:

Τέλος, το λήψη εικόνας μέθοδος κατεβάζει κάθε εικόνα ζητώντας τις διευθύνσεις που δημιουργούνται. Αυτή η μέθοδος δέχεται n τον αριθμό των ονομάτων που θέλετε να δώσετε σε κάθε εικόνα.

Επεξεργασία εικόνων με χρήση του OpenAI API

Το τελικό σημείο επεξεργασίας σάς επιτρέπει να επεξεργαστείτε μια υπάρχουσα εικόνα με βάση ένα πρότυπο μάσκας. Η μάσκα είναι μορφής RGBA με σχολιασμένη, διαφανή περιοχή και πρέπει να έχει το ίδιο μέγεθος με την εικόνα που θέλετε να επεξεργαστείτε.

Όταν παρέχετε μια μάσκα, το τελικό σημείο επεξεργασίας αντικαθιστά την καλυμμένη περιοχή του με τη νέα προτροπή στην υπάρχουσα εικόνα για να δημιουργήσει μια νέα. Προσθέστε τις ακόλουθες μεθόδους στην παραπάνω προηγούμενη κλάση:

τάξηImageGenerator:
def__μέσα σε αυτό__(εαυτός,...):
...

defconvertImage(self, maskName):
εικόνα = Image.open("{}.png".format (maskName))
rgba_image = image.convert('RGBA')
rgba_image.save("{}.png".format (maskName))

ΕΠΙΣΤΡΟΦΗ rgba_image


defεπεξεργασία εικόνας(self, imageName, maskName, ImageCount, ImageSize, Prompt) -> οδός:
self.convertImage (maskName)
ανταπόκριση = openai. Image.create_edit(
εικόνα = ανοιχτή("{}.png".format (imageName), "rb"),
μάσκα = ανοιχτή("{}.png".format (maskName), "rb"),
προτροπή = Προτροπή,
n = ImageCount,
μέγεθος = Μέγεθος εικόνας,
)
self.image_url = απάντηση['δεδομένα']
self.image_url = [εικόνα["url"] Για εικόνα σε self.image_url]

εκτύπωση (self.image_url)
ΕΠΙΣΤΡΟΦΗ self.image_url

# Επεξεργαστείτε μια υπάρχουσα εικόνα:
imageGen.editImage(
Όνομα εικόνας = "Των ζώων",
maskName = "μάσκα",
ImageCount = 1,
Μέγεθος εικόνας = "1024x1024",
Προτροπή = "Ένας αετός που στέκεται στην όχθη του ποταμού και πίνει νερό με ένα μεγάλο βουνό"
)

# Κατεβάστε την επεξεργασμένη εικόνα:
imageGen.downloadImage (ονόματα=[
"Νέα Ζώα",
])

ο convertImage μέθοδος μετατρέπει την εικόνα μάσκας σε μορφή RGBA. Μπορείτε να το πετύχετε χρησιμοποιώντας το μετατρέπω μέθοδος από τη συσκευασία μαξιλαριού της Python (εισαγόμενη ως PIL).

Μετά τη μετατροπή, αποθηκεύει τη νέα μάσκα ως παράκαμψη της υπάρχουσας. Έτσι, η μετατροπή εικόνας είναι η πρώτη εργασία της μεθόδου επεξεργασίας (επεξεργασία εικόνας) εκτελεί.

ο εικόνα διαβάζει την εικόνα προορισμού από ένα υπάρχον αρχείο, ενώ το μάσκα διαβάζει την εικόνα μάσκας που έχει μετατραπεί, η οποία πρέπει να έχει μια διαφανή περιοχή.

Μπορείτε να επισημάνετε μια διαφανή περιοχή στη μάσκα χρησιμοποιώντας λογισμικό επεξεργασίας φωτογραφιών όπως το Gimp ή το Photoshop.

Για παράδειγμα, η εικόνα που θέλουμε να επεξεργαστούμε χρησιμοποιώντας την προτροπή στον παραπάνω κώδικα είναι:

Τώρα, υποθέστε ότι θέλετε να αντικαταστήσετε την αντιλόπη που στέκεται δίπλα στην όχθη του ποταμού με έναν αετό, όπως αναφέρεται στην προτροπή.

Δείτε πώς φαίνεται η μάσκα:

Δεδομένου ότι η λέξη-κλειδί στην προτροπή από τον παραπάνω κώδικα λέει, "ένας αετός που στέκεται στην όχθη του ποταμού", το κενό σημείο γεμίζει από έναν αετό, αντικαθιστώντας την αντιλόπη που ήταν προηγουμένως εκεί.

Εδώ είναι η νέα εικόνα σε αυτήν την περίπτωση:

Μπορείτε να δοκιμάσετε να παίξετε με το τελικό σημείο επεξεργασίας εικόνας χρησιμοποιώντας άλλες φωτογραφίες.

Δημιουργία παραλλαγών εικόνας στην Python χρησιμοποιώντας το OpenAI API

Το τελικό σημείο παραλλαγής δημιουργεί εναλλακτικές εικόνες από μια υπάρχουσα εικόνα. Επεκτείνετε περαιτέρω την κλάση δημιουργίας εικόνας προσθέτοντας μια μέθοδο παραλλαγής εικόνας όπως φαίνεται παρακάτω:

τάξηImageGenerator:
def__μέσα σε αυτό__(εαυτός) -> οδός:
...

defΠαραλλαγές εικόνας(self, ImageName, VariationCount, ImageSize):
ανταπόκριση = openai. Image.create_variation(
εικόνα = ανοιχτή("{}.png".format (ImageName), "rb"),
n = VariationCount,
μέγεθος = Μέγεθος εικόνας
)

self.image_url = απάντηση['δεδομένα']

self.image_url = [εικόνα["url"] Για εικόνα σε self.image_url]
εκτύπωση (self.image_url)
ΕΠΙΣΤΡΟΦΗ self.image_url

# Ξεκινήστε την τάξη
imageGen = ImageGenerator()

# Δημιουργήστε παραλλαγές για μια υπάρχουσα εικόνα
imageGen.imageVariations(
Όνομα εικόνας = "New_Animals",
VariationCount = 2,
Μέγεθος εικόνας = "1024x1024"
)

# Κατεβάστε τις παραλλαγές
imageGen.downloadImage (ονόματα=[
"Παραλλαγή 1",
"Παραλλαγή 2",
]
)

Ο παραπάνω κώδικας δημιουργεί παραλλαγές μιας εικόνας.

Χρησιμοποιήστε το OpenAI προς όφελός σας

Ενώ μερικοί άνθρωποι φοβούνται ότι η τεχνητή νοημοσύνη μπορεί να τους κλέψει τις δουλειές, μπορεί να είναι ένα καταφύγιο, τελικά - αν μάθετε να το ελέγχετε και να το χρησιμοποιείτε. Αυτό το σεμινάριο δημιουργίας εικόνας OpenAI είναι μόνο μία από τις πολλές περιπτώσεις χρήσης της τεχνητής νοημοσύνης στον πραγματικό κόσμο. Τα OpenAI API παρέχουν εύχρηστα προεκπαιδευμένα μοντέλα που μπορείτε εύκολα να ενσωματώσετε στην εφαρμογή σας. Έτσι, μπορείτε να ανταποκριθείτε στην πρόκληση και να δημιουργήσετε κάτι που αξίζει τον κόπο από αυτό το σεμινάριο.

Αν και το API δημιουργίας εικόνων βρίσκεται ακόμα σε beta κατά τη σύνταξη, σας επιτρέπει ήδη να δημιουργήσετε φανταστικά έργα τέχνης. Ας ελπίσουμε ότι θα λάβει περαιτέρω ενημερώσεις για να επιτρέψει την αναβάθμιση και να δέχεται διάφορα μεγέθη εικόνας.