الشبكة العصبية للصورة. تصميم الصور باستخدام الشبكات العصبية: لا تصوف ، فقط ماتان

الصفحة الرئيسية / سابق

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

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

في البداية ، تم نشر المشروع في شكل مصدر مفتوح ، ثم ظهرت خدمات عبر الإنترنت على الإنترنت ، تم إنشاؤها وفقًا لنفس المبادئ. يعد Deep Dream Generator أحد أكثرها ملاءمة وشعبية: حيث تستغرق معالجة صورة صغيرة هنا حوالي 15 ثانية فقط (في السابق ، كان على المستخدمين الانتظار أكثر من ساعة).

كيف تتعلم الشبكات العصبية إنشاء مثل هذه الصور؟ ولماذا ، بالمناسبة ، يسمون ذلك؟

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

تحليل خوارزميات لعب الشطرنج ، على سبيل المثال ألعاب الشطرنج... وبنفس الطريقة ، دخلت خوارزمية AlphaGo من Google DeepMind في لعبة Go الصينية - والتي كان يُنظر إليها على أنها اختراق ، نظرًا لأن go أكثر تعقيدًا وغير خطي من لعبة الشطرنج.

    يمكنك التلاعب بنموذج الشبكة العصبية المبسط وفهم مبادئها بشكل أفضل.

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

خدمة شعبية أخرى هي Dreamscope ، والتي لا يمكن أن تحلم بالكلاب فحسب ، بل يمكنها أيضًا تقليد أنماط الرسم المختلفة. معالجة الصور هنا أيضًا بسيطة جدًا وسريعة (حوالي 30 ثانية).

على ما يبدو ، فإن الجزء الخوارزمي من الخدمة هو تعديل لبرنامج "النمط العصبي" ، والذي ناقشناه بالفعل.

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

علاوة على ذلك ، يستغرق التلوين هنا حوالي دقيقة واحدة فقط.

أطلقت الشركة المطورة نفسها أيضًا خدمة تتعرف في الصور أنواع مختلفةأشياء.

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

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

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


تصور وفهم الشبكات التلافيفية (28 نوفمبر 2013)

بادئ ذي بدء ، تجدر الإشارة إلى المقالة التي تمكن المؤلفون من إظهار أن الشبكة العصبية ليست صندوقًا أسود ، ولكنها شيء يمكن تفسيره تمامًا (بالمناسبة ، يمكن اليوم أن نقول هذا ليس فقط عن الشبكات التلافيفية للكمبيوتر رؤية). قرر المؤلفون تعلم كيفية تفسير تنشيط الخلايا العصبية للطبقات المخفية ، ولهذا استخدموا شبكة deconvolution العصبية (deconvnet) ، التي تم اقتراحها قبل عدة سنوات (بالمناسبة ، من قبل نفس Seiler و Fergus ، وهما مؤلفو هذا المنشور). الشبكة deconvolutional هي في الواقع نفس الشبكة مع التلافيف والتجمعات ، ولكن يتم تطبيقها بترتيب عكسي. في العمل الأصلي على deconvnet ، تم استخدام الشبكة في وضع التعلم غير الخاضع للإشراف لإنشاء الصور. هذه المرة ، طبقها المؤلفون ببساطة للحصول على تمرير للخلف من الميزات التي تم الحصول عليها بعد المرور الأمامي عبر الشبكة إلى الصورة الأصلية. نتيجة لذلك ، يتم الحصول على صورة يمكن تفسيرها على أنها إشارة تسببت في هذا التنشيط على الخلايا العصبية. بطبيعة الحال ، فإن السؤال الذي يطرح نفسه: كيف يمكن القيام بالمرور العكسي من خلال الالتواء واللاخطية؟ وحتى أكثر من ذلك من خلال max-pooling ، فهذه بالتأكيد ليست عملية معكوسة. دعنا نلقي نظرة على المكونات الثلاثة.

عكس ReLu

غالبًا ما تُستخدم وظيفة التنشيط في الشبكات التلافيفية ReLu (x) = حد أقصى (0 ، x)مما يجعل جميع عمليات التنشيط على الطبقة غير سلبية. وفقًا لذلك ، عند المرور عبر اللاخطية ، من الضروري أيضًا الحصول على نتائج غير سلبية. لهذا ، يقترح المؤلفون استخدام نفس ReLu. من وجهة نظر هندسة Theano ، تحتاج إلى تجاوز وظيفة التدرج اللوني للعملية (الكمبيوتر الدفتري ذو القيمة اللامتناهية موجود في وصفات اللازانيا ، ومن هناك يمكنك الحصول على تفاصيل ماهية فئة ModifiedBackprop).

