يحتوي هذا الريبو على تطبيق PyTorch لخوارزمية Deep Dream (:link: blog by Mordvintstev et al.).
لقد حصل على دعم كامل لاستخدام سطر الأوامر و Jupyter Notebook !
وسوف يمنحك القدرة على إنشاء هذه الصور الغريبة ذات المظهر المخدر:
ليس سيئا، هاه؟
أقترح عليك بشدة أن تبدأ باستخدام دفتر Jupyter الذي قمت بإنشائه!
ملحوظة: حجمه كبير جدًا، حوالي 10 ميجابايت، لذا قد يستغرق تحميله في المتصفح هنا على GitHub بضع محاولات.
باختصار، تعمل الخوارزمية على زيادة تنشيط طبقات الشبكة المختارة إلى الحد الأقصى عن طريق القيام بصعود متدرج .
لذلك من صورة مدخلة مثل تلك الموجودة على اليسار بعد "الحلم" نحصل على الصورة على اليمين:
من كان يقول أن الشبكات العصبية لديها هذا الإبداع مختبئًا بداخلها؟ ؟
تمت كتابة معظم مستودعات Deep Dream الأصلية بلغة Caffe وتلك المكتوبة بلغة PyTorch عادةً ما تكون صعبة القراءة والفهم. هذا الريبو هو محاولة لإنشاء أنظف ريبو DeepDream الذي أعرفه + إنه مكتوب في PyTorch! ❤️
فيما يلي بعض الأمثلة التي يمكنك إنشاؤها باستخدام هذا الرمز!
باستخدام طبقات أقل عمقًا من الشبكات العصبية، ستحصل على أنماط ذات مستوى أدنى (الحواف، والدوائر، والألوان، وما إلى ذلك) كمخرجات:
هنا جاءت أول صورتين من ResNet50 وجاءت الصورة الأخيرة من GoogLeNet (كلاهما تم تدريبهما مسبقًا على ImageNet).
باستخدام طبقات الشبكة الأعمق، ستحصل على أنماط ذات مستوى أعلى (العيون، والأنف، ورؤوس الحيوانات):
تم إنشاء الأول والثالث باستخدام VGG 16 (ImageNet) والوسطى باستخدام ResNet50 الذي تم تدريبه مسبقًا على Places 365.
إذا احتفظنا بجميع المعلمات الأخرى كما هي ولكن قمنا بتبديل الأوزان المدربة مسبقًا، فسنحصل على ما يلي:
على اليسار: ResNet50-ImageNet (يمكننا رؤية المزيد من ميزات الحيوانات) على اليمين: ResNet50-Places365 (أشياء صنعها الإنسان، وما إلى ذلك).
يتم تنفيذ الحلم على دقة صور متعددة مكدسة "عموديًا" (نسمي هذا هرم الصورة ).
بالانتقال من اليسار إلى اليمين، كان المعلم الوحيد الذي تغير هو حجم الهرم (من اليسار إلى اليمين: 3، 7، 9 مستويات).
إن اللعب بنسبة الهرم له تأثير مشابه/مرتبط - الفكرة الأساسية هي أن المساحة النسبية للصورة التي يمكن للخلايا العصبية العميقة تعديلها و"رؤيتها" (ما يسمى بالمجال الاستقبالي للشبكة) تتزايد ونصبح أكبر بشكل متزايد ميزات مثل ظهور العيون (من اليسار إلى اليمين: 1.1، 1.5، 1.8):
ملاحظة: يمكنك رؤية المعلمات الدقيقة المستخدمة لإنشاء هذه الصور المشفرة في اسم الملف!
تأكد من إطلاعك على دفتر Jupyter!، لقد شرحت ذلك بدقة.
فيما يلي بعض الأمثلة الإضافية التي يمكنك إنشاؤها باستخدام هذا الرمز!
الفكرة هنا هي أن أيًا كان ما تحلم به الشبكة، فما عليك سوى إعادة ذلك إلى مدخلاتها وتطبيق تحويل هندسي.
إذا طبقنا التكبير المركزي فقط نحصل على هذا:
يؤدي تطبيق التكبير/التصغير المركزي وتطبيق التدوير بمقدار 3 درجات لكل إطار في نفس الوقت إلى ما يلي:
أخيرًا، إذا قمنا بترجمة بسيطة (5 بيكسل لكل إطار من أعلى اليسار إلى أسفل الاتجاه الأيمن):
نأمل ألا تكسر هذه الأشياء عقلك - فهي تبدو وكأنها ويب 1.0 في أوائل العقد الأول من القرن الحادي والعشرين. تحمل معي.
بدلاً من تغذية الإخراج مرة أخرى إلى الإدخال، نقوم فقط بتطبيق الخوارزمية لكل إطار وتطبيق بعض المزج الخطي:
يقوم المزج الخطي بدمج الإطار الحالي مع الإطار الأخير لتقليل الوميض (هنا استخدمت 0.85)
ملاحظة: تم إنتاج جميع صور/صور GIF الخاصة بـ Deepdream بواسطتي، ويتم منح اعتمادات فناني الصور الأصلية أدناه.
git clone https://github.com/gordicaleksa/pytorch-deepdream
cd path_to_repo
conda env create
من دليل المشروع (سيؤدي ذلك إلى إنشاء بيئة conda جديدة تمامًا).activate pytorch-deepdream
(لتشغيل البرامج النصية من وحدة التحكم الخاصة بك أو إعداد المترجم الفوري في IDE الخاص بك)هذا كل شيء! يجب أن يعمل خارج الصندوق على تنفيذ ملف Environment.yml الذي يتعامل مع التبعيات.
ملاحظة: إذا كنت ترغب في استخدام وظائف الفيديو المتوفرة لدي، فستحتاج إلى ffmpeg في مسار النظام لديك.
ستأتي حزمة PyTorch pip مرفقة مع بعض إصدارات CUDA/cuDNN، ولكن يوصى بشدة بتثبيت CUDA على مستوى النظام مسبقًا، ويرجع ذلك في الغالب إلى برامج تشغيل GPU. أوصي أيضًا باستخدام برنامج تثبيت Miniconda كوسيلة للحصول على conda على نظامك. اتبع النقطتين 1 و2 من هذا الإعداد واستخدم أحدث الإصدارات من Miniconda وCUDA/cuDNN لنظامك.
ما عليك سوى تشغيل jupyter notebook
من وحدة تحكم Anaconda الخاصة بك وسيفتح جلسة في متصفحك الافتراضي.
افتح The Annotated DeepDream.ipynb
وستكون جاهزًا للعب!
ملاحظة: إذا DLL load failed while importing win32api: The specified module could not be found
ما عليك سوى القيام pip uninstall pywin32
ومن ثم يجب إصلاحه إما pip install pywin32
أو conda install pywin32
!
كل ما عليك فعله هو ربط بيئة Python التي قمت بإنشائها في قسم الإعداد.
انتقل إلى/قم بتنشيط env الخاص بك إذا كنت تستخدم Anaconda (وآمل أن تفعل ذلك) ويمكنك استخدام الأوامر التي قمت بربطها أدناه.
نصيحة: ضع صورك/مقاطع الفيديو الخاصة بك داخل دليل data/input/
ويمكنك بعد ذلك فقط الإشارة إلى ملفاتك (الصور/مقاطع الفيديو) بأسمائها بدلاً من استخدام المسارات المطلقة/النسبية.
لإنشاء بعض صور Deep Dream الثابتة، قم بتشغيل الأمر التالي:
python deepdream.py --input <img_name> --img_width 600
سيستخدم هذا الإعدادات الافتراضية ولكنك ستحصل على الفور على نتيجة ذات معنى محفوظة في:
data/out-images/VGG16_EXPERIMENTAL_IMAGENET/
ملحوظة: سيتغير دليل الإخراج وفقًا للنموذج والأوزان المدربة مسبقًا التي تستخدمها.
للحصول على فيديو Ouroboros ذو 30 إطارًا جاهزًا، قم بما يلي:
python deepdream.py --input <img_name> --create_ouroboros --ouroboros_length 30
سيتم تفريغ الإطارات المتوسطة إلى data/out-videos/VGG16_EXPERIMENTAL_IMAGENET/
وسيحفظ الفيديو النهائي إلى data/out-videos
.
لإنشاء فيديو Deep Dream قم بتشغيل هذا الأمر:
python deepdream.py --input <mp4 video name>
سيتم تفريغ الإطارات المتوسطة إلى data/out-videos/tmp_out
وسيحفظ الفيديو النهائي إلى data/out-videos
.
حسنًا، استمتع باللعب بهذا المشروع! إليك بعض النتائج الإضافية والجميلة:
ستكون وحدة معالجة الرسومات التي تبلغ سعتها أكثر من 2 جيجابايت أكثر من كافية.
ستتمكن من إنشاء صور DeepDream ومقاطع فيديو Ouroboros وDeepDream.
إذا لم يكن لديك وحدة معالجة رسومات، فسيتم تشغيل التعليمات البرمجية تلقائيًا على وحدة المعالجة المركزية ولكن بشكل أبطأ إلى حد ما (خاصة بالنسبة لمقاطع الفيديو).
إذا كنت تواجه صعوبات في فهم DeepDream، فقد قمت بإلقاء نظرة عامة على الخوارزمية في هذا الفيديو:
كما أن Jupyter Notebook الذي قمت بإنشائه هو أفضل مكان للبدء!
لقد وجدت هذه المستودعات مفيدة (أثناء تطوير هذا):
لقد وجدت الصور التي كنت أستخدمها هنا:
أصبحت الصور الأخرى الآن كلاسيكية بالفعل في عالمي NST وDeepDream.
تم تقديم 365 نموذجًا تم تدريبهم مسبقًا من هذا الريبو الرائع.
إذا وجدت هذا الكود مفيدًا لبحثك، فيرجى ذكر ما يلي:
@misc{Gordić2020DeepDream,
author = {Gordić, Aleksa},
title = {pytorch-deepdream},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/gordicaleksa/pytorch-deepdream}},
}
إذا كنت ترغب في الحصول على المزيد من المحتوى المتعلق بالذكاء الاصطناعي في حياتك، ففكر في ما يلي: