هل يمكن للصور السيئة التي ينشئها الذكاء الاصطناعي "ضبط النموذج" في الاتجاه المعاكس؟

** الأصل: ماكس وولف **

** المصدر: ** مؤسس بارك

إن عملية التعلم المعزز التي تستخدمها OpenAI لتحسين النموذج تقلل ضمنيًا السلوك السلبي الناتج عن التفاعلات البشرية الإيجابية.

في هذه الورقة، يتخذ المؤلفون نهجًا عمليًا جديدًا: استخدام التفاعلات البشرية السلبية (أي اختيار صور منخفضة الجودة عمدًا) لتعزيز السلوك الإيجابي ضمنيًا.

مع Dreambooth LoRA، ليست هناك حاجة في الأساس لإعداد قدر كبير من بيانات الإدخال مثل تدريب نموذج لغة كبير لتحقيق هذا الهدف.

"برجر على شكل كائن فضائي ()" بمستويات تحسين مختلفة

يقدم المؤلف ميزتين أساسيتين تم إصدارهما بواسطة Stable Diffusion XL 1.0: الترجيح الفوري للكلمات والتدريب والتفكير في Dreambooth LoRA، ويجمع بين طريقة Textual Inversion (عكس النص) لتدريب Lora، مما يجعل Lora أكثر ذكاءً وأسهل في الاستخدام.

نبذة عن المؤلف: Max Woolf (@minimaxir) هو عالم بيانات في BuzzFeed، ويعمل على أدوات الذكاء الاصطناعي/التعلم الآلي والعديد من المشاريع مفتوحة المصدر.

الرابط الأصلي:

وفيما يلي محتوى المقال، الذي قام بتحريره المؤسس بارك.

مقدمة مختصرة عن SDXL

في الشهر الماضي، أصدرت Stability AI إصدار Stable Diffusion XL 1.0 (SDXL) وجعلته مفتوح المصدر، مما يسمح للمستخدمين بالوصول إليه دون أي أذونات خاصة.

مثال لمخرجات SDXL 1.0

SDXL هو في الواقع نموذجان: نموذج أساسي ونموذج تحسين اختياري يعمل على تحسين تمثيل التفاصيل بشكل كبير دون زيادة السرعة.

مقارنة الجودة النسبية بين نماذج الإصدارات المختلفة من Stable Diffusion

لاحظ التحسن الكبير في الجودة بعد استخدام النموذج الرقيق

ميزات SDXL 1.0

تجدر الإشارة إلى أن هذا الإصدار (SDXL 1.0) هو أحد النماذج مفتوحة المصدر الأولى التي يمكنها إنشاء صور بدقة 1024 × 1024 بدون إجراءات خاصة، وتكون الصور التي تم إنشاؤها أكثر تفصيلاً.

تدعم الآن مكتبة Python الخاصة بنشر Hugging Face النموذج بشكل كامل، مع بعض تحسينات الأداء.

في الوقت نفسه، نفذ الناشرون أيضًا دعمًا لميزتين جديدتين: الترجيح الفوري للكلمات والتدريب والاستدلال على Dreambooth LoRA. لذلك أخطط لتجربته (يمكن الاطلاع على كود SDXL التجريبي في الناشرين في نهاية المقالة).

يعمل دعم ترجيح الكلمات السريع للناشرين على تعزيز مكتبة بايثون التي تسمى الإجبار على ترجيح المصطلحات بطريقة أكثر رياضية. يمكنك إضافة أي عدد من + أو - إلى كلمة معينة لزيادة أو تقليل "أهميتها" في تضمين النص الموضعي الناتج وبالتالي التأثير على الإخراج النهائي.

وبنفس المبدأ، يمكنك أيضًا لف العبارات: على سبيل المثال، إذا كنت تريد إنشاء "منظر طبيعي لسان فرانسيسكو لسلفادور دالي، زيت على قماش" وتم إنشاء صورة واقعية لسان فرانسيسكو، فيمكنك تأطير الشكل الفني ويصبح أدخل "منظر طبيعي لسان فرانسيسكو لسلفادور دالي، (زيت على قماش)+++"، دع Stable Diffusion يخرج التأثير المتوقع.

