الرؤية الحاسوبية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 . حين نقارن وجهين بكسلاً ببكسل، فنحن في الحقيقة نحسب بين نقطتين في هذا الفضاء الهائل — لكن المشكلة أنّ الغالبية العظمى من هذه الأبعاد تحمل لا علاقة لها بهوية الشخص.
قبل ظهور الوجوه الذاتية، حاولت الأنظمة الالتفاف على هذه المشكلة بقياس هندسية مختارة يدوياً: المسافة بين العينين، نسبة عرض الأنف إلى طوله، زاوية خط الفك. لكن هذه السمات تحتاج تأشيراً يدوياً لمعالم الوجه، وتتجاهل الملمس والتظليل تماماً، وتنهار عند أي تغيُّر طفيف في الإضاءة أو وضعية الرأس.
الفكرة المحورية التي جاء بها تورك وبنتلاند كانت واضحة: لا تختر السمات بنفسك — دع البيانات تُخبرك أيّ الأبعاد تحمل معلومات فعلية. والأداة التي تفعل ذلك بالضبط كانت موجودة منذ مطلع القرن العشرين: تحليل المكوِّنات الرئيسية.
بناء فضاء الوجوه: وصفة الوجوه الذاتية
تمرّ خوارزمية الوجوه الذاتية بأربع خطوات واضحة. قبل الدخول في الرياضيات، لنفهم الفكرة العامة أولاً: نريد أن نكتشف «اللَّبِنات الأساسية» التي يتنوّع من خلالها شكل الوجوه — أي الاتجاهات في فضاء البكسلات التي تختلف على امتدادها الوجوه أكثر ما يمكن عن بعضها. هذه الاتجاهات، حين نرتّبها حسب أهميتها، هي ما نسمّيه الوجوه الذاتية.
لماذا ينجح هذا: التباين يحمل معلومات الهوية
يرتّب الأبعاد بحسب مقدار التباين الذي تحمله البيانات على امتدادها. الأول يلتقط الاتجاه الذي يتباين فيه مجموع صور التدريب أكثر من أي اتجاه آخر — وعادةً يكون هذا هو تأثير الإضاءة العامة. الوجه الذاتي الثاني يلتقط أكبر تباين في اتجاه مع الأول — وغالباً ما يرتبط بعرض الوجه أو الفرق بين الجنسين. كلما تقدّمنا في القائمة، التقطت الوجوه الذاتية فروقاً أدقّ: تسريحة الشعر، النظارات، تعبيرات الوجه.
النقطة الجوهرية هنا أنّ معلومات الهوية تتركّز في عدد قليل جداً من هذه الاتجاهات. نظام نموذجي يستخدم 10 إلى 40 وجهاً ذاتياً فقط من أصل آلاف أبعاد البكسلات، ومع ذلك يُحقّق نسبة ضغط تصل إلى 100:1 أو أفضل بخسارة ضئيلة جداً في دقة التعرُّف.
السبب في نجاح ذلك أنّ الوجوه ليست ترتيبات بكسلات عشوائية — بل تتشارك قدراً هائلاً من البنية. فضاء كل صور الوجوه الممكنة ما هو إلا صغير منخفض الأبعاد مغمور داخل فضاء البكسلات الشاسع. ودور تحليل المكوِّنات الرئيسية هو اكتشاف هذا المتشعّب.
ما بعد التعرُّف: هل هذه صورة وجه أصلاً؟
تستطيع الوجوه الذاتية أيضاً الإجابة عن سؤال أبسط وأكثر جوهرية: هل الصورة المُدخلة هي وجه أصلاً؟ حين نأخذ صورة ليست وجهاً — شجرة أو كرسي مثلاً — ونُسقطها على ، فإن محاولة إعادة بنائها من الوجوه الذاتية ستكون رديئة، أي أنّ يكون مرتفعاً. هذا الخطأ يُسمّى المسافة عن فضاء الوجوه (DFFS)، ويعمل عملياً ككاشف وجوه.
يُصنّف النظام كل صورة مُدخلة ضمن واحدة من أربع فئات باستخدام عتبتين — المسافة داخل فضاء الوجوه (أي مدى قرب متجه الأوزان من شخص مُخزَّن) والمسافة عن فضاء الوجوه (أي مدى جودة إعادة البناء):
- وجه معروف: المسافة عن فضاء الوجوه منخفضة، ومتجه الأوزان قريب من شخص مُخزَّن. تمّ التعرُّف عليه.
- وجه مجهول: المسافة عن فضاء الوجوه منخفضة، لكنه بعيد عن كل الأشخاص المُخزَّنين. هو وجه فعلاً لكنه ليس في قاعدة البيانات.
- ليس وجهاً: المسافة عن فضاء الوجوه مرتفعة. الصورة لا يمكن تمثيلها جيداً بالوجوه الذاتية.
- قريب من وجه: المسافة على الحدود. ربما يكون وجهاً التُقط في ظروف غير اعتيادية.
الخوارزمية في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
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)، وصولاً إلى التي تتعلم التمثيل بأكمله من البداية إلى النهاية.
بلورت الورقة أيضاً فكرة أن التعرُّف على الوجوه هو في جوهره مسألة . هذا المنظور فتح الباب أمام أدبيات أساليب بأكملها، وأثّر في طريقة تفكير الباحثين حول في مجالات تتجاوز الوجوه بكثير.
1987
سيروفيتش وكيربي
أول استخدام لتحليل المكوِّنات الرئيسية على صور الوجوه — أثبتا أن الوجوه تقع في فضاء جزئي منخفض الأبعاد ويمكن تمثيلها بكفاءة بعدد صغير من «الصور الذاتية».
1991
الوجوه الذاتية (تورك وبنتلاند)
وسّعا فكرة الصور الذاتية إلى نظام متكامل للكشف عن الوجوه والتعرُّف عليها يعمل بزمن شبه حقيقي. أول خط معالجة تلقائي للتعرُّف على الوجوه.
1997
وجوه فيشر (بلهوميور وآخرون)
طبّقوا تحليل المُميِّز الخطي بعد تحليل المكوِّنات الرئيسية، بحيث يُعظَّم التباين بين الفئات. النتيجة كانت متانة أعلى تجاه تغيُّرات الإضاءة مقارنةً بالوجوه الذاتية وحدها.
2001
كاشف فيولا-جونز للوجوه
شلّالات هار مكّنت من *كشف* الوجوه في الصور بالزمن الحقيقي — أي حلّ مسألة «أين يقع الوجه في الصورة» قبل أن تبدأ الوجوه الذاتية أو أي أسلوب تعرُّف آخر بعمله.
2015
FaceNet (شروف وآخرون)
شبكة التفافية عميقة تستخدم دالة خسارة ثلاثية لتعلُّم تضمين وجوه من 128 بُعداً مُحسَّن مباشرةً لمهمة التعرُّف. تجاوزت دقة البشر على المعايير القياسية.
2019
ArcFace
دالة خسارة الهامش الزاوي دفعت تضمينات الوجوه لتكون أكثر قدرة على التمييز، وحقّقت أفضل أداء على مستوى التحقق من الوجوه بنطاق الملايين.
من الصور الذاتية التي ابتكرها سيروفيتش وكيربي إلى العميقة في FaceNet، الخيط الناظم واضح: اضغط الوجوه في مجموعة صغيرة من الأرقام المعبّرة، ثم قارن بينها. الوجوه الذاتية هي التي حوّلت هذا المبدأ من فكرة نظرية إلى نظام عملي ملموس، وكل نظام جاء بعدها كان تحسيناً وتطويراً للفكرة الجوهرية نفسها.
المرجعTurk, Pentland. Face Recognition Using Eigenfaces. CVPR, 1991.
مصطلحات هذه الورقة
- الوجه الذاتيEigenface
- فضاء الوجوهFace Space
- الوجه المتوسطMean Face
- القيمة الذاتيةEigenvalue
- المتجه الذاتيEigenvector
- تحليل المكونات الرئيسيةPCA
- الإسقاط الرياضيProjection
- التباين المشتركCovariance
- اختزال وتقليص الأبعاد الحسابيةDimensionality Reduction
- خطأ إعادة البناءReconstruction Error
- المسافة الإقليديةEuclidean Distance