Mask R-CNN: بنية شبكة عصبية حديثة لتقسيم الأشياء في الصور



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

في بداية هذا العام ، أتيحت لي الفرصة للمشاركة في مسابقة Data Science Bowl 2018 في Kaggle للأغراض التعليمية. لأغراض تعليمية ، استخدمت أحد تلك النماذج التي وضعها بعض المشاركين في وظائف عالية بسخاء. كانت شبكة قناع عصبي R-CNN طورتها مؤخرًا شركة Facebook Research. (تجدر الإشارة إلى أن الفريق الفائز لا يزال يستخدم بنية مختلفة - U-Net. على ما يبدو ، كان أكثر ملاءمة للمهام الطبية الحيوية ، والتي شملت Data Science Bowl 2018).
نظرًا لأن الهدف هو التعرف على مهام التعلم العميق ، وعدم شغل مكان مرتفع ، بعد نهاية المسابقة ، كانت هناك رغبة قوية في فهم كيفية عمل الشبكة العصبية المستخدمة "تحت غطاء المحرك". هذه المقالة عبارة عن تجميع للمعلومات التي تم الحصول عليها من الوثائق الأصلية من arXiv.org وعدة مقالات عن Medium. المادة ذات طبيعة نظرية بحتة (على الرغم من وجود روابط حول التطبيق العملي في النهاية) ، ولا تحتوي على أكثر مما هو موجود في المصادر المشار إليها. ولكن هناك القليل من المعلومات حول الموضوع باللغة الروسية ، لذلك ربما تكون المقالة مفيدة لشخص ما.

يتم أخذ جميع الرسوم التوضيحية من مصادر أشخاص آخرين وتنتمي إلى أصحابها الشرعيين.

أنواع مهام رؤية الكمبيوتر


عادة ، تنقسم المهام الحديثة للرؤية الحاسوبية إلى أربعة أنواع (لم يكن من الضروري تلبية ترجمات أسمائها حتى في مصادر اللغة الروسية ، وبالتالي في اللغة الإنجليزية ، حتى لا تخلق الارتباك):

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

باستخدام مثال صورة مع بالونات من [9] ، يمكن توضيح ذلك على النحو التالي:



التطور التطوري لقناع R-CNN


مرت المفاهيم الكامنة وراء Mask R-CNN من خلال تطوير تدريجي من خلال بنية العديد من الشبكات العصبية المتوسطة التي حلت مهام مختلفة من القائمة أعلاه. ربما تكون أسهل طريقة لفهم مبادئ عمل هذه الشبكة هي النظر بالتتابع في جميع هذه المراحل.

من دون الخوض في الأمور الأساسية مثل الانتشار العكسي ، ووظيفة التنشيط غير الخطي ، وما هي الشبكة العصبية متعددة الطبقات ككل ، فمن الجدير بالشرح باختصار كيف تعمل طبقات Convolution Neural Networks (R-CNN).

الالتفاف و MaxPooling


تسمح لك الطبقة التلافيفية بدمج قيم وحدات البكسل المجاورة وإبراز السمات الأكثر عمومية للصورة. للقيام بذلك ، يتم تحريك الصورة بشكل تسلسلي بواسطة نافذة مربعة ذات حجم صغير (3x3 ، 5x5 ، 7x7 بكسل ، إلخ) تسمى kernel (kernel). يحتوي كل عنصر أساسي على معامل الوزن الخاص به مضروبًا في قيمة بكسل الصورة التي يتم فرض العنصر الأساسي عليها حاليًا. ثم يتم جمع الأرقام التي تم الحصول عليها للنافذة بأكملها ، وهذا المجموع المرجح يعطي قيمة العلامة التالية.

للحصول على مصفوفة ("خريطة") لسمات الصورة بأكملها ، يتم تحويل القلب بشكل متسلسل أفقيًا وعموديًا. في الطبقات التالية ، يتم تطبيق عملية الالتفاف بالفعل على الخرائط المميزة التي تم الحصول عليها من الطبقات السابقة. بيانياً ، يمكن توضيح العملية على النحو التالي:



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

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


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

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


على عكس الالتواء ، يتم تطبيق maxpooling عادةً على مجموعات البكسل المنفصلة.

R-CNN


تم تطوير بنية شبكة R-CNN (المناطق التي بها CNNs) من قبل فريق من UC Berkley لتطبيق Convolution Neural Networks على مهمة الكشف عن الكائنات. لقد اقتربت مناهج حل هذه المشاكل التي كانت قائمة في ذلك الوقت من أقصى قدراتها ولم يتحسن أدائها بشكل ملحوظ.

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

