ملف العدد
تتبع نظرات العين البشرية باستعمال تقنيات تعلم الآلة
العدد 156 | كانون اﻷول (ديسمبر)-2020

بقلم رزان ديبو

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

كيفية حل مشكلة تتبُّع اتجاه الرؤية

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

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

تعريف تعلُّم الآلة والتعلم العميق

يُعرَّف "تعلُّم الآلة" أو "Machine Learning" بأنه علمُ برمجةِ الحواسيب بحيث يمكنها أن تتعلم من البيانات Data.

وبعبارة أخرى هو مجال الدراسة الذي من خلاله نعطي الحواسيب القدرة على التعلم من دون أن تُبرمج برمجةً صريحة.

أما "التعلُّم العميق" فهو جزء من تعلُّم الآلة، وكلاهما جزء من موضوع أعم وأشمل هو الذكاء الصنعي Artificial Intelligence. ويعتبر التعلم العميق - بوجه عام - تطورًا للتعلم الآلي؛ فهو يَستعمل من خوارزميات تعلم الآلة شبكةً عصبونيةً قابلةً للبرمجة لكنْ بعدد طبقات أكبر، فيتمكَّن بذلك من اتخاذ قرارات دقيقة دون مساعدة كبيرة من البشر؛ أي إن التعلم العميق يقوم بنمذجة الخوارزميات وفق شبكة عصبونية صنعية Artificial Neural Network يمكنها التعلم واتخاذ قرارات ذكية بمفردها.

 

سنعتمد على بناء نموذج شبكة عصبونية تلفيفية (Convolution Neural Network CNN) بحيث يجري تدريب النموذج على مجموعة بيانات Eye Chimera تحتوي على الأصناف السبعة التي نريد التنبؤ بها لصورة ما؛ هي: المركز، اليمين، اليسار، أسفل اليسار، أسفل اليمين، أعلى اليمين، أعلى اليسار، كما في الشكل الآتي:

 

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

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

تُمثَّل الإجراءات الثلاثة (تلقِّي المدخلات، ومعالجة المعلومات، وتوليد المخرجات) على شكل طبقات في الشبكة العصبونية (طبقة الدخل، والطبقة المخفية، وطبقة الخرج)، كما هو موضح في الشكل الآتي:

 

 

من هذا الشكل يمكننا أن نعرِّف ما يلي:

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

خطوط الربط links: تَنقل وتمرِّر الإشارات بين العصبونات، ويُرفَق بكل منها وزنٌ weight يمثِّل قيمةً عددية تُضرب في الإشارات الواردة لتكون دَخْلَ العصبون، ويجري تحديث هذه الأوزان أثناء التدريب.

تابع التفعيل activation function: يُطبَّق على كل عصبون بعد جمع موزون لمداخله مع إضافة انحياز، ويحدِّد هذا التابع إشارة الخرج الناتجة عن هذا العصبون، ويحدِّد كذلك فعالية العصبون. مهمة هذا التابع إضافة اللاخطية إلى الشبكة المبنية؛ وذلك لأنه من دونه ستكون الشبكة بكاملها سلسلة من العمليات الخطية التي يمكن أن نستبدل بها عمليةً خطيةً واحدة (أي كطبقة واحدة فقط).

ولما كانت معظمُ الظواهر في الطبيعة ظواهرَ لاخطية، فلن تجدي خُوارزميةٌ خطية لإنجاز المهمة المطلوبة كما ينبغي، وهذا ما يفسر ضرورة استعمال هذه التوابع. سنستعمل التابع الخطي المقوَّم ReLU (Rectified Linear function) الذي يمتاز بالخواص الآتية:

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

يوضح الشكل التالي التابع Relu وهو max(0,z)، حيث z هو دخل هذا التابع:

 

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

يمكن تقسيم طبقات الشبكة العصبونية التلفيفية إلى قسمين:

  • طبقات التلفيف convolution layers لاستخراج السمات من الدخل.
  • الطبقات المتصلة بالكامل fully connected (dense) layers، تَستعمل الناتجَ من الطبقة التلفيفية لتوليد الخرج.

 

تدريب الشبكة العصبونية واختبارها

تتضمن عملية التدريب الكاملة للشبكة العصبونية خطوتين:

  1. الانتشار الأمامي Forward Propagation

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

  1. الانتشار العكسي Backward Propagation

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

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

