استفد من نموذج DALL · E 2 الخاص بـ OpenAI لإنشاء صور باستخدام Python.

إذا سبق لك استخدام ChatGPT ، فقد شاهدت حدسها. مع واجهات برمجة تطبيقات OpenAI ، فإن إنشاء الكود وإكمال النص ومقارنة النصوص والتدريب النموذجي وإنشاء الصور كلها في الحقيبة للمطورين لاستكشافها ودمجها في التطبيقات.

في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام OpenAI's API مع Python لإنشاء الصور وتحريرها وتنويعها باستخدام مطالبات اللغة الطبيعية.

الشروع في العمل مع OpenAI باستخدام Python

تحتاج إلى إعداد بعض الأشياء قبل بدء هذا البرنامج التعليمي. أولاً ، تأكد من تثبيت أحدث إصدار من Python على جهاز الكمبيوتر الخاص بك. إذا كنت تستخدم توزيعة Linux مثل Ubuntu ، فقد ترغب أيضًا في رؤيتها كيفية تثبيت Python على Ubuntu.

أنشئ مجلدًا جديدًا لمشروعك وافتح سطر الأوامر في دليل المشروع.

التالي هو تثبيت حزمة OpenAI. تحتاج إلى تثبيت وسادة لتحويل الصور إلى RGBA أثناء استخدام نقطة نهاية تحرير الصورة. قد ترغب أيضًا في التثبيت بيثون دوتنف; ستستخدم هذا لإخفاء المفاتيح السرية.

نوصي بإنشاء ملف بيئة افتراضية مخصصة لـ Python لعزل التبعيات.

الكود المستخدم في هذا المشروع متاح في ملف مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

instagram viewer

لتثبيت ملف بيثون دوتنف, وسادة، و أوبناي الحزم ، قم بتشغيل الأمر التالي في المحطة:

نقطة تثبيت وسادة openai python-dotenv

توجه الآن إلى أوبن إيه آي وقم بتسجيل الدخول إلى لوحة التحكم للحصول على مفتاح API الخاص بك:

  1. بمجرد تسجيل الدخول ، انقر فوق رمز ملف التعريف الخاص بك في الجزء العلوي الأيمن.
  2. اذهب إلى عرض مفاتيح API. إذا كان مفتاح API الخاص بك غير مرئي ، فانقر فوق إنشاء مفتاح سري جديد لتوليد واحدة جديدة.
  3. انسخ المفتاح السري الذي تم إنشاؤه والصقه في مكان آمن على جهاز الكمبيوتر الخاص بك. قد ترغب في لصقه في ملف متغير البيئة في الدليل الجذر لمشروعك للأمان.

كيفية إنشاء وتحرير الصور باستخدام OpenAI API في Python

يتميز إنشاء صور OpenAI API بنقاط نهاية لإنشاء صور جديدة وإنشاء أشكال مختلفة للصور وتحريرها.

في الأقسام التالية ، ستستكشف نقاط النهاية هذه لإنشاء الصور وتعديلها وتعديلها وتنزيلها باستخدام مطالبات اللغة الطبيعية.

توليد الصور باستخدام OpenAI API

تقبل نقطة نهاية إنشاء الصورة ثلاث وسيطات للكلمات الرئيسية. وتشمل هذه اِسْتَدْعَى, ن، و مقاس.

ال اِسْتَدْعَى الكلمة الرئيسية هي سلسلة نصية تصف الصورة التي ترغب في تكوينها أثناء ن هو عدد الصور التي سيتم إنشاؤها أثناء استدعاء API. ال مقاس هو حجم الصورة ، وحتى وقت كتابة هذا التقرير ، فهي تقبل فقط 256 × 256 و 512 × 512 و 1024 × 1024 بكسل ، وفقًا للمسؤول أوبن إيه آي توثيق إنشاء الصور.

يُنشئ الكود التالي الصور باستخدام مطالبات اللغة الطبيعية ويخرج عنوان URL الخاص بها (عناوين الصور):

يستورد أوبناي
يستورد نظام التشغيل
يستورد الطلبات
من دوتنف يستورد تحميل
من بيل يستورد صورة
load_dotenv ()

