7.2. ما الذي غيّره التعلّم الآلي

تحمل وحدة الصورة حفنة من أساليب الكشف الموروثة -- find_features() لكشف الوجوه بتسلسل Haar، وfind_eye() لمحدّد الحدقة الثابت، وfind_hog() لملخّصات اتجاه التدرج، ومساري find_keypoints() وfind_lbp() للنقاط المفتاحية العشوائية. وجميعها لا يزال يعمل؛ لكن جميعها تجاوزه خط أنابيب التعلّم الآلي.

7.2.1. الانقسام الكلاسيكي: ملخّصات مصمَّمة يدوياً، وقرارات مُتعلَّمة

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

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

  • find_features() تلخّص نافذة من الصورة بجمع السطوع داخل عدة مستطيلات ومقارنة المجاميع. اختيرت تخطيطات المستطيلات لأن وجوه البشر تُظهر تباينات موثوقة بين الفاتح والداكن: الحاجبان مقابل الخدّين، ومحجرا العينين مقابل الجبهة، والأنف مقابل الجلد المحيط.

  • find_hog() تلخّص الصورة بالسير على شبكة من خلايا صغيرة وتسجيل أي اتجاه حافة يهيمن في كل خلية. اختيرت الشبكة لأن محيط شخص واقف ينتج نمطاً يمكن التعرّف عليه من اتجاهات الحواف بصرف النظر عن الملابس أو الإضاءة.

  • find_lbp() تلخّص جوار كل بكسل بترميز أيٌّ من البكسلات المحيطة به أفتح وأيها أدكن. اختير الترميز لأن أنماط الأفتح/الأدكن هذه تلتقط نسيج السطح بمعزل عن الإضاءة الكلية.

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

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

انقسام المساهمة هو ما كان مهمّاً. الإنسان ساهم بـالملخّص. والآلة تعلّمت التركيب. وإضافة هدف جديد كانت تعني كتابة ملخّص جديد.

7.2.2. ما الذي غيّرته الشبكات العصبية

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

التغيّر في مَن يصمّم ماذا تغيّر كلّي:

  • الإنسان يصمّم المدخل -- إطارات ملتقطة بحجم وصيغة معيّنين.

  • الإنسان يصمّم المخرج -- تخطيط موتر النتيجة (درجة واحدة لكل فئة للتصنيف، وقائمة من المربعات للكشف، وشبكة من النقاط المفتاحية للمعالم).

  • الإنسان يوفّر بيانات تدريب مُسمّاة -- أمثلة كافية للهدف وأمثلة كافية لغير الأهداف بحيث يكون لدى عملية التدريب ما تتعلّم منه.

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

7.2.3. التركيب مع وحدة الصورة

لا تزال خطوط أنابيب الشبكات العصبية تلتقط عبر واجهات برمجة المستشعر نفسها، وترسم النتائج عبر العناصر الأولية نفسها draw_rectangle() وdraw_circle()، وتحصر العمل عبر مناطق الاهتمام (x, y, w, h) نفسها. خط أنابيب نموذجي يلتقط إطاراً، ويجد اختيارياً هدفاً تقريبياً بكاشف كلاسيكي مثل find_blobs() ويمرّر مربع إحاطته إلى الاستدلال كمنطقة اهتمام، ويشغّل الاستدلال، ويعلّم الكشوف المُعادة على الإطار الأصلي. العناصر الأولية الكلاسيكية هي الركيزة؛ والشبكة هي الخطوة الجديدة في الوسط.