7.1. ما هي الشبكة العصبية

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

7.1.1. الآلية

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

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

A vertical stack of nine labelled boxes representing the layers of a small classification network. The top box is labelled "Input image" with a tensor shape of (192, 192, 3). An arrow leads down to a "Conv + ReLU" box with shape (96, 96, 32). Another arrow leads to a second "Conv + ReLU" box with shape (48, 48, 64). A "MaxPool" box follows with shape (24, 24, 64). Two more "Conv + ReLU" boxes follow with shapes (12, 12, 128) and (6, 6, 256). A "Global average pool" box has shape (256,). A "Fully connected" box has shape (1000,). The bottom box is labelled "Class scores" with shape (1000,). The tensor flow is top to bottom.

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

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

7.1.2. ما الذي يُدخَل وما الذي يَخرج

طرفا الشبكة كلاهما موترات (تنسور) -- مصفوفات أرقام متعددة الأبعاد، النوع نفسه من الكائنات الذي قدّمه فصل numpy للتو. موتر المدخل لشبكة رؤية هو الصورة الملتقطة بعد إعادة ترتيبها إلى التخطيط الذي تتوقّعه الشبكة: عادةً شكل رباعي (B, H, W, C) حيث B هو بُعد الدفعة (دائماً 1 على الكاميرا، لأن إطاراً واحداً يُعالَج في كل مرة)، وH وW هما الارتفاع والعرض المتوقّعان بالبكسل للشبكة، وC هو عدد القنوات (3 لشبكة RGB، و1 لتدرج الرمادي).

يعتمد موتر المخرج على الغرض من الشبكة:

  • شبكة التصنيف تنتج موتراً أحادي البعد من درجات الثقة، واحدة لكل فئة. ومؤشّر أعلى درجة هو الفئة المتنبأ بها. كاشف الأشخاص المشتق من MobileNet الذي يأتي مع معظم الكاميرات هو من هذا النوع: درجتان، واحدة لـ "person" وأخرى لـ "not person".

  • شبكة الكشف تنتج موتراً ثنائي البعد تصف عناصره قائمة من مربعات الإحاطة إضافةً إلى احتمالات الفئات. وYOLOv8 من هذا النوع: موتر (84, N) حيث 4 من الصفوف الـ84 هي قيم انحدار المربع والـ80 الأخرى احتمالات لكل فئة، مكرّرة عبر N من مواضع المرتكزات.

  • شبكة النقاط المفتاحية تنتج موتراً عناصره مواضع بكسلية لمعالم مُسمّاة. ونموذج معالم الوجه MediaPipe من هذا النوع: 468 نقطة مفتاحية لكل وجه مكتشف.

  • شبكة التجزئة تنتج موتراً ثنائي البعد عناصره تسميات فئات لكل بكسل -- بالأبعاد نفسها للمدخل، مع مؤشّر فئة في كل موضع.

  • شبكة الانحدار تنتج رقماً واحداً أو متجهاً قصيراً من الأرقام -- تقدير عمق، أو زاوية، أو درجة حرارة.

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

7.1.3. لماذا ينجح هذا على الكاميرا

هناك جزآن من العمليات الحسابية يجعلان هذا عملياً لقطعة بمستوى المتحكّم الدقيق. الأول هو التكميم. يجري التدريب بحساب الفاصلة العائمة 32 بت؛ أما الاستدلال فيمكن أن يجري بحساب الأعداد الصحيحة 8 بت دون خسارة دقة تُذكر لمعظم الشبكات. الأوزان بطول 8 بت تشغل رُبع المساحة التخزينية وتعمل أسرع بمرات عديدة من الفواصل العائمة 32 بت. وكل نموذج تأتي به الكاميرا قد جرى تكميمه مسبقاً خارج اللوحة.

الثاني هو تسريع العتاد. العمليات الحسابية نفسها التي يجترّها معالج المتحكّم الدقيق تعليمةً واحدة في كل مرة، يشغّلها مسرّع الشبكات العصبية مئات العمليات دفعة واحدة. الكاميرات الأحدث (AE3 وN6) تحمل وحدة معالجة عصبية (NPU) مخصّصة -- مسرّع موترات على شريحة الـSoC -- تحوّل النموذج الذي كان يستغرق ثانية لتشغيله على المعالج إلى نموذج يعمل في عشرات الملي ثانية. ويغطي فصل محركات الاستدلال كيف يبدو دور الكاميرا في هذا.

7.1.4. ما الذي يغطيه الفصل

التدريب ليس من مهام الكاميرا. يصل النموذج المدرَّب إلى الكاميرا كملف .tflite؛ فتحمّله الكاميرا، وتمرّر كل إطار ملتقط من خلاله، وتفكّ ترميز الموتر الناتج إلى نتيجة يمكن للتطبيق التصرّف بناءً عليها. وكل ما يلي يدور حول كل خطوة من هذه الخطوات:

  • تحميل النموذج وفحصه؛

  • قسم ذاكرة الفلاش حيث توجد ملفات النماذج؛

  • المراحل الأربع لاستدعاء الاستدلال؛

  • المحركات التي تنفّذ العمليات الحسابية فعلياً؛

  • والمعالجات اللاحقة التي تحوّل موتر المخرج إلى قائمة من المربعات أو النقاط المفتاحية أو الفئات.

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