خوارزمية إكتشاف الكائنات في الوقت الفعلي – YOLO


يلمح الإنسان صورة مرة واحدة ويعرف بدقة الأشياء الموجودة فيها وأين توجد وكيف تتفاعل. النظام البصري البشري سريع ودقيق مما يسمح بالقيام بمهام متشابهة ومهمات يكتنفها الفكر اللاوعي. 

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

في البداية دعونا نفهم ماهي الشبكات العصبية الاصطناعية (Artificial Neural Networks) ومما تتكون؟

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


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



نلاحظ من الشكل أعلاه أن العصبون يتألف من:

  1. إشارات الدخل (Input (X1,X2,Xn وتمثل إشارة المدخلات للخلية العصبية

  2. قوى الأوزان (Weights (W1, W2, Wn حيث يعبر الوزن عن شدة الترابط بين عنصر قبله وعنصر بعده

  3. وحدة المعالجة (Processing Element) وهذا العنصر يقسم إلى قسمين: 

    •  الجامع (Summer) لجمع الإشارات في الدخل الموزون

    •   دالة التفعيل (Activation Function):
      وهذه الدالة تحد من خرج العصبون لذا يسمى بتابع التخميد Squashing حيث يجعل الخرج ضمن المجال [0,1] أو ضمن المجال [-1,1]

  4. الخرج (Output (y وهي القيمة النهائية لنواتج العمليات داخل الخلية العصبية


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


الشبكات العصبية الترشيحية (Convolutional Neural Networks)

يشير اسم “الشبكات العصبية الترشيحية” إلى أن الشبكة تستخدم عملية رياضية تسمى الترشيح (convolution). الترشيح هو نوع من العمليات الخطية المتخصصة. الشبكات الترشيحية هي ببساطة شبكات عصبية تستخدم الترشيح بدلاً من ضرب المصفوفة العامة في واحدة على الأقل من طبقاتها.

بنية الشبكة العصبونية الترشيحية

المُكوّنات الأساسية للشبكات العصبية الترشيحية هي: طبقة الترشيح (Convolutional Layer)، ودالّة التفعيل (Activation function)، وطبقة التجميع (Pooling Layer)، وطبقة تامة الاتصال (Fully-connected Layer) سنوضّح كل منها على حدة.

الطبقات الترشيحية (Convolutional Layers)

تأتي تسمية هذا النوع من الطبقات من عملية الترشيح (convolution) الرياضية وهي عملية تطبق على تابعين f,  g و تنتج التابع o وهو نسخة معدلة عن التابعين و ناتج المنطقة المتداخلة بينهما، لهذه العملية أثر كبير في معالجة الصور.تنتج إذاً هذه الطبقات عن تطبيق عملية الترشيح الرياضية على عناصر الدخل (عصبونات الطبقة السابقة أو بيكسلات الصورة المدخلة) مع عدد من المرشحات (filters) أو نواة الترشيح (kernels) وتكرر عملية الترشيح السابقة على كل مجموعة عناصر من الدخل بحجم المرشح الواحد، لتنتج لدينا قيم واحدة من خرائط الخصائص (feature map)، ثم نكرر كامل العمليات السابقة لكل مرشح فينتج خريطة خصائص أخرى، وهكذا…

تعبر قيم هذه المرشحات عن أوزان الشبكة (weights).

طبقات انتقائية (Sub-sampling Layers) 

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

  • التجميع بالقيمة العليا (max pooling): تأخذ القيمة الأعلى بينها

  • التجميع بالمعدل (average pooling) : تأخذ معدل جميع القيم

طبقات تامة الاتصال (Fully Connected)

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

  • تُطبق فيها عملية البسط (flattening operation)

بَسط الدخل إلى متجه خصائص ومن ثَم تمريره إلى شبكة من العصبونات للتنبؤ باحتمالات الخرج.

  • طبقة المدخلات:

هو مصفوفة تتضمن معلومات عن مواقع تضع أشكال (أنماط) مُعقدة مُعينة في الصورة، ونُطلق على هذه الأنماط المُعقدة اسم (مُصنِّفات قابلة للتدريب- trainable classifiers)؛ هي المُرشِّحات ذاتها (kernals) أو مصفوفة الأوزان.

  • طبقة المخرجات:

هو متجه قيمِ يمثِّل كل منها احتمال صنف من التصنيفات التي تُدرَّب الشبكة عليها (أي الأوزان)؛ فمثلاً: نفرض لدينا كل من التصنيفين قطة وسيارة، سيكون خرج الطبقة [0.91 , 0.01] هذا يعني احتمال أن تكون الصورة لِقِطة هو 0.91 أما احتمال كونها لِسيارة هو 0.01 وباختيار الاحتمال الأكبر تكون الصورة من صنف قطة.

  • دالة التفعيل (Activating Function)

    هي دالة لا خطيّة ولها عدّة أنواع تجدها في الصورة أدناه.



أنت تنظر مرة واحدة فقط  (YOLO)

يولو (YOLO) هو بمثابة القفزة في مجال الرؤية الحاسوبية، وبالتحديد معالجة الصورة في الوقت الفعلي. لتتعرف على Joseph Redmon عالم الحاسب وصاحب خوارزمية يولو هنا حديثه في TED.

قبل البدء بالشرح شاهد عمل الخوارزمية في الوقت الحقيقي.

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

لنأخذ السيارة الأولى كمثال:

(pc) يحدد ما إذا كان هناك كائن موجود في الشبكة أم لا.

(bx, by, bh, bw) هذة القيم تحدد أبعاد المربع المحيط. إذا كان هناك كائن سيتم حسابها بالنسبة لخلية الشبكة التي نتعامل معها.

(bx , by) تشير إلى الإحداثيات x , y، في هذه الحالة سيكون bx = 0.4 and by = 0.3.

(bh) هي نسبة ارتفاع المربع المحيط (المربع الأحمر في المثال أعلاه) إلى ارتفاع خلية الشبكة، والتي في مثالنا هي حوالي 0.9.

(bw) هي نسبة عرض المربع المحيط إلى عرض خلية الشبكة وتساوي هنا 0.5.

تمثيل الفئات من نوع مشاة، سيارة، دراجة نارية إذا كان الكائن سيارة سيكون C2=1.

ستصبح النتائج:

باستخدام المثال أعلاه (صورة الإدخال – 100 × 100 × 3 ، الإخراج – 3 × 3 × 8)

سيتم تدريب نموذجنا على النحو التالي:

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

نلاحظ الآن أنه توجد منطقة تقاطع بين المربعين وهذا ما سوف يدلنا إلى جواب سؤالنا بالأعلى

Join