** إعداد البيئة **

لقد قمت بتشغيل جهاز افتراضي سحابي، وقمت بتزويده بوحدة معالجة رسوميات Nvidia L4 جديدة متوسطة المدى (0.24 دولار في الساعة لمثيل Spot على Google Cloud Platform)، وبدأت العمل.

باستخدام وحدة معالجة الرسومات L4 واحدة، يستغرق الأمر حوالي 22 ثانية لإنشاء كل صورة بحجم 1024 × 1024؛ وعلى عكس وضع Stable Diffusion السابق، يمكن لوحدة معالجة الرسومات متوسطة المدى الآن إنشاء صورة واحدة فقط في كل مرة لأن استخدام وحدة معالجة الرسومات الخاصة بها ممتلئ بالفعل، لذلك لديك فقط أن تكون أكثر صبرا. يمكن أن يؤدي خفض الدقة إلى تسريع عملية الإنشاء، لكنني أنصح بشدة بعدم القيام بذلك، لأن النتيجة ستكون فظيعة.

** القليل من التكوين الشخصي **

في اختباراتي، تم إصلاح معظم مشكلات الكلمات السريعة التي تم تقديمها بعد Stable Diffusion 2.0، خاصة مع تعيين قيم توجيه أعلى بدون مصنف (توجيه_قياس الإعدادات الافتراضية إلى 7.5؛ أحب تغييرها إلى 13)

مقياس التوجيه هو 13 لجميع الأمثلة التي تم إنشاؤها بواسطة نموذج LoRA في هذه المقالة.

البدء丨استكشف LoRA

أهم تحديث لـ SDXL 1.0 هو في الواقع دعم Dreambooth LoRA، والذي يسمح لنا بتخصيص نموذج Stable Diffusion.

Dreambooth عبارة عن تقنية لضبط Stable Diffusion استنادًا إلى مجموعة صغيرة جدًا من الصور المصدر وكلمة رئيسية للتشغيل، بحيث يمكن استخدام "المفاهيم" في تلك الصور في سياقات أخرى بالنظر إلى الكلمة الأساسية.

* رسم تخطيطي لمبدأ عمل Dreambooth *

ميزة LoRA: "النماذج الصغيرة" الخاصة بالمجال

عند تدريب Stable Diffusion نفسه، فحتى النموذج الصغير يتطلب عدة ساعات من التدريب على العديد من وحدات معالجة الرسوميات باهظة الثمن.

هذا هو المكان الذي يكون فيه LoRA مفيدًا: فهو يقوم بتدريب مجموعة فرعية صغيرة من نموذج الرؤية بحيث لا يتطلب الأمر سوى وحدة معالجة رسومات رخيصة لإخراج النتائج في 10 دقائق، كما أن جودة النموذج النهائي + LoRA قابلة للمقارنة بنموذج مضبوط تمامًا (بشكل عام، عندما يشير الأشخاص إلى الضبط الدقيق للانتشار المستقر، فإنهم غالبًا ما يشيرون إلى إنشاء LoRA).

LoRA المدربة عبارة عن ثنائي صغير مستقل يمكن مشاركته بسهولة مع الآخرين، أو تحميله إلى مستودع مثل Civitai.

عيب صغير في LoRA هو أنه يمكن لواحد فقط أن يكون نشطًا في نفس الوقت: يمكننا الجمع بين LoRAs المتعددة للجمع بين مزاياها، لكن الأمر ليس بهذه البساطة في الممارسة العملية.

** القتال الفعلي لقلب النص: قلب النص **

قبل أن يصبح Stable Diffusion LoRA شائعًا على نطاق واسع، كانت هناك طريقة تسمى الانعكاس النصي، والتي سمحت لمشفرات النص بتعلم المفاهيم، لكن الأمر استغرق عدة ساعات للتدريب وقد تكون النتائج قبيحة.

