الرؤية الحاسوبية1991تأسيسي9 دقيقة قراءة

التعرُّف على الوجوه باستخدام الوجوه الذاتية

Face Recognition Using Eigenfaces

Turk, M. A. · Pentland, A. P. — CVPR

المشكلة

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

الإسهام

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

الأثر

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

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

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

الوجوه الذاتية هي بالضبط هذا النظام، لكنه يُكتشَف تلقائياً من البيانات. الشفّافات هي الوجوه الذاتية — أنماط تباين مُستخرجة آلياً — وهوية كل شخص تُختصر في وصفة قصيرة: «40% من الشفّافة الأولى، ناقص 20% من الثانية، زائد 60% من الثالثة…»

المشكلة: لماذا فضاء البكسلات كبير جداً

صورة وجه رمادية بحجم 64×64 هي من 4,096 رقماً. بمعنى آخر، كل وجه يُمثَّل بنقطة واحدة في فضاء ذي 4,096 . حين نقارن وجهين بكسلاً ببكسل، فنحن في الحقيقة نحسب بين نقطتين في هذا الفضاء الهائل — لكن المشكلة أنّ الغالبية العظمى من هذه الأبعاد تحمل لا علاقة لها بهوية الشخص.

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

الفكرة المحورية التي جاء بها تورك وبنتلاند كانت واضحة: لا تختر السمات بنفسك — دع البيانات تُخبرك أيّ الأبعاد تحمل معلومات فعلية. والأداة التي تفعل ذلك بالضبط كانت موجودة منذ مطلع القرن العشرين: تحليل المكوِّنات الرئيسية.

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

بناء فضاء الوجوه: وصفة الوجوه الذاتية

تمرّ خوارزمية الوجوه الذاتية بأربع خطوات واضحة. قبل الدخول في الرياضيات، لنفهم الفكرة العامة أولاً: نريد أن نكتشف «اللَّبِنات الأساسية» التي يتنوّع من خلالها شكل الوجوه — أي الاتجاهات في فضاء البكسلات التي تختلف على امتدادها الوجوه أكثر ما يمكن عن بعضها. هذه الاتجاهات، حين نرتّبها حسب أهميتها، هي ما نسمّيه الوجوه الذاتية.

Ψ=1Mi=1MΓi\Psi = \frac{1}{M}\sum_{i=1}^{M} \Gamma_i
الوجه المتوسطيُنشأ الوجه المتوسط عبر حساب متوسط جميع صور التدريب بكسلاً ببكسل. وهو يمثّل المظهر النموذجي للوجوه الموجودة في مجموعة البيانات ويُستخدم كنقطة مرجعية للخطوات اللاحقة. بعد ذلك تُقارَن الوجوه الفردية بهذا المتوسط، مما يسمح للخوارزمية بالتركيز على الاختلافات التي تميّز الأشخاص بعضهم عن بعض بدلاً من التركيز على السمات المشتركة بين جميع الوجوه.
افتح في المختبر
راقب كيف يتشكّل الوجه المتوسط كلما أضفنا صوراً جديدة إلى عملية الحساب. الملامح الفردية تتلاشى تدريجياً ولا يبقى إلا البنية المشتركة بين الوجوه.
تستيقظ التجربة عند وصولك…
Φi=ΓiΨ\Phi_i = \Gamma_i - \Psi
وجه الفرق (الصورة بعد طرح المتوسط)توسيط البيانات بطرح المتوسط هو الخطوة الأولى المعيارية في تحليل المكوِّنات الرئيسية. الهدف منه أن يكشف تحليل التباين اللاحق عن اتجاهات التغيُّر الفعلي بين الوجوه، لا مجرد الانزياح عن نقطة الأصل.
C=1MAATL=ATA(trick: M×M)C = \frac{1}{M} A A^T \quad \Longrightarrow \quad L = A^T A \quad (\text{trick: } M \times M)
حيلة التغايُر — احسب المصفوفة الصغيرة بدلاً من الكبيرةكان تحليل مصفوفة التغايُر الكاملة مكلفاً جداً من الناحية الحسابية لأن كل صورة تحتوي على آلاف البكسلات. وجاءت الفكرة الجوهرية في استعادة الاتجاهات الرئيسية نفسها عبر العمل على مصفوفة أصغر بكثير يعتمد حجمها على عدد صور التدريب بدلاً من عدد البكسلات. وقد خفّض ذلك متطلبات الذاكرة والحساب بصورة كبيرة، مما جعل أسلوب Eigenfaces قابلاً للتطبيق عملياً على العتاد المتاح آنذاك.
افتح في المختبر
الوجوه الذاتية الأولى تلتقط التباينات الواسعة كالإضاءة وشكل الوجه. أمّا الوجوه الذاتية اللاحقة فتلتقط تفاصيل أدقّ. حرّك شريط التمرير لترى كم وجهاً ذاتياً نحتاج لإعادة بناء مقبولة.
تستيقظ التجربة عند وصولك…
wk=ukT(ΓnewΨ),ε=ΩΩjw_k = u_k^T (\Gamma_{\text{new}} - \Psi), \quad \varepsilon = \|\Omega - \Omega_j\|
وزن الإسقاط ومسافة التعرُّفللتعرّف على وجه جديد، تُعبَّر الصورة أولاً على شكل مزيج من الوجوه الذاتية المتعلَّمة. وينتج عن ذلك تمثيل مضغوط يتكون من مجموعة صغيرة من المعاملات التي تلخص أهم خصائص الوجه. بعد ذلك تُجرى المقارنة بين هذا التمثيل وتمثيلات الوجوه المعروفة مسبقاً. وتشير المسافات الأصغر إلى تشابه أكبر، بينما تدل المسافات الأكبر على أن الوجهين يعودان غالباً إلى شخصين مختلفين.
افتح في المختبر
اختر وجهاً اختبارياً لتشاهد عملية إسقاطه في فضاء الوجوه. النظام يبحث عن أقرب تطابق ويعرض لك إعادة البناء من الوجوه الذاتية.
تستيقظ التجربة عند وصولك…

