عن المشروع
تعد face_recognition مكتبة بايثون وأداة سطر أوامر مخصصة للتعرف على الوجوه ومعالجتها. تم بناؤها استناداً إلى نماذج التعرف على الوجوه المتطورة من dlib، وتشير وثائق المكتبة إلى تحقيق دقة تصل إلى 99.38% في معيار Labeled Faces in the Wild (LFW). توفر المكتبة واجهة برمجة تطبيقات بسيطة لتحديد مواقع الوجوه، واستخراج ملامح الوجه، وحساب ترميزات الوجه، ومقارنة الوجوه لتحديد هوية الأشخاص.
## الميزات الرئيسية
- العثور على جميع الوجوه في صورة باستخدام `face_locations()`، مع خيار استخدام نموذج شبكة عصبية تلافيفية (CNN) قائم على التعلم العميق لدقة أعلى (يتطلب CUDA لأداء جيد).
- تحديد وتخطيط ملامح الوجه (العينين، الأنف، الفم، الذقن) باستخدام `face_landmarks()`، مما يتيح تطبيقات مثل المكياج الرقمي.
- تحديد هوية الوجوه من خلال مقارنة ترميزات الوجه المكونة من 128 بُعداً والتي يتم إنشاؤها بواسطة `face_encodings()` ومطابقتها باستخدام `compare_faces()`.
- تتضمن برنامجين لسطر الأوامر: `face_recognition` لتحديد الأشخاص المعروفين في مجلد من الصور، و `face_detection` لإخراج إحداثيات مربع الإحاطة الخاص بالوجه.
## التثبيت
- تتطلب Python 3.3+ أو Python 2.7، على نظام macOS أو Linux. نظام Windows غير مدعوم رسمياً ولكن قد يعمل باستخدام تعليمات مقدمة من المجتمع.
- يجب تثبيت `dlib` مع روابط بايثون أولاً (البناء من المصدر على macOS/Ubuntu، أو استخدام جهاز افتراضي مهيأ مسبقاً).
- التثبيت عبر `pip3 install face_recognition` بعد تثبيت `cmake` (على سبيل المثال، `brew install cmake` على macOS).
- تتوفر أدلة إضافية للمنصات مثل Nvidia Jetson Nano، وRaspberry Pi 2+، وFreeBSD (`pkg install graphics/py-face-recognition`)، وWindows.
- يتم توفير صورة Docker لتسهيل النشر على خدمات السحابة مثل Heroku أو AWS.
## مثال على الاستخدام (Python)
```python
import face_recognition
# العثور على الوجوه في صورة
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# الحصول على ملامح الوجه
face_landmarks_list = face_recognition.face_landmarks(image)
# تحديد هوية شخص
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
```
## واجهة سطر الأوامر
- `face_recognition ./known_people/ ./unknown_pictures/` يطبع سطراً واحداً لكل وجه مكتشف، مع اسم الملف والاسم المعرف (أو `unknown_person`).
- `--tolerance 0.54` تجعل المطابقة أكثر صرامة؛ `--show-distance true` تطبع مسافة الوجه المحسوبة.
- `--cpus 4` (أو `-1` لجميع الأنوية) تتيح المعالجة المتوازية على الأنظمة متعددة الأنوية.
- `face_detection ./folder_with_pictures/` يطبع إحداثيات البكسل (أعلى، يمين، أسفل، يسار) لكل وجه تم العثور عليه.
## أمثلة على النصوص البرمجية
يتضمن المستودع العديد من الأمثلة، منها:
- اكتشاف الوجوه باستخدام نموذج HOG الافتراضي ونموذج CNN للتعلم العميق.
- التعرف عبر كاميرا الويب في الوقت الفعلي (نسخ بسيطة وسريعة، تتطلب OpenCV).
- التعرف على الوجوه في ملفات الفيديو وعلى Raspberry Pi باستخدام كاميرا.
- خدمة ويب HTTP باستخدام Flask.
- مصنفات K-nearest neighbors وSVM للتدريب على صور متعددة لكل شخص.
- تمويه الوجوه في فيديو كاميرا الويب المباشر.
## تنبيهات
- تم تدريب نموذج التعرف على البالغين وقد لا يعمل بشكل جيد مع الأطفال عند استخدام عتبة المقارنة الافتراضية 0.6.
- قد تختلف الدقة بين المجموعات العرقية؛ تناقش صفحة الويكي مشاكل الدقة المعروفة.
- للنشر، يتم تضمين Dockerfile وصور Docker مبنية مسبقاً، مع دعم GPU لأنظمة Linux باستخدام برامج تشغيل Nvidia وnvidia-docker.
يُستخدم هذا المشروع على نطاق واسع كغلاف بسيط وعالي المستوى لقدرات التعرف على الوجوه في dlib، وهو مناسب للنماذج الأولية وتطبيقات الإنتاج التي تتطلب اكتشاف الوجوه وتحديد هويتها.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.