فئة ZeilerBackprop (ModifiedBackprop): def grad (self، inputs، out_grads): (inp،) = المدخلات (grd،) = out_grads #return (grd * (grd> 0) .astype (inp.dtype)،) # تصحيح صريح return (self. nonlinearity (grd)،) # استخدم اللاخطية المعطاة

الالتواء العكسي

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


الالتواء مع خطوة = 1

الالتواء مع خطوة = 1 نسخة عكسية

الالتواء مع خطوة = 2

الالتواء مع خطوة = 2 نسخة عكسية

التجميع العكسي

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



نتيجة

خوارزمية التصور بسيطة للغاية:

  1. قم بتمرير مستقيم.
  2. حدد الطبقة التي تهمنا.
  3. أصلح تنشيط خلية عصبية واحدة أو عدة عصبونات وأعد ضبط الباقي.
  4. توصل إلى الاستنتاج المعاكس.

يتوافق كل مربع رمادي في الصورة أدناه مع عرض مرشح (يستخدم للالتواء) أو أوزان خلية عصبية واحدة ، وكل منها صورة ملونة- هذا هو الجزء من الصورة الأصلية الذي ينشط الخلايا العصبية المقابلة. من أجل الوضوح ، يتم تجميع الخلايا العصبية داخل طبقة واحدة في مجموعات مواضيعية... بشكل عام ، اتضح فجأة أن الشبكة العصبية تعرف بالضبط ما كتبه Hubel و Weisel في عملهما على بنية النظام المرئي ، والذي تم تكريمهما من أجله جائزة نوبلفي عام 1981. بفضل هذه المقالة ، حصلنا على تمثيل مرئي لما تتعلمه الشبكة العصبية التلافيفية في كل طبقة. هذه المعرفة هي التي ستسمح لاحقًا بالتلاعب بمحتوى الصورة التي تم إنشاؤها ، ولكن هذا لا يزال بعيد المنال ؛ فقد تم إنفاق السنوات القليلة المقبلة على تحسين أساليب "نقب" الشبكات العصبية. بالإضافة إلى ذلك ، اقترح مؤلفو المقال طريقة لتحليل أفضل السبل لبناء بنية شبكة عصبية تلافيفية لتحقيق نتائج افضل(ومع ذلك ، لم يفزوا مطلقًا بـ ImageNet 2013 ، لكنهم وصلوا إلى القمة ؛ محدث: اتضح أنهم فازوا ، Clarifai هم).


تصور الميزة


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


خرائط الملوحة باستخدام deconvnet

الشبكات التلافيفية الداخلية العميقة: تصور نماذج تصنيف الصور وخرائط البروز (19 أبريل 2014)

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

تصور نموذج الفصل

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



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


def compile_saliency_function (net): "" "يجمع وظيفة لحساب خرائط الملوحة والفئات المتوقعة لمجموعة صغيرة معينة من صور الإدخال." "" inp = net ["input"]. input_var outp = lasagne.layers.get_output (net ["fc8"] ، القطعية = صحيح) max_outp = T.max (outp ، المحور = 1) الملوحة = theano.grad (max_outp.sum () ، wrt = inp) max_class = T.argmax (outp ، المحور = 1) إرجاع الدالة theano.function (،)

ربما تكون قد رأيت وجوهًا غريبة للكلاب على الإنترنت - DeepDream. في المقالة الأصلية ، استخدم المؤلفون العملية التالية لإنشاء صور تزيد من الفئة المحددة:

  1. قم بتهيئة الصورة الأولية بالأصفار.
  2. احسب قيمة المشتق من هذه الصورة.
  3. قم بتغيير الصورة عن طريق إضافة الصورة الناتجة من المشتق إليها.
  4. ارجع إلى الخطوة 2 أو اخرج من الحلقة.

الصور الناتجة هي:




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


الحذر 60 ​​ميغا بايت


لماذا يوجد الكثير من وجوه الكلاب وعيونها؟ الأمر بسيط: في صورة 1000 فصل ، يوجد ما يقرب من 200 كلب ، لديهم عيون. هناك أيضًا العديد من الفصول الدراسية التي يوجد فيها ببساطة أشخاص.

استخراج البروز الطبقي

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


خرائط الملوحة باستخدام المشتق


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

السعي نحو البساطة: الشبكة التلافيفية (13 أبريل 2015)