لقد قمت بتدريب انعكاس النص في منشور مدونة سابق: Ugly Sonic (Sonic)، وبما أنه لم يكن موجودًا في مجموعة البيانات المصدر لـ Stable Diffusion، كانت النتائج فريدة. النتائج التي تم إنشاؤها هي كما يلي، مع نتائج مختلطة.

(قبيح) سونيك، لكنه قبيح كالجحيم

هذه المرة، أعتقد أن استخدام Ugly Sonic لتدريب LoRA سيكون حالة جيدة لاختبار إمكانات SDXL.

لقد حدث أن Hugging Face يوفر برنامج نصي Train_dreambooth_lora_sdxl.py، والذي يمكنه استخدام نموذج SDXL الأساسي لتدريب LoRA؛ لا يزال هذا البرنامج النصي خارج الصندوق، لكنني قمت بتعديل المعلمات قليلاً.

ليس من قبيل المبالغة القول إن صور Ugly Sonic التي تم إنشاؤها بواسطة LoRA المدربة تحت كلمات سريعة مختلفة تبدو أفضل وأكثر تنظيمًا.

سونيك ولكن هذه المرة بأسنان

متقدم 丨 انعكاس نصي متعمق

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

الطريقة هذه المرة هي تدريب LoRA ببعض الصور منخفضة الجودة المشوهة بشدة، والكلمة السريعة المعطاة خاطئة، وآمل أن تتمكن LoRA من التعامل مع الخطأ على أنه "مطالبة سلبية" وتجنب هذا الموقف، وتوليد صور ذات تشويه أقل.

لقد كتبت Jupyter Notebook واستخدمت SDXL لإنشاء الكثير من الصور المركبة "الخاطئة" بنفسي، وهذه المرة أيضًا باستخدام أوزان تلميحات مختلفة لإنشاء أمثلة أكثر وضوحًا للصور الفاشلة مثل الأيدي الباهتة (الضبابية) والأيدي السيئة (الرسم الخاطئ) .

ومن المفارقات أننا بحاجة إلى استخدام SDXL لإنشاء صور فاشلة عالية الدقة.

فيما يلي بعض الأمثلة على الصور الاصطناعية الخاطئة

إنه يتضمن عن غير قصد عناصر من أغلفة ألبومات موسيقى الروك البانك من العقد الأول من القرن الحادي والعشرين

لقد قمت بتدريب LoRA هذا وقمت بتحميله في النموذج الأساسي Stable Diffusion XL (LoRA ليس مطلوبًا لضبط النموذج)، وكتبت Jupyter Notebook لمقارنة المخرجات التالية للكلمات السريعة المحددة:

النموذج الأساسي + خط الأنابيب بدون LoRA. (الأساسية)

لا يوجد خط أنابيب LoRA، استخدم خطأ كتلميح سلبي (أضف تلميحًا سلبيًا)

استخدم خط أنابيب LoRA، واستخدم الخطأ كتلميح سلبي (الهدف المثالي)

بذور كل نتيجة تم إنشاؤها هي نفسها، لذلك يجب أن يكون تكوين الصور الثلاث الناتجة متشابهًا، ويجب أن يكون الفرق بين تأثير التلميحات السلبية الخاطئة وLoRA وخط أنابيب النموذج الأساسي واضحًا للغاية.

حالة اختبار SDXL 0.9

دعونا نستخدم SDXL 0.9 لإظهار مطالبة بسيطة لبدء الاختبار:

「ذئب في منتزه يوسيميتي الوطني، تصوير فيلم وثائقي عن الطبيعة الباردة」

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

ثم أضفت "لقطة قريبة جدًا (لقطة قريبة جدًا)" إلى الكلمة السريعة، وبعد إعادة استخدام البذور السابقة، حصلت على لقطات مقربة مختلفة للذئاب ضمن تكوين صورة مماثل.

「لقطة قريبة جدًا لذئب في منتزه يوسمايت الوطني، تصوير فوتوغرافي لفيلم وثائقي عن الطبيعة الباردة」

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

