ستساعدك المقالة التالية: الشبكات العصبية التلافيفية (CNNs) البرنامج التعليمي مع بايثون
معالجة الصورة هي عملية لإجراء عمليات على صورة ما للحصول على صورة محسنة أو استخراج بعض المعلومات الهامة منها. هناك ثلاث طرق مختلفة لإجراء معالجة الصور:
- معالجة الرسم البياني.
- وظيفة التحول.
- التفاف.
الالتواء هو عملية حسابية على وظيفتين مسميتين F و ز هذا يعطي وظيفة ثالثة (و * ز). تكشف هذه الوظيفة الثالثة كيف يتم تعديل شكل أحدهما بواسطة الآخر. معادلتها الرياضية هي كما يلي:
من الضروري فهم مفهوم القناع أو المرشح قبل مفهوم الالتواء.
قناع أو مرشح
القناع عبارة عن مصفوفة صغيرة تسمى قيمها بالوزن. تمثله مصفوفة ثنائية الأبعاد. يُعرف أيضًا باسم التصفية. النقطة المثيرة للاهتمام هي أنه يجب أن تكون بأرقام فردية. خلاف ذلك ، من الصعب العثور على منتصف القناع.
أدناه مثال رمز لقناع من مصفوفة:
استيراد numpy كـ np
استيراد numpy.ma كـ maoriginal_array = np.array ([1, 2, 3, -1, 5]) original_array
قم بإنشاء قناع للمصفوفة الأصلية:
ملثمين = ma.masked_array (original_array ، قناع =[0, 0, 0, 1, 0]) ملثمين
لماذا تعتبر التلافيفات مهمة في شبكات CNN؟
ال التفاف تعد الدورة في شبكات CNN أمرًا بالغ الأهمية لأنه يمكنها معالجة الصور في الحالات التالية:
- طمس
- شحذ
- كشف الحد
- تقليل الضوضاء
كيف يتم تنفيذ الالتواء؟
هذه هي الخطوات لإجراء التفاف:
- اقلب القناع أفقيًا وعموديًا مرة واحدة فقط.
- حرك القناع على الصورة.
- اضرب العناصر المتشابهة ، متبوعًا بإضافتها.
- كرر جميع الخطوات المذكورة أعلاه حتى يتم حساب جميع قيم الصورة [8].
باتباع الخطوات المذكورة أعلاه:
أدناه قناع:
انعكاس → أفقيا
انعكاس → عموديا
لنأخذ أبعاد الصورة كما يلي:
الآن ل احسب الالتواء اتبع الخطوات التالية:
- ضع لب القناع في كل مكون من الصورة.
- اضرب العناصر المتشابهة وأضفها
- أخيرًا ، الصق النتيجة على عنصر الصورة الذي يوضع عليه مركز القناع.
من الشكل 14:
- المربع الأخضر هو القناع والقيم الخضراء في المربع هي قيمة القناع
- المربع الأزرق وقيمته مرتبطة بالصورة
الآن ، احسب البكسل الأول من الصورة ↓
بكسل 1 = (5 * 2) + (4 * 4) + (1 * 0)
بكسل 1 = 10+ 16 + 16 + 10
بكسل 1 = 52
نتيجة البكسل الأول للصورة هي 52. لذلك ، بناءً على النتيجة ، نتبع الخطوات التالية:
- ضع القيمة 52 في الصورة الأصلية عند الفهرس الأول.
- كرر هذه الخطوة لكل بكسل من الصورة.
CNN هي شبكة عصبية بها بعض الطبقات التلافيفية وبعض الطبقات الأخرى. تحتوي الطبقة التلافيفية على عدة مرشحات تقوم بالعملية التلافيفية. يتم تطبيق الطبقات التلافيفية على المدخلات ثنائية الأبعاد وهي مشهورة جدًا بسبب الأداء الوظيفي الرائع لتصنيف الصور. وهي تستند إلى الالتواء المنفصل لنواة صغيرة ك مع مدخلات ثنائية الأبعاد ، ويمكن أن يكون هذا الإدخال ناتجًا عن طبقة تلافيفية أخرى. الطبقة التلافيفية هي لبنة البناء الأساسية لشبكة CNN [9].
يشترك الالتفاف في نفس المعلمات عبر جميع المواقع المكانية ؛ ومع ذلك ، فإن عملية ضرب المصفوفة التقليدية لا تشترك في أي معلمات.
بناء طبقة التفاف في Keras:
من keras.models استيراد تسلسلي
من keras.layers.convolutional import Conv2Dmodel = Sequential () model.add (Conv2D (32، (3، 3)، input_shape = (32، 32، 3)، padding = ‘same’، activation = ‘relu’))
شرح من تنفيذ الكود أعلاه:
- سيكون الإخراج 32 خرائط الميزات.
- حجم النواة سيكون 3 × 3.
- شكل الإدخال هو 32 × 32 بثلاث قنوات.
- المساحة المتروكة = نفس الشيء. وهذا يعني أن نفس الإخراج الأبعاد مطلوب كمدخل.
- التنشيط يحدد وظيفة التنشيط.
بعد ذلك ، قم ببناء طبقة تلافيفية بقيم معلمات مختلفة على النحو التالي:
model.add (Conv2D (32، (3، 3)، activation = ‘relu’، padding = ‘valid’)
لذلك ، من الكود أعلاه للطبقة التلافيفية:
- النواة = 3 × 3
- المساحة المتروكة = صالحة: هذا يعني أن بُعد الإخراج يمكن أن يتخذ أي شكل [10].
بشكل أساسي ، تُستخدم طبقة التجميع لتقليل أبعاد الصورة. كما أنه يستخدم لاكتشاف الحواف والعينين والأنف والزوايا وغيرها في الصورة باستخدام مرشحات متعددة. وتتمثل مهمتها في تقليل عدد المعلمات وتقليل الحجم المكاني في الشبكة. هناك طريقتان يمكننا من خلالهما تحقيق التجميع:
- ماكس تجمع: يوضح الحد الأقصى للإنتاج داخل حي مستطيل.
- متوسط التجميع: يوضح متوسط ناتج الحي المستطيل.
التجميع الأكثر استخدامًا هو الحد الأقصى للتجميع والتجميع المتوسط. يتم تقليل الحجم المكاني للصور لأنه يعطي عددًا أقل من وحدات البكسل وميزات أو معلمات أقل لمزيد من العمليات الحسابية.
وبالتالي ، تخدم طبقات التجميع غرضين مهمين:
- التخفيض المستمر للحجم المكاني لخريطة المعالم أثناء انتقال الشبكة من طبقة التفاف إلى أخرى ، وبالتالي تقليل عدد المعلمات.
- تحديد الميزات الأساسية تدريجيًا أثناء التخلص من البطاقة (هذا صحيح أكثر في التجميع الأقصى من التجميع المتوسط).
تُظهر الصورة أعلاه MaxPool مع مرشح 2X2 مع خطوة 2.
أدناه تصوير الحد الأقصى للتجميع ومتوسط التجميع:
قم بتنفيذ طبقة Max Pool في Keras على النحو التالي:
model.add (MaxPooling2D (pool_size = (2، 2)))
هنا ، حجم النواة = 2 × 2
لن تؤدي وحدات البكسل الفرعية إلى تغيير الكائن ، لذلك يمكن أن يؤدي التجميع إلى تكوين عينات فرعية من وحدات البكسل لجعل الصورة أصغر.
إنه مكون في الشبكة العصبية ، يقوم بشكل أساسي بتعديل حركة مقاطع الفيديو والصور. Stride هي معلمة تعمل جنبًا إلى جنب مع المساحة المتروكة. على سبيل المثال ، إذا تم ضبط الخطوة على 1 ، فإننا ننقل بكسل أو وحدة واحدة في كل مرة. وبالمثل ، إذا تم ضبط الخطوة على 2 ، فإننا ننقل وحدتين أو وحدات بكسل.
بشكل أساسي ، الخطوة هي عدد وحدات البكسل التي يمر بها المرشح التلافيفي ، مثل النافذة المنزلقة ، بعد الانتقال إلى متوسط القيمة الموزونة لجميع وحدات البكسل التي غطتها للتو. تصبح قيمة المتوسط المرجح القديمة بكسلًا واحدًا في خريطة المعالم في الطبقة التالية. يبدأ المتوسط المرجح التالي من مجموعة جديدة من وحدات البكسل ، ويشكل البكسل التالي في خريطة المعالم في الطبقة التالية.
أدناه ، يرجى العثور على عرض تقديمي متحرك لخطوة:
خطوة 1:
خطوة 2:
يوضح الرسم المتحرك للخطوة في الشكل 22 ما يلي:
تعمل الخطوة في الشبكة العصبية التلافيفية على تخفيف عدد الخطوات التي يمكن تخطيها أثناء مسح الميزات أفقيًا ورأسيًا على الصورة.
في شبكات CNN ، ينتقل الخطى من طبقة شبكة إلى طبقة أخرى. لذلك هناك خياران إما لتقليل حجم البيانات أو الاحتفاظ بها بالحجم نفسه. لذلك ، يؤثر كل من الحشو والخطوة على حجم البيانات. الحشو ضروري في الخطوة لأنه بدون حشو ، ستقلل الطبقة التالية من حجم البيانات.
عند استخدام خطوة ، تبدأ بالملف في الزاوية اليسرى العلوية وتحسب قيمة العقدة الأولى ، وعندما تحرك العقدة بوحدتين ، فإنها تستمر عندما يمتد الفلتر خارج الصورة ، مما يخلق مساحة. وبالتالي ، يتم استخدام الحشو لملء الفراغ الناتج عن التمرير.
لنأخذ طبقة الإدخال من 5 × 5 مع النواة 3 × 3 على النحو التالي:
تطبيق خطوة 1:
تطبيق خطوة 2:
لنفترض أننا طبقنا خطوة 3 بينما ما زلنا ننظر إلى المدخلات 5 × 5 – ماذا سيحدث؟
وبالتالي ، الحشو مطلوب هنا. بالنسبة للإدخال بالكامل ، تتم إضافة بيانات الحشو بعرض يساوي عرض النواة مطروحًا منه واحدًا أو ارتفاعًا يساوي ارتفاع النواة مطروحًا منه واحدًا إذا كان أعلى وأسفل بحيث يمكن للنواة أن تنظر إلى الحواف القصوى كما هو موضح في الشكل 27:
ومن هنا ، من التمثيل التصويري أعلاه:
عدم وجود حشو يعني أن حجم البيانات سينخفض للطبقة التالية. في الوقت نفسه ، فإن إدخال الحشو الكافي سيحافظ على الحجم كما هو. علاوة على ذلك ، فإنه يحد من تداخل منتجين نقطيين لاحقين في عملية الالتواء بخطوات أكثر. هذا يعني أن كل قيمة إخراج في التنشيط ستكون أكثر استقلالية عن القيم المجاورة.
هذه الطبقة هي عبارة عن مجموع كل المدخلات والأوزان التي تحدد التنبؤ النهائي – تمثل ناتج طبقة التجميع الأخيرة. متصل بالكامل ، كما يوضح الاسم ، يجعل كل عقدة في الطبقة الأولى متصلة بالعقد في الطبقة الثانية. إجراء التصنيف بناءً على الميزات المستخرجة من الطبقات السابقة [11]. يربط كل خلية عصبية في طبقة واحدة بكل خلية عصبية في طبقة أخرى.