بشكل عام ، لا تتعلق هذه المقالة بالتخيل ، ولكنها تتعلق بحقيقة أن استبدال التجميع بالالتفاف بخطوة كبيرة لا يؤدي إلى فقدان الجودة. ولكن كمنتج ثانوي لأبحاثهم ، اقترح المؤلفون طريقة جديدة لتصور الميزات ، والتي طبقوها على المزيد تحليل دقيقما يتعلمه النموذج. فكرتهم هي كما يلي: إذا أخذنا المشتق فقط ، فعند فك الارتباط ، لا تعود تلك الميزات التي كانت في صورة الإدخال إلى الوراء أقل من الصفر(تطبيق ReLu على صورة الإدخال). وهذا يؤدي إلى حقيقة أن القيم السالبة تظهر على الصورة الخلفية المنتشرة. من ناحية أخرى ، إذا كنت تستخدم deconvnet ، فسيتم أخذ ReLu آخر من مشتق ReLu - وهذا لا يسمح لك بتمرير القيم السالبة مرة أخرى ، ولكن كما رأيت ، تكون النتيجة "so-so". ولكن ماذا لو جمعت بين هاتين الطريقتين؟




class GuidedBackprop (ModifiedBackprop): def grad (self، inputs، out_grads): (inp،) = المدخلات (grd،) = out_grads dtype = inp.dtype return (grd * (inp> 0) .astype (dtype) * (grd > 0) .astype (نوع dtype) ،)

ثم تحصل على صورة نظيفة تمامًا وقابلة للتفسير.


خرائط الملوحة باستخدام التكاثر العكسي الموجَّه

تعمق

لنفكر الآن ، ماذا يعطينا هذا؟ اسمحوا لي أن أذكركم أن كل طبقة تلافيفية هي وظيفة تستقبل موترًا ثلاثي الأبعاد كمدخلات ومخرجات موتر ثلاثي الأبعاد أيضًا ، ربما بأبعاد مختلفة د x ث x ح; د epth هو عدد الخلايا العصبية في الطبقة ، كل منها يُنشئ خريطة معالم بالحجم ث igth x حثمانية.


لنجرب التجربة التالية على شبكة VGG-19:



conv1_2

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




conv3_3


conv4_3


conv5_3


تجمع 5


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


conv1_1


conv2_2


conv4_3


يمكنك تنزيل قاعدة بيانات أكثر اكتمالاً للتنشيطات للعديد من الصور وملفات.

خوارزمية عصبية للأسلوب الفني (2 سبتمبر 2015)

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

فقدان المحتوى

كما ذكرنا سابقًا ، تنتج كل طبقة من الشبكة العصبية موترًا ثلاثي الأبعاد لبعض الأبعاد.




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



لتجربة هذه المقالة ، يمكنك استخدام هذا الكمبيوتر المحمول السحري ، حيث تتم العمليات الحسابية هناك (على كل من وحدة معالجة الرسومات ووحدة المعالجة المركزية). تُستخدم وحدة معالجة الرسومات لحساب ميزات الشبكة العصبية وقيمة دالة التكلفة. يصدر Theano دالة يمكنها حساب تدرج دالة الهدف EVAL_gradعن طريق إدخال الصورة x... ثم يتم إدخال هذا في lbfgs وتبدأ عملية تكرارية.


# التهيئة باستخدام صورة ضوضاء created_image.set_value (floatX (np.random.uniform (-128، 128، (1، 3، IMAGE_W، IMAGE_W)))) x0 = created_image.get_value (). Astype ("float64") xs = xs.append (x0) # Optimize ، وحفظ النتيجة بشكل دوري لـ i في النطاق (8): print (i) scipy.optimize.fmin_l_bfgs_b (Eval_loss، x0.flatten ()، fprime = EVAL_grad، maxfun = 40) x0 = created_image.get_value (). astype ("float64") xs.append (x0)

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


فقدان المحتوى: conv4_2



عملية التحسين




من السهل رؤية سمتين للصورة الناتجة:

  • الألوان مفقودة - وهذه نتيجة حقيقة أن في مثال محددتم استخدام طبقة conv4_2 فقط (أو بمعنى آخر ، كان الوزن w معها غير صفري ، وصفر للطبقات الأخرى) ؛ كما تتذكر ، فإن الطبقات الأولى هي التي تحتوي على معلومات حول الألوان وانتقالات التدرج ، وتحتوي الطبقات اللاحقة على معلومات حول التفاصيل الأكبر ، والتي نلاحظها - الألوان تضيع ، لكن المحتوى ليس كذلك ؛
  • بعض المنازل "خرجت" ، أي الخطوط المستقيمة منحنية قليلاً - هذا لأن الطبقة أعمق ، معلومات أقلحول الموقع المكاني للميزة التي تحتوي عليها (نتيجة تطبيق التلافيف والتجمعات).

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


فقدان المحتوى: conv1_1 ، conv2_1 ، conv4_2


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

فقدان النمط

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


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




ثم يتم تقديم Style Loss على النحو التالي ، حيث س- هذه صورة ذات نمط:



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


فنسنت




ولكن ماذا لو قمت بوضع صورة بدلاً من الصورة المنمقة؟ ستحصل بالفعل على ميزات مألوفة وألوان مألوفة ، لكن الموقع المكاني مفقود تمامًا.