حالة اختبار جيدة أخرى هي تصوير الطعام، ولقطات الطعام الغريبة التي قمت بإنتاجها باستخدام DALL-E 2 جيدة بشكل خاص. هل يمكن لـ SDXL + LoRA الخاطئ إنشاء برغر غير إقليدي ذو مظهر غريب مع بعض الترجيح؟

「همبرغر كبير لذيذ (على شكل هندسة كائن فضائي خماسي الأبعاد)++++، تصوير طعام احترافي」

"برجر كبير لذيذ (هندسة كائن فضائي 5D)++++، تصوير طعام احترافي"

الجواب هو أنه لا يمكن ذلك، حتى لو تم تعديل كلمة المطالبة عدة مرات. ومع ذلك، فإن الإخراج مثير للاهتمام: يبدو أن قاعدة SDXL تأخذ الجزء "الفضائي" من الموجه بشكل حرفي أكثر مما كنت أعتقد (وأعطته قبعة لطيفة!) ، لكن LoRA يعمل بشكل أفضل لقد فهم معنى التلميحات بوضوح، و صنع برجر "غريب" يصعب على البشر تناوله، ونمط الصورة أكثر سطوعًا.

ماذا سيحدث للرسام؟ هل تستطيع LoRA بالخطأ حل المشكلة سيئة السمعة المتمثلة في عدم رسم الذكاء الاصطناعي للأيدي؟ وقمنا أيضًا بتضمين العديد من هذه الأمثلة في بيانات التدريب الخاصة بـ LoRA. دعنا نغير المطالبة التي استخدمتها عندما حاولت Stable Diffusion 2.0 لأول مرة لرسم الرئيس تايلور سويفت:

「رئيسة الولايات المتحدة الأمريكية تايلور سويفت (توقيع الأوراق)++++، الصورة التقطتها وكالة أسوشيتد برس」

"الرئيس الأمريكي تايلور سويفت (وثيقة التوقيع)++++، الصورة بواسطة AP"

ألقِ نظرة على ذراع تايلور اليمنى: يُنتج نموذج SDXL الافتراضي نتائج مجنونة، وفي حالة الخطأ يكون الأمر أسوأ في الواقع، ولكن في LoRA تم إصلاحه! تعد طبقات الألوان في LoRA أفضل بكثير، حيث أصبحت سترتها بيضاء أكثر بروزًا بدلاً من اللونين الأصفر والأبيض. لكن لا يزال من غير الممكن رؤية يديها بعناية: فرسم الشخصيات باستخدام SDXL 1.0 لا يزال مرهقًا وغير موثوق به!

الآن أصبح الاستنتاج واضحًا، فإن ناتج الخطأ + LoRA في كل حالة هو أكثر إثارة للاهتمام من ناتج إضافة إشارات سلبية خاطئة ببساطة، لذلك نقوم فقط بمقارنة الناتج الأساسي ومخرج LoRA أدناه. فيما يلي مثال للنموذج الأساسي مقارنةً بـ LoRA الخاطئة:

「تدوين شريك بشري واقعي على محطة عمل كمبيوتر، صورة واقعية للغاية حائزة على جوائز لمجلة فانيتي فير」

  • (مدونة بشرية واقعية لـ Shrek على محطة عمل الكمبيوتر، صور سريالية حائزة على جوائز من Vanity Fair) - رسم يد LoRA وإضاءة أفضل. الأزياء أكثر تفصيلاً والخلفيات أكثر إثارة للاهتمام. *

「بيتزا بيبروني على شكل قلب، تصوير طعام احترافي فائق الواقعية حائز على جوائز」

(بيتزا بيبروني على شكل قلب، تصوير طعام احترافي واقعي للغاية وحائز على جوائز) - بيبروني أكثر تفصيلاً، فقاعات ساخنة، بيبروني أقل فائضًا على حواف البيتزا، تبدو القشرة أكثر صرامة

يتوفر LoRA مع الخطأ هنا، ولكن لا أستطيع أن أضمن أداءه على واجهات أخرى غير الناشرين.

