كيفية جعل روبوت يحول الصور إلى كاريكاتير: إرشادات خطوة بخطوة للدمى

الجزء الأول ، تستكمل.
الكوتان ، مرحبا.
أنا ساشا وانغمس في الخلايا العصبية.

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

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

تعليمات لالدمى مثلي.
سنختار اليوم بنية شبكتنا العصبية ونختبرها ونجمع أول مجموعة بيانات تدريبية.

اختيار العمارة


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

فيما يلي بعض الأمثلة من photo2comicsbot ، وسنفعل شيئًا مماثلاً.





نظرًا لأن طراز UGATIT كان ثقيلًا للغاية بالنسبة لبطاقة الفيديو الخاصة بي ، فقد لفتت الانتباه إلى تشبيه قديم ، لكن أقل شراسة - CycleGAN

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

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

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

أ) على غرار الكتاب الهزلي
ب) مماثلة للصورة الأصلية

يمكن تنفيذ النقطة "أ" باستخدام GAN المعتاد ، حيث يكون الناقد المدرب مسؤولاً عن "تشبه الكوميديا".

المزيد عن GAN


شبكة GAN ، أو شبكة الخصومة التوليدية ، هي زوج من شبكتين عصبيتين: Generator and Critic.
يقوم المولد بتحويل المدخلات ، على سبيل المثال ، من صورة إلى كتاب هزلي ، ويقارن الناقد النتيجة "الزائفة" الناتجة مع كتاب هزلي حقيقي. وظيفة المولد هي خداع الناقد ، والعكس صحيح.

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

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

في حالتنا ، لا ترتبط المجموعات "A" و "B" بأي طريقة مع بعضها البعض. في المجموعة "أ" - صور عشوائية ، في المجموعة "ب" - كاريكاتير عشوائي.

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

هذا هو المكان الذي تأتي به بنية CycleGAN.

باختصار ، هذا هو زوج GAN ، الأول يحول الصورة من الفئة "أ" (على سبيل المثال ، صورة) إلى الفئة "ب" (على سبيل المثال ، كتاب هزلي) ، والثاني للخلف ، من الفئة "ب" إلى الفئة "أ".



يتم تدريب النماذج على حد سواء على أساس مقارنة الصورة الأصلية مع الصورة المستعادة (كنتيجة لدورة "A" - "B" - "A" ، "صورة كوميدي-صور") ، وبيانات النقاد ، كما هو الحال في GAN منتظم.

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

نموذج التثبيت والتحقق


لتنفيذ خطتنا الماكرة ، نحتاج إلى:

  • بطاقة رسومات تدعم CUDA بسعة 8 جيجابايت من ذاكرة الوصول العشوائي
  • نظام التشغيل Linux
  • Miniconda / أناكوندا مع بيثون 3.5+

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

إذا لم يكن لديك وحدة معالجة الرسومات (GPU) بدعم CUDA ، أو كنت كسولًا جدًا في إعدادها بالكامل ، فيمكنك دائمًا استخدام Google Colab. إذا كان هناك عدد كافٍ من الأشخاص الذين يرغبون في ذلك ، فسنقوم بملء البرنامج التعليمي وكيفية تحسين كل ما يلي في إحدى سحابة Google.

Miniconda يمكن اتخاذها هنا
تعليمات التثبيت

بعد تثبيت Anaconda / Miniconda (المشار إليها فيما يلي باسم conda) ، قم بإنشاء بيئة جديدة لتجاربنا وقم بتنشيطها:

(يحتاج مستخدمو Windows إلى بدء تشغيل Anaconda Prompt أولاً من قائمة ابدأ)

conda create --name cyclegan conda activate cyclegan 

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

بعد ذلك ، اتبع ببساطة إرشادات README.MD من التوزيع:

حفظ توزيع CycleGAN:

(أو مجرد تنزيل الأرشيف من GitHub)

 git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix cd pytorch-CycleGAN-and-pix2pix 

تثبيت الحزم اللازمة:

 conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing conda install pytorch torchvision -c pytorch conda install visdom dominate -c conda-forge 

قم بتنزيل مجموعة البيانات النهائية والطراز المقابل:

 bash ./datasets/download_cyclegan_dataset.sh horse2zebra bash ./scripts/download_cyclegan_model.sh horse2zebra 

انتبه إلى الصور الموجودة في مجموعة البيانات التي تم تنزيلها.

إذا قمت بفتح ملفات البرامج النصية من الفقرة السابقة ، يمكنك أن ترى أن هناك مجموعات بيانات ونماذج أخرى جاهزة لها.

أخيرًا ، اختبر النموذج على مجموعة البيانات التي تم تنزيلها:

 python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout 

سيتم حفظ النتائج في المجلد / results / horse2zebra_pretrained /

إنشاء مجموعة التدريب


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



كما فهمت بالفعل ، يجدر تحديد تلك الصور / الرسوم الهزلية التي تريد استخدامها عند الإدخال والحصول على الإخراج. هل تخطط لمعالجة صور شخصية - إضافة صور شخصية وصور قريبة من الوجوه من صور كاريكاتورية وصور المباني - أضف صورًا للمباني وصفحات من صور كاريكاتورية مع المباني.
كصور عينة ، استخدمت DIV2K و Urban100 ، بنكهة صور نجوم Google لتعزيز التنوع.

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

من المهم الانتباه إلى الرسم ، ويختلف في سلسلة مختلفة ، ونظام الألوان.



كان لدي الكثير من deadpool ورجل العنكبوت ، لذلك يصبح الجلد أحمر للغاية.

يمكن العثور هنا على قائمة غير كاملة بمجموعات البيانات العامة الأخرى.

يجب أن تكون بنية المجلد في مجموعة البيانات الخاصة بنا كما يلي:

selfie2comics
├── قطار
├── trainB
├── testA
B testB

trainA - صورنا (حوالي 1000pcs)
testA - بعض الصور للاختبارات النموذجية (30pcs ستكون كافية)
trainB - لدينا كاريكاتير (حوالي 1000 جهاز كمبيوتر شخصى.)
testB - كاريكاتير للاختبارات (30pcs.)

يُنصح بوضع مجموعة البيانات على SSD ، إن أمكن.

هذا كل شيء لهذا اليوم ، في العدد التالي سنبدأ في تدريب النموذج والحصول على النتائج الأولى!

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

إذا كنت قد حاولت بالفعل تدريب النموذج ، فلا تتردد في مشاركة النتائج في التعليقات. اراك قريبا!

⇨ الجزء التالي

Source: https://habr.com/ru/post/ar479218/


All Articles