مقدمة عن HyperAI
انسي الأشياء المؤسفة، لا يزال هناك أشخاص يصنعون متصفحات جيدة.
في الآونة الأخيرة، قامت مجموعة من المهندسين بتطوير واجهة برمجة تطبيقات للتعرف على الوجوه يمكن تشغيلها على المتصفح استنادًا إلى إطار عمل tensorflow.js الأساسي - face-api.js، والتي لا يمكنها التعرف على وجوه متعددة في نفس الوقت فحسب،السماح لعدد أكبر من مهندسي الذكاء الاصطناعي غير المحترفين باستخدام تقنية التعرف على الوجه بتكلفة منخفضة.
مبدأ التعرف على الوجه
face-api.js هو إطار عمل js يعتمد على جوهر Tensorflow.js. ويستخدم ثلاثة أنواع من شبكات CNN لإجراء التعرف على الوجوه والكشف عن سمات الوجه لتحديد الأشخاص في الصور.
كما هو الحال مع معظم تقنيات التعرف على الصور، يتم تنفيذ هذه التقنية عن طريق مطابقة قاعدة البيانات، والعثور على الصورة ذات أعلى قدر من التشابه، وإخراج النتيجة. ومع ذلك، يمكن لـface-api.js التعرف على وجوه متعددة في صورة في نفس الوقت.
المبدأ العام لعمل تقنية التعرف على الوجه هو: يقوم المهندسون أولاً بإدخال عدد كبير من الصور التي تحمل معلومات مثل الأسماء في النظام لبناء مجموعة تدريب البيانات، ثم استخدام كائنات التعرف كمجموعة اختبار للمقارنة مع الصور الموجودة في مجموعة التدريب.
إذا وصل التشابه بين صورتين إلى الحد الأقصى، تكون النتيجة هي الإخراج، وإلا تكون النتيجة "غير معروفة".
مبدأ تنفيذ face-api.js
أولاً، يلزم اكتشاف الوجه، أي تحديد جميع الوجوه في الصورة.
يستخدم face-api.js خوارزمية SSD (Single Shot Multibox Detector) لإجراء الكشف عن الوجه. خوارزمية SSD هي طريقة اكتشاف متعددة الأهداف يمكنها اكتشاف فئات الأهداف بشكل مباشر وتحديد المربع المحدد (المعروف باسم مربع b). يمكنه تحسين دقة التعرف وسرعة التعرف في نفس الوقت.
يمكن فهم SSD باعتباره شبكة CNN تعتمد على MobileNetV1 مع طبقة تنبؤ حدودية إضافية. يستخدم النظام أولاً مربعًا محيطيًا لتحديد محيط الوجه وتسجيله. كلما اقتربت الصورة من الوجه، كلما ارتفعت النتيجة، وبالتالي يتم تصفية محتوى الصورة غير المتعلقة بالوجه.
لضمان الدقة، يجب أن تتركز الصور المدخلة لمجموعة الاختبار على الوجه، وبالتالي يجب محاذاة مربع تحديد الوجه. ولتحقيق هذه الغاية، يستخدم face-api.js شبكة CNN بسيطة للعثور على 68 نقطة مميزة لتحديد صورة الوجه، والتحضير للخطوة التالية في التعرف على الوجه.
مثال
من خلال نقاط المعالم، يستطيع النظام تحديد صورة الوجه بشكل أكبر. تظهر الأشكال التالية التأثيرات قبل (يسار) وبعد (يمين) محاذاة الوجه.
مخطط تأثير محاذاة الوجه
من الواضح أنه بعد المحاذاة، يصبح هناك عدد أقل من الأشياء التي لا تتعلق بالوجه، مما يساعد على تحسين دقة التعرف على النظام.
تنفيذ التعرف على الوجه
بعد تحديد الوجه، سيبدأ التعرف على الوجه.
يقوم البرنامج بإدخال الوجوه المحاذية إلى شبكة التعلم العميق للتعرف على الوجوه استنادًا إلى شبكة ريسنت-34 هندسة النظام، اكتشاف الوجه من خلال مكتبة Dlib. يمكن لهذه التقنية رسم ملامح الوجه لوصف الوجه (متجه ملامح يحتوي على 128 قيمة)، وهي العملية التي يشار إليها غالبًا بتضمين الوجه.
بعد ذلك، يقوم البرنامج بمقارنة أوصاف الوجه لكل صورة مع أوصاف الوجه الموجودة في مجموعة التدريب ويحدد ما إذا كان الوجهان متشابهين بناءً على عتبة (بالنسبة لصورة وجه بحجم 150 × 150 بكسل، فإن عتبة 0.6 هي الأكثر ملاءمة).
يمكن استخدام المسافة الإقليدية (أي المقياس الإقليدي) لقياس التشابه، وهو ما يعمل بشكل جيد للغاية. يمكنك ملاحظة التأثير الفعلي في صورة GIF أدناه.
الكلام رخيص، أرني الكود!
بعد تقديم المعرفة النظرية، حان الوقت لإرشادك خلال العملية العملية. يتم استخدام الشكل التالي كصورة إدخال.
الخطوة 1: الحصول على النص
يمكنك الحصول على أحدث البرنامج النصي من dist/face-api.js:
يمكن الحصول عليه أيضًا عبر NPM:
الخطوة 2: تحميل نموذج البيانات
يمكن استخدام ملفات النموذج كموارد ثابتة لتطبيقات الويب أو تحميلها على مواقع أخرى. يمكن تحميل النماذج عن طريق تحديد مسارات الملفات أو عناوين URL.
على افتراض أن النموذج موجود في الدليل public/models:
إذا كنت تقوم بتحميل نموذج معين، إذن:
الخطوة 3: الحصول على وصف كامل
يمكن استخدام الصور أو اللوحات أو مقاطع الفيديو HTML كمدخلات للشبكة. فيما يلي وصف كامل لكيفية الحصول على صورة الإدخال، أي جميع الوجوه:
يمكنك أيضًا تحديد موضع الوجه وميزاته بنفسك:
يمكنك أيضًا تصور النتيجة عن طريق عرض حدود عبر لوحة HTML:
تظهر ملامح الوجه أدناه:
الآن يمكننا حساب موقع وواصفات كل وجه في الصورة المدخلة، والتي ستكون بمثابة بيانات مرجعية.
الخطوة التالية هي الحصول على عنوان URL للصورة واستخدامه faceapi.bufferToImage إنشاء عنصر صورة HTML:
بالنسبة لكل صورة، حدد الوجه واحسب الوصف:
ثم قم بالتكرار على أوصاف الوجه للصورة المدخلة والعثور على الوصف الأكثر تشابهًا في بيانات المرجع:
احصل على أفضل تطابق لكل وجه في صورة الإدخال باستخدام المقياس الإقليدي وعرض المربع المحدد وعلامته في لوحة HTML:
هذه هي العملية الكاملة للتعرف على الوجه بواسطة face-api.js. أليس الأمر بسيطًا جدًا؟يمكن للأصدقاء المهتمين تجربته، ونرحب بإرسال نتائج تجاربكم وخبراتكم إلينا.