الخُوارزمية والمخطط الصندوقي

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

 

خُوارزمية تحديد (كشف) الوجه

إن عملية كشف الوجه وتحديد الملامح هي إحدى مسائل التنبؤ بالشكل Shape predictor. فبعد إدخال صورة ما إلى النظام يحاول المتنبِّئُ بالشكل أن يحدد موضع نقاطَ علَّامٍ رئيسية على هذا الشكل لمعرفته. وثمة خطوتان لتحديد ملامح الوجه؛ هما:

  1. تحديد موضع الوجه في صورة الدخل.
  2. تحديد الملامح أو البنى الأساسية لصورة الوجه التي حصلنا عليها من الخطوة الأولى، وتسمَّى مناطق الاهتمام (Region of Interest ROI).

ثمة طرائق متعددة لكشف الوجه الممثَّل بالخطوة الأولى، الغرضُ منها في نهاية المطاف الحصول على مربع يحيط بالوجه (يسمى الصندوق المحدِّد للوجه Face Bounding Box).

يبيِّن المخطط الآتي طريقة توزع التدرجات الموجهة )HOG(:

 

تَعتمد فكرة خوارزمية HOG على استخراج السمات لصورة الدخل وحفظها في شعاع، ثم استعمال هذا الشعاع دخلًا لخوارزمية تصنيف مثل (Support Vector Machine SVM) وهو نموذج تعلُّم آلي خاضع للإشراف يَستعمل خوارزميات تصنيف ثنائية لتقسيم البيانات إلى مجموعتين بعد إعطاء مجموعات من بيانات التدريب المصنفة لكل فئة لنموذج SVM، عندها يمكن تصنيف أي شيء جديد إلى أحد الصفين. تحدِّد هذه الخوارزمية احتواء الصورة على وجه (أو أي غرض object دُرِّبت الشبكة عليه) أم لا.

السمات المستخرَجة هي مخططات توزُّع Histograms لاتجاهات التدرجات gradients، وهي عبارة عن تدرجات موجَّهة. وبوجه عام تكون قيم التدرجات كبيرةً عند الحافات والزوايا، وهذا يتيح كشف هذه المناطق.

تحديد ملامح الوجه Facial Landmarks

تُعتبر صورة الوجه التي حصلنا عليها من الخطوة الأولى دَخْلَ هذه المرحلة. ويجب أن تحدِّد ملامحُ الوجه - كما في الصورة التالية - المناطقَ الرئيسية في الوجه (عددها 68)، وأهم ما فيها منطقتا العين اليمنى واليسرى:

 

يُستعمل كاشف معالم الوجه المدرَّب مسبقًا داخل مكتبة dlib (من حزمة برمجيات) في تقدير موضع هذه الملامح.

خريطة المعالم السابقة هي جزء من ملف بيانات shape_predictor_68_face_landmarks.dat، يمكن تحميله من الرابط:

(https://github.com/italojs/facial-landmarks-recognition/blob/master/shape_predictor_68_face_landmarks.dat)

 وهو ملف البيانات الذي دُرِّبَ عليه تابع التنبؤ بالشكل ضمن مكتبة dlib. بعد تحديد ملامح الوجه يجري قصُّ منطقتَي العين اليمنى واليسرى، وذلك بعد تحديد مستطيل يحوي النقاط من 37 إلى 42 للعين اليمنى وآخر يحوي النقاط من 43 إلى 48 للعين اليسرى، ويُحفظ كلٌّ منها في مسار مختلف بغية تدريب نموذجَي CNN لكلٍّ منهما على حدة. في نهاية هذه المرحلة نحصُل على مجموعة بيانات خاصة بالعين اليمنى وأخرى خاصة بالعين اليسرى.

تدريب CNN على كلٍّ من مجموعة العين اليمنى ومجموعة العين اليسرى

على الرغم من أن التدريب يستغرق وقتًا طويلًا جدًّا، فإن متانةَ ودقة خوارزميات CNN أفضل من خوارزميات التعلم الآلي.

جرى تطبيق نموذج شبكة عصبونية صنعية بثلاث طبقات تلفيفية. دَخْلُ الطبقة الأولى هو صورة عينٍ بُعداها 15*25، وعدد مرشحاتها 24 مرشِّحًا، بُعْدا كلٍّ منها 7*7.

وفي المرحلة التالية طُبِّق تابع التفعيل Relu (أي  تابع max بُعْداه 2*2) لتخفيف دقة الصورة مع المحافظة على المعلومات الأساسية فيها وتقليل التكلفة الحسابية.

ثم كُرِّرت الخطوات السابقة، ولكن بُعْدا المرشِّح في الطبقة التلفيفية الثانية 5*5، وفي الطبقة التلفيفية الثالثة 3*3.

أخيرًا رُبِطت النواتج من جميع عمليات التفعيل بالطبقة المتصلة بالكامل، مع ملاحظة أن عدد عقد الخرج في نهاية النظام يجب أن يكون متوافقًا مع عدد الصفوف الخاصة بالتطبيق المدروس.

دمج النتيجتين ومعرفة التصنيف النهائي

باستعمال نموذج CNN للعين اليسرى جرى التنبؤ باتجاه نظرها بحيث يحتوي خرجُه (أي الشعاع scoreL) على احتمالات كلِّ صف من الصفوف، وبحيث يكون الصف الموافق لأعلى احتمال في شعاع الخرج هو اتجاه النظر المتنبأ به للعين اليسرى، وباستعمال CNN للعين اليمنى جرى التنبؤ باتجاه نظرها بنفس الطريقة حيث يحتوي خرجُه (أي الشعاع scoreR) على احتمالات كلِّ صف من الصفوف، وبحيث يكون الصف الموافق لأعلى احتمال في شعاع الخرج هو اتجاه النظر المتنبأ به للعين اليمنى ، وأخيرًا تم حساب متوسط شعاعي الخرج لكل من النموذجين والذي هو عبارة عن شعاع نهائي يحوي احتمال النظر إلى كل جهة لكلتا العينين وهو score، وبأخذ الصنف الموافق للقيمة العليا به نكون قد تنبأنا باتجاه النظر النهائي لصورة الدخل.

ويتحدد الصف (الاتجاه) النهائي من العلاقة:

النتائج العملية

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

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

كانت مصفوفة التشويش Confusion Matrix للنتيجة النهائية المعتمدة على كلا العينين كما يلي:

 

تبين القائمة التالية دلالات الأرقام إلى يسار وأسفل مصفوفة التشويش:

وهي نسبٌ جيدة للكشف، وخاصة للاتجاه المركزي. ونلاحظ، مثلًا، أنه في حالة اتجاه اليمين right الممثل بالرقم 4 في المصفوفة بأن النموذج يكشفه كشفًا صحيحًا بنسبة 76%، ويخطئ في الكشف ويصنفه على أنه يمين علوي بنسبة 10%، وعلى أنه يمين سفلي بنسبة 10%. وهذه النتائج مقبولة لأن الإنسان العادي قد لا يميز بين هذه الجهات تمييزًا واضحًا. ولمقارنة النتائج مع نتائج سابقة لمعرفة مدى دقتها قمنا بمقارنتها بنتائج ورقة بحثية حديثة في هذا المجال وكانت النتائج كما يلي:

نلاحظ أن نتائج خوارزميتنا تتفوق في تصنيف بعض اتجاهات النظر مثل المركز واليمين السفلي.

 

الاختبار على صور خارجية

تُدخَل صور خارجية للاختبار والتصنيف ومعرفة الخرج في كل مرحلة من مراحل العمل:

 

المراجع

1. Géron, Aurélien. Hands-on machine learning with Scikit-Learn, Keras, and TensorFlow: Concepts, tools, and techniques to build intelligent systems. O'Reilly Media, 2019.

2. Dalal, N., & Triggs, B. (2005, June). Histograms of oriented gradients for human detection. In 2005 IEEE computer society conference on computer vision and pattern recognition (CVPR'05) (Vol. 1, pp. 886-893). IEEE.

3. George, A., & Routray, A. (2016, June). Real-time eye gaze direction classification using convolutional neural network. In 2016 International Conference on Signal Processing and Communications (SPCOM) (pp. 1-5). IEEE.

 

قد ترغب كذلك بقراءة
تعرف الوجوه باستعمال التعلم العميق
الترجمة الآلية باستعمال التعلم العميق
تعرف العواطف من معطيات الصوت والصورة
تركيب الكلام باستعمال التعلم العميق