[image-processing] مكتبة التعرف على الوجوه


Answers

تحديث

OpenCV 2.4.2 الآن يأتي مع cv::FaceRecognizer الجديد. يرجى الاطلاع على وثائق مفصلة للغاية على العنوان التالي:

المشاركة الأصلية

لقد أصدرت libfacerec ، مكتبة حديثة للتعرف على الوجوه ل OpenCV C ++ API (رخصة BSD). ليس لدى libfacerec تبعيات إضافية وتنفذ طريقة Eigenfaces وطريقة Fisherfaces والأنماط الثنائية المحلية Histograms. سيتم تضمين أجزاء من المكتبة في OpenCV 2.4.

أحدث نسخة من libfacerec متوفرة على:

تمت كتابة المكتبة لـ OpenCV 2.3.1 مع وضع OpenCV 2.4 في الاعتبار ، لذلك أنا لا أؤيد إصدارات OpenCV السابقة للإصدار 2.3.1. يأتي هذا المشروع كمشروع CMake مع واجهة برمجة تطبيقات جيدة التوثيق ، وهناك أيضًا برنامج تعليمي حول تصنيف النوع. يمكنك رؤية نسخة HTML من الوثائق على:

إذا كنت ترغب في فهم كيفية عمل هذه الخوارزميات ، فقد ترغب في قراءة دليل التعرف على الوجوه الخاص بي (بما في ذلك أمثلة Python و GNU Octave / MATLAB):

هناك أيضًا تطبيق Python و GNU Octave / MATLAB للخوارزميات في مستودع github الخاص بي . يتضمن كلا المشروعين في facerec أيضًا عدة طرق facerec المتبادل لتقييم الخوارزميات:

المنشورات ذات الصلة هي:

  • Turk، M.، and Pentland، A. Eigenfaces for recognition. . Journal of Cognitive Neuroscience 3 (1991)، 71-86.
  • Belhumeur، PN، Hespanha، J.، and Kriegman، D. Eigenfaces vs. Fisherfaces: Recognition using class linear projection. . IEEE Transactions on Pattern Analysis and Machine Intelligence 19، 7 (1997)، 711–720.
  • Ahonen، T.، Hadid، A.، and Pietikainen، M. Face Recognition with Local Binary Patterns. . رؤية الكمبيوتر - ECCV 2004 (2004) ، 469–481.
Question

أنا أبحث عن مكتبة التعرف على الوجوه المجانية لمشروع الجامعة. أنا لا أبحث عن كشف الوجه . أنا أبحث عن الاعتراف الفعلي. وهذا يعني البحث عن الصور التي تحتوي على وجوه أو مكتبات محددة تقوم بحساب المسافات بين الوجوه المحددة.

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

لقد ألقيت نظرة على Faint ، ولكن يبدو أن المكتبة ليست قابلة لإعادة الاستخدام بشكل كبير لتطبيقاتي الخاصة.

أنا سعيد بمكتبة في Python أو Java أو C ++ أو C أو شيء من هذا القبيل. سيكون أفضل شيء إذا كان يمكن تشغيله على جهاز يعمل بنظام التشغيل Windows لأنني أعتمد على بعض التعليمات البرمجية الخارجية لـ Windows فقط في الوقت الحالي.




الخطوة التالية ستكون FisherFaces. جربها وتحقق مما إذا كانت تعمل من أجلك. Here مقارنة لطيفة.




يجب أن تنظر إلى http://libccv.org/

إنها جديدة إلى حد ما ، ولكنها توفر واجهة برمجة تطبيقات عالية المستوى مفتوحة المصدر مجانية للكشف عن الوجه.

(... وأجرؤ على القول ، هو لعنة جدا مذهلة)

تحرير: الجدير بالذكر أيضا ، أن هذا هو واحد من عدد قليل من libs التي لا تعتمد على opencv ، وفقط للركلات ، وهنا نسخة من رمز للكشف عن الوجه من صفحة الوثائق ، لتعطيك فكرة عن ما ينطوي عليه:

#include <ccv.h>
int main(int argc, char** argv)
{
    ccv_dense_matrix_t* image = 0;
    ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
    ccv_bbf_classifier_cascade_t* cascade = ccv_load_bbf_classifier_cascade(argv[2]);         ccv_bbf_params_t params = { .interval = 8, .min_neighbors = 2, .accurate = 1, .flags = 0, .size = ccv_size(24, 24) };
    ccv_array_t* faces = ccv_bbf_detect_objects(image, &cascade, 1, params);
    int i;
    for (i = 0; i < faces->rnum; i++)
    {
        ccv_comp_t* face = (ccv_comp_t*)ccv_array_get(faces, i);
        printf("%d %d %d %d\n", face->rect.x, face->rect.y, face->rect.width, face->rect.y);
    }
    ccv_array_free(faces);
    ccv_bbf_classifier_cascade_free(cascade);
    ccv_matrix_free(image);
    return 0;
} 



نحن نستخدم OpenCV . يحتوي على الكثير من الأشياء التي لا تتعرف على الوجه أيضًا ، ولكن ، اطمئن ، فهو يفعل التعرف على الوجه.




أعتقد أن Eigenface ، الذي تقوم به بالفعل ، هو الطريق للذهاب إذا كنت ترغب في حساب المسافة بين الوجوه. يمكنك تجربة طرق مختلفة مثل Support Vector Machine أو Hidden Markov Model . لقد عثرت على صفحة تسرد الخوارزميات الرئيسية التي يمكن استخدامها للتعرف على الوجوه: Face Recognition Homepage .

أيضا ، عندما تقول "أفضل أداء" ، هل تعني السرعة أو الدقة؟ ما نوع المشكلة التي تواجهك؟ كيف تختلف هي البيانات؟ هل هم في الغالب وجه جبهي أم أنها تشمل ملامح؟




Links