الصورة في فقدان النمط


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




فقدان أسلوب بسيط

خسارة كومبو

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



في الواقع ، هناك أيضًا منظم ، لكننا سنحذفه من أجل التبسيط. يبقى الإجابة السؤال التالي: ما هي الطبقات (الأوزان) التي يجب استخدامها للتحسين؟ وأخشى أنه ليس لدي إجابة على هذا السؤال ، وكذلك مؤلفو المقال. لديهم اقتراح لاستخدام ما يلي ، لكن هذا لا يعني على الإطلاق أن مجموعة أخرى ستعمل بشكل أسوأ أيضًا مساحة كبيرةبحث. القاعدة الوحيدة التي تلي فهم النموذج: لا جدوى من أخذ الطبقات المجاورة ، منذ ذلك الحين لن تختلف إشاراتها كثيرًا عن بعضها البعض ، لذلك ، تتم إضافة طبقة من كل مجموعة تحويل * _1 إلى النمط.


# تحديد خسائر دالة الخسارة = # خسارة المحتوى. (0.2e6 * style_loss (art_features، gen_features، "conv2_1")) خسارة. ) loss.append (0.2e6 * style_loss (art_features، gen_features، "conv5_1")) # إجمالي عقوبة التباين. إضافة (0.1e-7 * total_variation_loss (created_image)) total_loss = sum (الخسائر)

يمكن تمثيل النموذج النهائي على النحو التالي.




وها هي نتيجة البيوت مع فان جوخ.



تحاول السيطرة على العملية

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




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


مثال على معالجة لون وحجم الميزات


أو يمكنك التقاط صورة بسيطة كنمط.



النتائج








وهنا vidosik ، ولكن فقط مع النسيج المطلوب

شبكات الملمس: توليف التغذية إلى الأمام للقوام والصور المنمقة (10 مارس 2016)

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




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



الخسائر الإدراكية لنقل النمط في الوقت الفعلي والدقة الفائقة (27 مارس 2016)

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




كتلة متبقية وكتلة الحمل على التوالي.



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

تنتهي

استخدمنا المعلومات من المقالات التي تمت مراجعتها ورمز المؤلفين كنقطة بداية لإنشاء تطبيق تصميم آخر لتطبيق تصميم الفيديو الأول:



يولد شيئا من هذا القبيل.


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

إلى الإشارات المرجعية

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

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

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

هناك نسختان مدفوعتان: Premium ينتج صورة تصل إلى 700 بكسل على الجانب الأطول ويطبق 600 تكرارا من معالجة الشبكة العصبية على الصورة (كلما زاد عدد التكرارات ، كانت المعالجة أكثر إثارة للاهتمام وكثافة). صورة واحدة من هذا القبيل ستكلف 50 روبل.

في إصدار HD ، يمكنك ضبط عدد التكرارات: 100 سيكلف 50 روبل ، و 1000-250 روبل. في هذه الحالة ، سيكون للصورة دقة تصل إلى 1200 بكسل على الجانب الأطول ، ويمكن استخدامها للطباعة على القماش: تقدم Ostagram مثل هذه الخدمة مع تسليم من 1800 روبل.

في فبراير ، لن يقبل ممثلو Ostagram طلبات معالجة الصور من المستخدمين "من البلدان ذات الرأسمالية المتقدمة ،" ولكن بعد ذلك الوصول إلى معالجة الصور لمستخدمي VKontakte من جميع أنحاء العالم. بناءً على كود Ostagram المنشور على GitHub ، تم تطويره بواسطة Sergey Morugin ، البالغ من العمر 30 عامًا من نيجني نوفغورود.

TJ اتصلت مخرج تجاريقدم المشروع أندريه. وفقا له ، ظهر Ostagram قبل Instapainting ، لكنه مستوحى من مشروع مماثل يسمى Vipart.

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

لمعالجة الصور ، أراد منشئو Ostagram استخدام خوادم Amazon السحابية ، ولكن بعد تدفق المستخدمين ، أصبح من الواضح أن تكاليفهم ستتجاوز ألف دولار في اليوم مع الحد الأدنى من العائد على الاستثمار. Andrey ، وهو أيضًا مستثمر في المشروع ، استأجر مرافق الخادم في نيجني نوفغورود.

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

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

حتى الآن ، فإن احتمالات التعويض تعسفية. إذا دفع كل مستخدم 10 روبل للمعالجة ، فربما يؤتي ثماره. [...]

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

أندري ، ممثل أوستاجرام

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

أمثلة على العمل الخدمي

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

© 2022 skudelnica.ru - الحب والخيانة وعلم النفس والطلاق والمشاعر والمشاجرات