كما تم استخدام بنية جاهزة كشبكة CNN - CaffeNet (AlexNet). يتم تصنيف هذه الشبكات العصبية ، مثل الشبكات الأخرى لمجموعة ImageNet ، إلى 1000 فئة. تم تصميم R-CNN للكشف عن كائنات من عدد أقل من الفئات (N = 20 أو 200) ، لذلك تم استبدال طبقة التصنيف الأخيرة لـ CaffeNet بطبقة بمخرجات N + 1 (مع فئة إضافية للخلفية).

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


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


يجادل المؤلفون بأن عملية التصنيف في SVM مثمرة للغاية ، كونها عمليات مصفوفة في الأساس. يتم دمج ناقلات الميزات التي تم الحصول عليها من CNN في جميع المناطق في مصفوفة 2000x4096 ، والتي يتم ضربها بعد ذلك في مصفوفة 4096xN بأوزان SVM.

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

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

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

وبالتالي ، يمكن تقسيم إجراء الكشف عن الأشياء بواسطة شبكة R-CNN إلى الخطوات التالية:

  1. قم بتمييز المناطق المرشحة باستخدام البحث الانتقائي.
  2. تحويل منطقة إلى الحجم المقبول من قبل CNN CaffeNet.
  3. الحصول على استخدام متجه الأبعاد CNN 4096 للميزات.
  4. إجراء N تصنيفات ثنائية لكل ناقل سمة باستخدام N SVMs الخطي.
  5. الانحدار الخطي لمعلمات إطار المنطقة من أجل تغطية كائن أكثر دقة

لاحظ المؤلفون أن الهندسة المعمارية التي طوروها كانت أيضًا جيدة الأداء في مشكلة التجزئة الدلالية.

r-cnn سريع


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

اقترح مؤلفو Fast R-CNN تسريع العملية بسبب بضعة تعديلات:

  • لتمرير CNN ليس كل من المناطق المرشحة لعام 2000 بشكل منفصل ، ولكن الصورة بأكملها. ثم يتم فرض المناطق المقترحة على خريطة المعالم المشتركة الناتجة ؛
  • بدلاً من التدريب المستقل لثلاثة نماذج (CNN ، SVM ، bbox regressor) ، يتم دمج جميع إجراءات التدريب في نموذج واحد.

تم تنفيذ تحويل العلامات التي وقعت في مناطق مختلفة إلى حجم ثابت باستخدام إجراء RoIPooling . تم تقسيم نافذة المنطقة ذات العرض w والارتفاع h إلى شبكة بها خلايا H × W بحجم h / H × w / W. (استخدم مؤلفو الوثيقة W = H = 7). لكل خلية من هذه الخلايا ، تم تنفيذ Max Pooling لتحديد قيمة واحدة فقط ، وبالتالي إعطاء مصفوفة ميزة H × W الناتجة.

لم يتم استخدام SVMs الثنائية ، وبدلاً من ذلك ، تم نقل الميزات المحددة إلى طبقة متصلة بالكامل ، ثم إلى طبقتين متوازيتين: softmax مع مخرجات K + 1 (واحدة لكل فئة + 1 للخلفية) ومربع الصندوق المحيط.

تبدو بنية الشبكة العامة كما يلي:


من أجل التدريب المشترك لمصنف softmax ومرجع bbox ، تم استخدام وظيفة الخسارة المدمجة:

L(p،u،tu،v)=Lcls(p،u)+ lambda[u ge1]Lloc(tu،v)

،،،،،


هنا:
u - صنف الكائن الموضح بالفعل في المنطقة المرشحة ؛
Lcls(p،u)= log(pu)، - خسارة السجل للفئة u ؛
v=(vx،vy،vw،vh)،،، - تغييرات حقيقية في إطار المنطقة من أجل تغطية أكثر دقة للكائن ؛
tu=(tux،tuy،tuw،tuh)،،، - التغييرات المتوقعة في إطار المنطقة ؛
Lloc - دالة الخسارة بين تغيرات الإطار المتوقعة والمتوقعة ؛
[u ge1] - دالة المؤشر تساوي 1 عندما u ge1 ، و 0 عندما العكس. فئة u=0 يشار إلى الخلفية (أي عدم وجود أشياء في المنطقة).
 lambda - معامل مصمم لتحقيق التوازن بين مساهمة كل من وظائف الخسارة في النتيجة الإجمالية. في جميع تجارب مؤلفي الوثيقة ، كانت تساوي 1.