جميع دفاتر الملاحظات المستخدمة لإنشاء هذه الصور موجودة في مستودع GitHub هذا، بما في ذلك نموذج SDXL 1.0 القياسي + نموذج الضبط الدقيق + دفاتر LoRA Colab مع الخطأ، يمكنك تشغيل دفاتر الملاحظات هذه على وحدة معالجة رسومات T4 مجانية. إذا كنت تريد رؤية نسخة ذات دقة أعلى من الصور التي تم إنشاؤها والمستخدمة في هذه المقالة، فيمكنك زيارة الكود المصدري للمقالة.

خطأ ماذا يحدث بحق الجحيم؟

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

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

حدسي هو أن LoRA يعيد تشكيل هذه المنطقة غير المرغوب فيها في الفضاء الكامن الضخم عالي الأبعاد لتكون أكثر شبهاً بمنطقة البداية، وبالتالي فإن احتمالية وصول نتائج التوليد الطبيعي إلى هذه المنطقة تصبح أصغر وتكون الجودة أقل، وقد تم تحسينها. (راجع عملية تغيير Alien Burger أعلاه)

يعد تدريب SDXL باستخدام صور منخفضة الجودة لتحسينها من الناحية الفنية شكلاً من أشكال التعلم المعزز باستخدام التعليقات البشرية (RLHF): وهذا النهج هو أيضًا الطريق إلى نجاح ChatGPT. إن عملية التعلم المعزز التي تستخدمها OpenAI لتحسين النموذج هي تقليل السلوك السلبي ضمنيًا من تفاعل المستخدم الإيجابي، بينما أنا هنا أستخدم تفاعل المستخدم السلبي (أي اختيار صور منخفضة الجودة عمدًا) لزيادة السلوك الإيجابي ضمنيًا.

ولكن مع Dreambooth LoRA، لا تحتاج في الأساس إلى إعداد قدر كبير من بيانات الإدخال مثل تدريب نموذج لغة كبير.

لا تزال إمكانات "LoRA السلبية" كبيرة: تتمتع معلمات إنشاء مجموعة البيانات الاصطناعية الخاصة بي بمساحة كبيرة للتحسين، ويمكن أيضًا تدريب LoRA لفترة أطول من الوقت. لكنني سعيد جدًا بالنتائج حتى الآن وأرغب في إجراء المزيد من الاختبارات مع LoRA السلبية، مثل الدمج مع LoRAs الأخرى لمعرفة ما إذا كان يمكنها تعزيز الأخيرة (خاصة LoRA الخاطئة + Ugly Sonic LoRA!)

المرفق: عرض توضيحي لـ SDXL في أجهزة النشر

استيراد الشعلة

من الناشرين استيراد DiffusionPipeline، AutoencoderKL

قاعدة تحميل SDXL ومصفاة

vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix"،

torch_dtype=torch.float16)

القاعدة = DiffusionPipeline.from_pretrained(

"الاستقرار/الانتشار المستقر-xl-base-1.0"،

قدم = قدم،

الشعلة_dtype=torch.float16,

إيانت = "FP16"،

استخدام_safetensors=صحيح،

)

_ = base.to("كودا")

المصفاة = DiffusionPipeline.from_pretrained(

"الاستقرار / الانتشار المستقر-xl-refiner-1.0"،

text_encoder_2=base.text_encoder_2،

الساق=base.leg,

الشعلة_dtype=torch.float16,

إيانت = "fp16"،

استخدام_safetensors=صحيح،

)

_ = Refiner.to("كودا")

التوليد باستخدام كلا النموذجين (خليط من الخبراء)

ارتفاع_الضوضاء_فرك = 0.8

= "رائد فضاء يركب حصانًا"

سلبي_ = "أيدي ضبابية وسيئة"

الصورة = القاعدة(

سلبي \ _ = سلبي \ _،

تقليل الضوضاء_end=الضوضاء العالية_frac،

الإخراج_النوع = "كامنة"،

).الصور

الصورة = المكرر (

سلبي \ _ = سلبي \ _،

تقليل الضوضاء_بدء=ارتفاع_الضوضاء_frac،

صورة = صورة،

).الصور [0] ​

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت