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

first الجزء الأول
⇨ الجزء الثالث

مرحبا مرة أخرى!

كما ترون ، أعاقت العطلات إلى حد ما الجدول الزمني للمقالات.
أعتقد أن الكثيرين تمكنوا خلال هذا الوقت من ، إن لم يكن تدريبهم بالكامل ، من تجربة مجموعات بيانات مختلفة على الأقل.
1. ضع التوزيع
2. تحميل الصور
3. ؟؟؟
4. الربح!
إذا لم تكن على مستوى هذه الشبكات العصبية لدينا ، أو بدأت القراءة من هذه المقالة ، فعندئذ ، كما يقولون ، لا يوجد وقت لشرح ذلك ، فنحن نأخذ مجموعة التوزيع وننزل الصور اللازمة ، ولنذهب!

تعليمات مفصلة في المادة السابقة في هذه السلسلة .

فطيرة الأولى هي العقدي


عندما قمت بتدريب النموذج الخاص بـ @ photo2comicsbot للمرة الأولى ، دون المزيد من اللغط ، قمت بحذف حوالي 1000 صفحة من القصص المصورة في مجموعة بيانات.
نعم ، إلى جانب الأغطية والإعلانات والحشوات الأخرى.

عند المدخل بدا مثل هذا:



والنتيجة هي المقابلة:







المزيد من الصور

















ينقل النموذج تمامًا الاختلافات العامة بين الصور الهزلية والصور:

  • درجات اللون النموذجية
  • اختيار الخطوط العريضة
  • كتل انهيار
  • سحابة النص

من حيث المبدأ ، قد يكون هذا الخيار كافيا للإنتاج.

لكنني كنت أتساءل ما هي النتائج التي يمكن الحصول عليها في مجموعة بيانات "نظيفة" أكثر.

خذ اثنين


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



النتيجة ، كما يقولون ، واضحة:







المزيد من الصور












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

المساحة الفارغة التي كانت مملوءة بالنص مليئة الآن بالضوضاء المخدرة.

المرة الثالثة هي سحر


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

مجموعة البيانات بعد "الإبادة الجماعية اللغوية":



النتيجة النهائية:







المزيد من الصور










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

الجمال في عين الناظر ، لذلك لا تخف من التجربة واختيار أفضل ما تريد.

إلى السلاح!


حسنًا ، لقد تحدثنا بالفعل عن المآزق الرئيسية وأساليب التعامل معها ، فقد حان الوقت للشروع في العمل.

انتقل إلى المجلد حيث قمنا بتنزيل التوزيع. واسمحوا لي أن أذكرك بأنه أطلق عليه pytorch-CycleGAN-and-pix2pix

نظرًا لأن لدينا إرشادات حول الدمى ، فلن نلمس رمز التوزيع ، حيث يمكن تعيين جميع المعلمات الضرورية من سطر الأوامر.

في هذا التوزيع ، يتم التدريب الافتراضي على مائتي عصر ، مع توهين خطي لمعدل التعلم بعد الحقبة المائة.
كانت الدقة القصوى التي تمكنت بطاقتها التي تبلغ سعتها 8 غيغابايت من السيطرة عليها 400 × 400. استغرق التدريب الكامل لي حوالي 33 ساعة ، لذلك سوف نستخدم اختراق الحياة الصغيرة. أولاً ، سنقوم بتدريب النموذج على صور 128 × 128 ، ثم 256 × 256 ، وفقط في المرحلة النهائية ، سنظهر لها 400 × 400 الرائعة.
ستستغرق المرحلة الأولى 100 حقبة ، الثانية والثالثة - 50 لكل منهما ، مما سيتيح لنا تقليل وقت التدريب بمقدار النصف تقريبًا.

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

في موجه الأوامر ، أدخل.

المرحلة الأولى


python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 128 --load_size 180 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 4 

لا تنسى أن تستبدل الأقواس بقيمك الخاصة.

سنقوم بتحليل بعض المعلمات بمزيد من التفاصيل:

 --batch_size {number} 

هذه المعلمة مسؤولة عن عدد الصور التي تمت معالجتها في كل دورة ، مما يؤثر إيجابًا على السرعة وسلبًا على شره النموذج.

في كل مرحلة ، حدد الحد الأقصى الممكن --batch_size ، والذي لا يسبب أخطاء بسبب نقص ذاكرة GPU.

 -- dataroot {dataset root folder} 

- مجلد مع مجموعة البيانات لدينا. يجب أن يكون داخلها المجلدات trainA و trainB و testA و testB ، كما هو موضح في المقالة السابقة.

 --name {model name} 

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

يمكن إيقاف المرحلة الأولى من التدريب في العصر المائة.

يمكنك ملاحظة التقدم من المتصفح: المضيف المحلي: 8097 /
(أو رابط آخر سيكون مرئيًا في وحدة التحكم)

المرحلة الثانية


 python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 256 --load_size 290 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 2 --epoch 100 --epoch_count 0 --continue_train 

من المهم الإشارة إلى العصر الذي أنهينا فيه دراساتنا في المرحلة الأولى.
"- العصر 100" يعني أننا سنقوم بتحميل النموذج من نقطة التفتيش في العصر المائة
"--Epoch_count 0" يعني أننا سنبدأ التدريب من البداية ، بأقصى سرعة تعلم.

يمكن إيقاف المرحلة الثانية من التدريب في العصر الخمسين.

المرحلة الثالثة


 python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 400 --load_size 430 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 1 --epoch 50 --epoch_count 0 --continue_train 


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

اخرج الآن وانظر ماذا فعلت


أثناء التدريب ، سيتم حفظ النموذج والنتائج الوسيطة في مجلد
/ pytorch-CycleGAN-and-pix2pix / checkpoints / {model name}

لاختبار النموذج ، فقط أدخل سطر الأوامر:

 python test.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --netG resnet_9blocks --crop_size 512 --load_size 580 --epoch {epoch name} 

يمكنك رؤية النتيجة على مجموعة بيانات اختبار لأي نقطة تفتيش ، فقط حددها كـ {epoch name}. إذا لم يتم تحديد {epoch name} ، فسيتم أخذ نقطة التفتيش الأخيرة.

سيتم حفظ النتيجة في المجلد:
/pytorch-CycleGAN-and-pix2pix/results/{model name}/test_{epoch name}
من أجل عدم الخلط بين النموذج الذي تعطيه مجموعة البيانات النتيجة ،
البدء في الحفاظ على مذكرات صغيرة. سجل بيانات خط الأساس ونتائج التعلم.

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

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

لا تخافوا للتجربة. تأكد من تجربة العديد من مجموعات البيانات المختلفة ومقارنة النتائج ومشاركتها في التعليقات!

اراك قريبا!

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

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


All Articles