يذكر المؤلفون أيضًا أنهم استخدموا تحلل SVD Truncated لمصفوفة الوزن لتسريع الحسابات في طبقة متصلة بالكامل.

أسرع r-cnn


بعد التحسينات التي أدخلت على Fast R-CNN ، تبين أن اختناق الشبكة العصبية هو آلية لتوليد المناطق المرشحة. في عام 2015 ، تمكن فريق من Microsoft Research من جعل هذه الخطوة أسرع بكثير. واقترحوا حساب مناطق ليس من الصورة الأصلية ، ولكن مرة أخرى من خريطة الميزات التي تم الحصول عليها من CNN. لهذا ، تمت إضافة وحدة تسمى شبكة اقتراح المنطقة (RPN). العمارة بأكملها هي كما يلي:


في إطار RPN ، وفقًا لـ CNN المستخرجة ، تنزلق إلى "شبكة عصبية صغيرة" مع نافذة صغيرة (3x3). يتم نقل القيم التي تم الحصول عليها بمساعدتها إلى طبقتين متوازيتين متصلتين بالكامل: طبقة انحدار مربع (reg) وطبقة تصنيف صندوق (cls). تعتمد مخرجات هذه الطبقات على ما يسمى بإرساء: k إطارات لكل موضع من النافذة المنزلقة ، والتي لها أحجام ونسب عرضية مختلفة. تنتج طبقة Reg لكل مرساة 4 إحداثيات ، وتصحح موضع الإطار المغلف ؛ تنتج طبقة cls رقمين لكل منهما - احتمال أن يحتوي الإطار على شيء ما على الأقل أو أنه لا يحتوي عليه. في الوثيقة ، يوضح هذا المخطط التالي:


الجمع بين عملية التعلم وطبقات cls ؛ لديهم دالة خسارة مشتركة ، وهي مجموع وظائف الخسارة لكل منها ، مع معامل موازنة.

تقدم كل من طبقات RPN عروض للمناطق المرشحة فقط. يتم تمرير تلك التي من المحتمل أن تحتوي على كائن إلى وحدة الكشف عن الأشياء وتحسينها ، والتي لا تزال تنفذ باسم Fast R-CNN.

من أجل مشاركة الميزات التي تم الحصول عليها في CNN بين RPN ووحدة الكشف ، يتم إنشاء عملية التدريب للشبكة بأكملها بشكل متكرر باستخدام عدة خطوات:

  1. تم تهيئة جزء RPN وتدريبه لتحديد المناطق المرشحة.
  2. باستخدام مناطق RPN المقترحة ، يتم إعادة تدريب جزء Fast R-CNN.
  3. يتم استخدام شبكة كشف مدربة لتهيئة الأوزان لشبكات RPN. ومع ذلك ، يتم تثبيت طبقات الالتواء العامة ويتم إعادة فقط الطبقات المحددة لـ RPN.
  4. مع طبقات الالتفاف الثابتة ، يتم ضبط Fast R-CNN أخيرًا.

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

قناع r-cnn


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



يمكن أن يعطي تصور الأقنعة متعددة الألوان على الصور المصدر صورًا ملونة:



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

L=Lcls+Lbox+Lmask


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

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




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

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

في المستند الأصلي ، تم توضيح الفرق على النحو التالي:


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

الاستيفاء Bilinear
يتم إجراء الاستكمال الداخلي لخطين لمتغيرين عن طريق تطبيق الاستكمال الداخلي الخطي ، أولاً في اتجاه أحد الإحداثيات ، ثم في الآخر.
فليكن من الضروري استيفاء قيمة الوظيفة f(x،y)، عند النقطة P مع القيم المعروفة للدالة عند النقاط المحيطة Q11=(x1،y1)،Q12=(x1،y2)،Q21=(x2،y1)،Q22=(x2،y2)،،،،،،، (انظر الصورة أدناه). للقيام بذلك ، يتم أولاً استيفاء قيم النقاط المساعدة R1 و R2 ، ثم يتم استيفاء القيمة عند النقطة P بناءً عليها.


R1=(x،y1)

R2=(x،y2)

f(R1) frac(x2x)(x2x1)f(Q11)+ frac(xx1)(x2x1)f(Q21)

f(R2) frac(x2x)(x2x1)f(Q12)+ frac(xx1)(x2x1)f(Q22)

f(P)(y2y)(y2y1)f(R1)+(yy1)(y2y1)f(R2)


( — , )

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