فصلImageGenerator:
def__فيه__(الذات) -> شارع:
self.image_url: str
openai.api_key = os.getenv ("OPENAI_API_KEY")
الذات. APIKey = openai.api_key
self.name = لا أحد

defتوليد الصورة(ذاتي ، موجه ، ImageCount ، حجم الصورة):
يحاول:
الذات. مفتاح API
الاستجابة = openai. إنشاء الصورة (
موجه = موجه ،
ن = ImageCount ،
الحجم = حجم الصورة ،
)
self.image_url = استجابة ['بيانات']

self.image_url = [صورة ["عنوان url"] ل صورة في self.image_url]
طباعة (self.image_url)
يعود self.image_url
يستثني openai. خطأ. OpenAIError مثل هـ:
طباعة (e.http_status)
طباعة (خطأ إلكتروني)

defتنزيل الصورة(النفس ، الأسماء)-> لا أحد:
يحاول:
self.name = الأسماء
ل عنوان url في self.image_url:
image = request.get (url)
ل اسم في self.name:
مع يفتح("{}.بي إن جي".format (الاسم) ، "wb") مثل F:
f.write (محتوى الصورة)
يستثني:
مطبعة("حدث خطأ")
يعود اسم النفس

# إنشاء الطبقة
imageGen = ImageGenerator ()

# توليد الصور:
imageGen.generateImage (
موجه = "أسد عملاق ودب وقرد ونمر يقف على شلال ماء",
ImageCount = 2,
حجم الصورة = "1024 × 1024"
)

# تنزيل الصور:
imageGen.downloadImage (الأسماء = [
"الحيوانات",
"الحيوانات 2"
])

يحتوي الكود أعلاه على ملف ImageGenerator فئة مع رابط الصورة و مفتاح API صفات. ال توليد الصورة تتكيف الطريقة مع متطلبات نقطة نهاية إنشاء الصورة. يولد ن عناوين URL التي تستخدم موجه اللغة الطبيعية ، اعتمادًا على ملف ImageCount قيمة.

لكن، self.image_url يستخرج عناوين URL للصور التي تم إنشاؤها من استجابة JSON إلى قائمة باستخدام حلقة for في قائمة الفهم.

يبدو الإخراج كالتالي:

وأخيرا، فإن تنزيل الصورة طريقة تنزيل كل صورة عن طريق طلب العناوين التي تم إنشاؤها. هذه الطريقة تقبل ن عدد الأسماء التي ترغب في إعطاء كل صورة.

تحرير الصور باستخدام OpenAI API

تتيح لك نقطة نهاية التحرير تحرير صورة موجودة بناءً على قالب قناع. القناع عبارة عن تنسيق RGBA بمساحة مشروحة وشفافة ويجب أن يكون بنفس حجم الصورة التي تريد تحريرها.

عندما تقوم بتوفير قناع ، فإن نقطة نهاية التحرير تستبدل مساحتها المقنعة بالموجه الجديد في الصورة الحالية لإنتاج واحدة جديدة. أضف الطرق التالية إلى الفئة السابقة أعلاه:

فصلImageGenerator:
def__فيه__(الذات، ...):
...

defتحويل الصورة(self، maskName):
image = Image.open ("{}.بي إن جي".format (maskName))
rgba_image = image.convert ("RGBA")
rgba_image.save ("{}.بي إن جي".format (maskName))

يعود rgba_image


defتعديل الصورة(self، imageName، maskName، ImageCount، ImageSize، Prompt) -> شارع:
self.convertImage (maskName)
الاستجابة = openai. Image.create_edit (
الصورة = فتح ("{}.بي إن جي".format (imageName) ، "rb"),
قناع = فتح ("{}.بي إن جي".format (maskName) ، "rb"),
موجه = موجه ،
ن = ImageCount ،
الحجم = حجم الصورة ،
)
self.image_url = استجابة ['بيانات']
self.image_url = [صورة ["عنوان url"] ل صورة في self.image_url]

طباعة (self.image_url)
يعود self.image_url

