تم تصميم واجهة برمجة تطبيقات FaceID لإنشاء بنية تحتية للخلف لمصادقة المستخدم من خلال التعرف على الوجه. تعمل واجهة برمجة التطبيقات هذه عن طريق تلقي متجه تمثيل الوجه (FRV) من عميل عن بُعد ، ثم التحقق مما إذا كان هذا المقدم يتوافق مع واحد موجود في قاعدة البيانات. بناءً على هذا التحقق ، يتم منح الوصول إما أو رفضه للعميل.
يمكن الوصول إلى واجهة برمجة تطبيقات FaceID إلى أي عميل قادر على إرسال طلب HTTP. تم تطويره باستخدام Golang واتباع بنية REST ، يوفر واجهة برمجة التطبيقات المرونة من حيث تنفيذ العميل. يمكن تطوير العملاء في أي لغة برمجة ويمكن أن ينشأوا من منصات مختلفة مثل الويب أو الهاتف المحمول أو سطح المكتب. تتيح قدرة التكامل السلس هذه دمج وظائف التعرف على الوجه في مجموعة متنوعة من التطبيقات. والجدير بالذكر أن عملية الحصول على FRV من العميل تقع خارج نطاق مسؤوليات واجهة برمجة تطبيقات FaceID.
وثائق API متوفرة على http://faceid.orionsoft.site/Reference
ملاحظة: يمكنك استخدام المتجهات الموجودة في ملفات الملفات vectors.json في الدليل الجذر لهذا المشروع لاختبار واجهة برمجة التطبيقات. يتم بالفعل تخزين هذه المتجهات في قاعدة البيانات.
التعرف على الوجه هي تقنية تتضمن تحديد الأفراد والتحقق منه من خلال تحليل ومقارنة ميزات الوجه الخاصة بهم. إنها مجموعة فرعية من التعريف الحيوي ، ولها تطبيقات مختلفة ، بما في ذلك أنظمة الأمان والمصادقة والتحكم في الوصول إلى المستخدم. فيما يلي نظرة عامة مبسطة على كيفية عمل التعرف على الوجه:
اكتشاف الوجه: الخطوة الأولى هي تحديد موقع الوجوه واستخراجها من إطار صورة أو فيديو. يتم ذلك باستخدام خوارزميات اكتشاف الوجه ، والتي تحدد مناطق الوجه المحتملة في بيانات الإدخال.
محاذاة الوجه: بمجرد اكتشاف الوجه ، قد تؤدي الخوارزمية محاذاة للوجه ، مما يضمن أن يكون الوجه في وضع موحد. هذا يساعد في تطبيع الميزات للمقارنة الدقيقة.
استخراج الميزة: هذه خطوة حاسمة حيث يتم استخراج ميزات مميزة للوجه وتحويلها إلى تمثيل عددي. قد تتضمن هذه الميزات المسافات بين معالم الوجه الرئيسية والزوايا بين بعض النقاط والبيانات الأخرى التي يمكن أن تميز وجه واحد عن الآخر. تشمل التقنيات الشائعة لاستخراج الميزات الأنماط الثنائية المحلية (LBP) ، رسم بياني للتدرجات الموجهة (HOG) ، ومؤخراً الأساليب القائمة على التعلم العميق.
ترميز الميزة: يتم بعد ذلك تحويل الميزات المستخرجة إلى تمثيل مضغوط يمكن مقارنته بسهولة بتمثيلات الوجه الأخرى. يتضمن ذلك غالبًا تقليل أبعاد الميزات مع الحفاظ على معلوماتها التمييزية.
قاعدة بيانات الوجه: في السيناريو الخاص بك ، سيكون لديك قاعدة بيانات تحتوي على تمثيلات الوجه (أو تضمينات) للمستخدمين المعتمدين. يمكن إنشاء قاعدة البيانات هذه عن طريق جمع ومعالجة مجموعة من الصور لكل مستخدم أثناء التسجيل.
مطابقة الوجه: عندما يحاول المستخدم الوصول إلى الوصول ، تتم معالجة وجهه المقدم من خلال نفس خط الأنابيب: الكشف ، المحاذاة ، استخراج الميزات ، والترميز. ثم تتم مقارنة تمثيل الوجه الناتج مع التمثيل في قاعدة بيانات وجهك باستخدام مقياس المسافة مثل المسافة الإقليدية أو تشابه جيب التمام. الفكرة هي العثور على أقرب مباراة.
عتبة: المقارنة تنتج درجة التشابه. يمكنك تعيين قيمة العتبة التي يعتبر الوجه المقدم مطابقة مع وجه في قاعدة البيانات. العتبة تساعد على تحقيق التوازن بين الإيجابيات الخاطئة والسلبيات الخاطئة.
اتخاذ القرارات: بناءً على درجة التشابه والعتبة ، يتم اتخاذ قرار ما إذا كان يجب منح الوصول أم لا. إذا كانت النتيجة أعلى من العتبة وضمن نطاق مقبول ، يتم منح الوصول. خلاف ذلك ، يتم رفض الوصول.
التعلم المستمر: لتحسين دقة الاعتراف بمرور الوقت ، تنفذ بعض الأنظمة التعلم المستمر. يتضمن ذلك تحديث تمثيل الوجه بشكل دوري في قاعدة البيانات باستخدام صور جديدة للمستخدمين. يمكن أن يساعد ذلك في حساب التغييرات في المظهر بسبب عوامل مثل الشيخوخة أو شعر الوجه.
FRV هو متجه يمثل وجه الشخص. إنه تمثيل رقمي للوجه ، ويستخدم لمقارنة الوجوه. يتم إنشاء FRV بواسطة خوارزمية التعرف على الوجه التي تنفذها مكتبة تستخدم على جانب العميل. يمكن أن يكون جانب العميل أي منصة (الويب ، الهاتف المحمول ، سطح المكتب ، إلخ). لنلقي نظرة على بنية FRV:
[
0.123, -0.456, 0.789, 0.234, 0.567, 0.123, 0.678, -0.345,
-0.987, 0.876, -0.123, -0.456, 0.789, -0.234, -0.567, 0.123,
0.678, 0.345, -0.987, -0.876, 0.123, 0.456, -0.789, 0.234,
0.567, -0.123, 0.678, 0.345, 0.987, -0.876, -0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
-0.567, 0.123, 0.678, 0.345, -0.987, -0.876, 0.123, 0.456,
-0.789, 0.234, -0.567, -0.123, -0.678, 0.345, 0.987, 0.876,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234,
0.123, -0.456, 0.789, -0.234, 0.567, -0.123, -0.678, -0.345,
0.987, -0.876, 0.123, 0.456, -0.789, -0.234, -0.567, -0.123,
0.678, -0.345, -0.987, 0.876, -0.123, -0.456, 0.789, -0.234
]
أعلاه لدينا أبعاد 128 FRV (متجه تمثيل الوجه) لتمثيل رقمي لوجه شخص ما. يمكن للمكتبات المختلفة توليد أبعاد مختلفة FRVs ، والتي يمكن أن تكون 256 أو 512 أو حتى المزيد من الأبعاد. يمكننا أن نعتقد أن هذا FRV كطابع يونيك رقمي من وجه شخص ما. كما لا يوجد أحد لديه نفس الوجه ، لا أحد لديه نفس FRV. لذلك ، يمكن استخدام FRV لتحديد شخص ما ضد قاعدة بيانات لـ FRVs.
تستخدم واجهة برمجة تطبيقات FaceID هذه من FRV المرسلة من قبل العميل لتحديد ما إذا كان FRV المعطى يطابق أي FRV في قاعدة البيانات. إذا كان FRV المعطى يطابق أي FRV في قاعدة البيانات ، فإن API يمنح الوصول إلى العميل. خلاف ذلك ، فإن واجهة برمجة التطبيقات تنفي الوصول إلى العميل.
قاعدة بيانات المتجهات هي شيء جديد في عالم قواعد البيانات ، واستخدامها ينمو بسرعة. في حالتنا ، نستخدم QDrant (https://qdrant.tech) ، وهي قاعدة بيانات متجه مفتوحة المصدر ومجاني للاستخدام. تذكر أن متجهات تمثيل الوجه هي في الأساس مجموعة من أرقام التعويم التي يمكن أن تكون ضخمة في الحجم. على واجهة برمجة تطبيقات FaceID هذا ، نستخدم Dimension FRV ، ولكن يمكن أن يكون 256 أو 512 أو حتى أبعاد طويلة. لذلك ، نحتاج إلى قاعدة بيانات يمكنها تخزين هذه الكمية الضخمة من البيانات ويمكنها إجراء عمليات بحث سريعة عليها.
يمكن استخدام قواعد بيانات SQL و NOSQL التقليدية لتخزين FRVs ، ولكن لم يتم تحسينها لهذا النوع من البيانات. يتم تحسين قواعد بيانات المتجهات لتخزين المتجهات والبحث عنها. كما تم تحسينها للبحث السريع ، ويمكنهم إجراء عمليات بحث على ملايين المتجهات في بضعة ميلي ثانية. هذا يعني أنه يمكن تحديد الوجه في بضعة ميلي ثانية ، وهو أمر رائع للتطبيقات في الوقت الفعلي.
هذا المشروع هو تنفيذ بسيط لواجهة برمجة تطبيقات التعرف على الوجه. إنها واجهة برمجة تطبيقات بسيطة يمكن استخدامها لدمج التعرف على الوجه في أي تطبيق. API مكتوب في Golang ويستخدم بنية REST. يمكن كتابة العميل بأي لغة ، ويمكن أن يأتي من أي منصة (الويب ، الهاتف المحمول ، سطح المكتب ، إلخ). إذا كنت ترغب في تنفيذ التعرف على الوجه في تطبيقك ، فيمكنك استخدام API FaceID كنقطة انطلاق. من فضلك ، لا تتردد في الاتصال بي على [email protected] إذا كان لديك أي أسئلة أو اقتراحات. شكرًا لك!