لتحديد النقاط المرجعية ، يتم تدريب الشبكة العصبية بطريقة تعطي الأقنعة ، في منها بكسل واحد فقط (نفس النقطة) له قيمة 1 ، والباقي - 0 (قناع ساخن). في الوقت نفسه ، تتدرب الشبكة على إصدار K مثل أقنعة بكسل واحد ، واحد لكل نوع من النقاط المرجعية.

ميزة شبكات الهرم


في التجارب على Mask R-CNN ، جنبًا إلى جنب مع CNN ResNet-50/101 باعتبارها العمود الفقري ، أجريت أيضًا دراسات حول جدوى استخدام شبكة الهرم المميز (FPN). أظهروا أن استخدام FPN في العمود الفقري يعطي Mask R-CNN زيادة في الدقة والأداء. هذا يجعل من المفيد وصف التحسين بنفس الطريقة ، على الرغم من حقيقة أن وثيقة منفصلة مخصصة لها وليس لها علاقة كبيرة بسلسلة المقالات قيد النظر.
الغرض من ميزة Pyramids ، مثل أهرام الصور ، هو تحسين جودة الكشف عن الأشياء ، مع مراعاة مجموعة واسعة من أحجامها المحتملة.

في Feature Pyramid Network ، تُعتبر خرائط المعالم المستخرجة بواسطة طبقات CNN المتعاقبة ذات الأبعاد المتناقصة نوعًا من "هرم" هرمي يسمى المسار من أسفل إلى أعلى. علاوة على ذلك ، فإن خرائط علامات كل من المستويات الدنيا والعلوية للهرم لها مزاياها وعيوبها: الأولى لها دقة عالية ، ولكن ذات دلالة منخفضة ، وقدرة عامة ؛ الثاني - على العكس:


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

من الناحية التخطيطية ، يمكن تمثيل ذلك على النحو التالي:


تتم زيادة حجم خريطة المستوى الأعلى (الاختزال) بأبسط طريقة - أقرب جار ، أي تقريبًا مثل هذا:


روابط مفيدة


أوراق بحثية أصلية على arXiv.org:

1. R-CNN: https://arxiv.org/abs/1311.2524

2. Fast R-CNN: https://arxiv.org/abs/1504.08083

3. أسرع R-CNN : https://arxiv.org/abs/1506.01497

4. قناع R-CNN: https://arxiv.org/abs/1703.06870

5. شبكة الهرم المميزة: https://arxiv.org/abs/1612.03144

في الوسط. كوم حول موضوع Mask R-CNN هناك الكثير من المقالات ، يسهل العثور عليها. كمراجع أحمل فقط تلك التي قرأتها:

6. فهم بسيط لقناع RCNN - ملخص موجز لمبادئ العمارة الناتجة.

7. تاريخ موجز لشبكات CNN في تجزئة الصورة: من R-CNN إلى قناع R-CNN- تاريخ تطور الشبكة بنفس الترتيب الزمني كما في هذه المقالة.

8. من R-CNN إلى Mask R-CNN هو اعتبار آخر لمراحل التطور.

9. Splash of Color: Instance Segmentation with Mask R-CNN and TensorFlow - تنفيذ شبكة عصبية في مكتبة المصادر المفتوحة من Matterport.

توفر المقالة الأخيرة ، بالإضافة إلى وصف مبادئ Mask R-CNN ، الفرصة لتجربة الشبكة عمليًا: لتلوين البالونات بألوان مختلفة على الصور بالأبيض والأسود.

بالإضافة إلى ذلك ، يمكنك التدرب مع الشبكة العصبية على النموذج الذي استخدمته في مسابقة Data Science Bowl 2018 kaggle (ولكن ليس فقط مع هذا النموذج ، بالطبع ، يمكنك العثور على الكثير من الأشياء المثيرة للاهتمام في أقسام Kernels و المناقشات):

10. Mask R- CNN في PyTorch بواسطة Heng CherKeng. يتضمن التنفيذ سلسلة من خطوات النشر ؛ يقدم المؤلف التعليمات. يتطلب النموذج PyTorch 0.4.0 ، ودعم حوسبة GPU ، NVIDIA CUDA. إذا كان نظامي الخاص لا يفي بالمتطلبات ، يمكنني أن أوصي بصور Deep Learning AMI للأجهزة الافتراضية من أمازون (يتم دفع النسخ ، مع فواتير كل ساعة ، الحد الأدنى للحجم المناسب ، على ما يبدو ، هو p2.xlarge).

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

11. ConvNets. النموذج الأولي لمشروع باستخدام Mask R-CNN

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


All Articles