لماذا ينجح هذا: التباين يحمل معلومات الهوية

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

النقطة الجوهرية هنا أنّ معلومات الهوية تتركّز في عدد قليل جداً من هذه الاتجاهات. نظام نموذجي يستخدم 10 إلى 40 وجهاً ذاتياً فقط من أصل آلاف أبعاد البكسلات، ومع ذلك يُحقّق نسبة ضغط تصل إلى 100:1 أو أفضل بخسارة ضئيلة جداً في دقة التعرُّف.

السبب في نجاح ذلك أنّ الوجوه ليست ترتيبات بكسلات عشوائية — بل تتشارك قدراً هائلاً من البنية. فضاء كل صور الوجوه الممكنة ما هو إلا صغير منخفض الأبعاد مغمور داخل فضاء البكسلات الشاسع. ودور تحليل المكوِّنات الرئيسية هو اكتشاف هذا المتشعّب.

افتح في المختبر
طيف القيم الذاتية ينحدر بحدّة: الوجوه الذاتية الأولى القليلة تستحوذ على الجزء الأكبر من التباين. النقطة التي يُسمّيها المهندسون «الكوع» تُظهر أين يصبح إضافة وجوه ذاتية جديدة ذا عائد متناقص.
تستيقظ التجربة عند وصولك…

ما بعد التعرُّف: هل هذه صورة وجه أصلاً؟

تستطيع الوجوه الذاتية أيضاً الإجابة عن سؤال أبسط وأكثر جوهرية: هل الصورة المُدخلة هي وجه أصلاً؟ حين نأخذ صورة ليست وجهاً — شجرة أو كرسي مثلاً — ونُسقطها على ، فإن محاولة إعادة بنائها من الوجوه الذاتية ستكون رديئة، أي أنّ يكون مرتفعاً. هذا الخطأ يُسمّى المسافة عن فضاء الوجوه (DFFS)، ويعمل عملياً ككاشف وجوه.

يُصنّف النظام كل صورة مُدخلة ضمن واحدة من أربع فئات باستخدام عتبتين — المسافة داخل فضاء الوجوه (أي مدى قرب متجه الأوزان من شخص مُخزَّن) والمسافة عن فضاء الوجوه (أي مدى جودة إعادة البناء):

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

الخوارزمية في شيفرة برمجية

الوجوه الذاتية — خط المعالجة الكامل بـ NumPypython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np
# 1. تحميل M صورة وجه للتدريب، كل واحدة متجه مسطّح من N بكسل
# شكل faces: (M, N)  مثلاً (40, 4096) لـ 40 صورة بحجم 64×64
# 2. حساب الوجه المتوسط
mean_face = faces.mean(axis=0)          # شكله (N,)
# 3. طرح المتوسط — توسيط البيانات
diff = faces - mean_face                # شكله (M, N)
# 4. حيلة التغايُر: حساب المصفوفة الصغيرة M×M
L = diff @ diff.T                       # شكله (M, M) — سريع!
eigenvalues, eigenvectors = np.linalg.eigh(L)
# 5. استرجاع الوجوه الذاتية من المتجهات الذاتية الصغيرة
eigenfaces = (diff.T @ eigenvectors).T  # شكله (M, N)
eigenfaces = eigenfaces / np.linalg.norm(eigenfaces, axis=1, keepdims=True)
# 6. الاحتفاظ بأفضل K وجه ذاتي (الأعلى في القيم الذاتية)
K = 25
idx = np.argsort(eigenvalues)[::-1][:K]
top_eigenfaces = eigenfaces[idx]         # شكله (K, N)
# 7. إسقاط كل وجوه التدريب على فضاء الوجوه
weights = diff @ top_eigenfaces.T        # شكله (M, K)
# 8. التعرُّف على وجه جديد
new_face = ...                           # شكله (N,)
new_diff = new_face - mean_face
new_weights = top_eigenfaces @ new_diff  # شكله (K,)
distances = np.linalg.norm(weights - new_weights, axis=1)
best_match = np.argmin(distances)

نقاط القوة والقيود

خط المعالجة الكامل في نظرة واحدة

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

الأثر: من الوجوه الذاتية إلى التعرُّف العميق على الوجوه

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

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

  1. 1987

    سيروفيتش وكيربي

    أول استخدام لتحليل المكوِّنات الرئيسية على صور الوجوه — أثبتا أن الوجوه تقع في فضاء جزئي منخفض الأبعاد ويمكن تمثيلها بكفاءة بعدد صغير من «الصور الذاتية».

  2. 1991

    الوجوه الذاتية (تورك وبنتلاند)

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

  3. 1997

    وجوه فيشر (بلهوميور وآخرون)

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

  4. 2001

    كاشف فيولا-جونز للوجوه

    شلّالات هار مكّنت من *كشف* الوجوه في الصور بالزمن الحقيقي — أي حلّ مسألة «أين يقع الوجه في الصورة» قبل أن تبدأ الوجوه الذاتية أو أي أسلوب تعرُّف آخر بعمله.

  5. 2015

    FaceNet (شروف وآخرون)

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

  6. 2019

    ArcFace

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

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

المرجعTurk, Pentland. Face Recognition Using Eigenfaces. CVPR, 1991.

مصطلحات هذه الورقة