# تحرير صورة موجودة:
imageGen.editImage (
اسم الصورة = "الحيوانات",
MaskName = "قناع",
ImageCount = 1,
حجم الصورة = "1024 × 1024",
موجه = "نسر يقف على ضفة النهر يشرب الماء مع جبل كبير"
)

# تنزيل الصورة المعدلة:
imageGen.downloadImage (الأسماء = [
"حيوانات جديدة",
])

ال تحويل الصورة طريقة تحويل صورة القناع إلى تنسيق RGBA. يمكنك تحقيق ذلك باستخدام يتحول طريقة من حزمة وسادة Python (مستوردة كـ PIL).

بمجرد التحويل ، فإنه يحفظ القناع الجديد كتجاوز للقناع الحالي. وبالتالي ، فإن تحويل الصور هو المهمة الأولى في طريقة التحرير (تعديل الصورة) ينفذ.

ال صورة يقرأ الصورة الهدف من ملف موجود ، بينما قناع يقرأ صورة القناع المحولة ، والتي يجب أن تحتوي على منطقة شفافة.

يمكنك تحديد منطقة شفافة في القناع باستخدام برنامج تحرير الصور مثل Gimp أو Photoshop.

على سبيل المثال ، الصورة التي نريد تحريرها باستخدام الموجه في الكود أعلاه هي:

الآن ، افترض أنك تريد استبدال الظباء الواقف على ضفة النهر بنسر ، كما هو مذكور في الموجه.

إليك كيف يبدو القناع:

نظرًا لأن الكلمة الرئيسية في المطالبة من الكود أعلاه تقول ، "نسر يقف على ضفة النهر" ، فإن النسر يملأ البقعة الفارغة ، ليحل محل الظبي الذي كان موجودًا في السابق.

ها هي الصورة الجديدة في هذه الحالة:

يمكنك محاولة اللعب بنقطة نهاية تحرير الصورة باستخدام صور أخرى.

إنشاء أشكال مختلفة من الصور في Python باستخدام OpenAI API

تنشئ نقطة نهاية التباين صورًا بديلة من صورة موجودة. قم بتوسيع فئة منشئ الصور بشكل أكبر عن طريق إضافة طريقة تغيير الصورة كما هو موضح أدناه:

فصلImageGenerator:
def__فيه__(الذات) -> شارع:
...

defاختلافات الصورة(self، ImageName، VariationCount، ImageSize):
الاستجابة = openai. Image.create_variation (
الصورة = فتح ("{}.بي إن جي".format (ImageName) ، "rb"),
ن = VariationCount ،
الحجم = حجم الصورة
)

self.image_url = استجابة ['بيانات']

self.image_url = [صورة ["عنوان url"] ل صورة في self.image_url]
طباعة (self.image_url)
يعود self.image_url

# إنشاء الطبقة
imageGen = ImageGenerator ()

# توليد تنويعات لصورة موجودة
imageGen.image
اسم الصورة = "New_Animals",
VariationCount = 2,
حجم الصورة = "1024 × 1024"
)

# تنزيل الاختلافات
imageGen.downloadImage (الأسماء = [
"Variation1",
"Variation2",
]
)

يولد الكود أعلاه اختلافات في الصورة.

استخدم OpenAI لصالحك

في حين أن بعض الناس يخشون أن الذكاء الاصطناعي قد يسرق وظائفهم ، فقد يكون ملاذاً ، بعد كل شيء - إذا تعلمت التحكم فيه واستخدامه. يعد هذا البرنامج التعليمي لإنشاء الصور من OpenAI واحدًا من العديد من حالات استخدام الذكاء الاصطناعي في العالم الحقيقي. توفر واجهات برمجة تطبيقات OpenAI نماذج مفيدة مدربة مسبقًا يمكنك دمجها بسهولة في تطبيقك. حتى تتمكن من مواجهة التحدي وبناء شيء جدير بالاهتمام من هذا البرنامج التعليمي.

على الرغم من أن واجهة برمجة تطبيقات إنشاء الصور لا تزال في مرحلة تجريبية حتى وقت الكتابة ، إلا أنها تتيح لك بالفعل صياغة أعمال فنية خيالية. نأمل أن تحصل على مزيد من التحديثات للسماح بالترقية وقبول أحجام الصور المختلفة.