يمكنك أيضًا قراءة نسخة مترجمة من هذا الملف باللغة الصينية 简体中文版 أو باللغة الكورية 한국어 أو باللغة اليابانية 日本語.
التعرف على الوجوه والتلاعب بها من Python أو من سطر الأوامر مع أبسط مكتبة التعرف على الوجه في العالم.
تم تصميمه باستخدام التعرف على الوجه على أحدث طراز DLIB مع التعلم العميق. يتمتع النموذج بدقة 99.38 ٪ على الوجوه المسمى في المعيار البري.
يوفر هذا أيضًا أداة سطر أوامر Simple face_recognition
التي تتيح لك التعرف على الوجه على مجلد من الصور من سطر الأوامر!
ابحث عن كل الوجوه التي تظهر في الصورة:
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_locations = face_recognition . face_locations ( image )
احصل على المواقع والخطوط العريضة لعيون كل شخص وأنفه وفمه وذقنه.
import face_recognition
image = face_recognition . load_image_file ( "your_file.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
العثور على ميزات الوجه مفيد للغاية للعديد من الأشياء المهمة. ولكن يمكنك أيضًا استخدامه لأشياء غبية حقًا مثل تطبيق المكياج الرقمي (فكر "Meitu"):
تعرف على من يظهر في كل صورة.
import face_recognition
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 )
يمكنك حتى استخدام هذه المكتبة مع مكتبات Python الأخرى للقيام بالتعرف على وجهك في الوقت الفعلي:
انظر هذا المثال للرمز.
توضيح دفتر جوبتر المشترك الذي تم توزيعه على المستخدم (غير مدعوم رسميًا):
أولاً ، تأكد من تثبيت DLIB بالفعل مع روابط Python:
ثم ، تأكد من تثبيت Cmake:
brew install cmake
أخيرًا ، قم بتثبيت هذه الوحدة من PYPI باستخدام pip3
(أو pip2
لـ Python 2):
pip3 install face_recognition
بدلاً من ذلك ، يمكنك تجربة هذه المكتبة مع Docker ، انظر هذا القسم.
إذا كنت تواجه مشكلة في التثبيت ، فيمكنك أيضًا تجربة VM تم تكوينها مسبقًا.
pkg install graphics/py-face_recognition
على الرغم من عدم دعم Windows رسميًا ، فقد نشر المستخدمون المفيدون إرشادات حول كيفية تثبيت هذه المكتبة:
عند تثبيت face_recognition
، تحصل على برنامجين بسيطين لخط الأوامر:
face_recognition
- التعرف على الوجوه في صورة أو مجلد كامل للصور.face_detection
- ابحث عن وجوه في صورة أو مجلد كامل للصور. face_recognition
يتيح لك أمر face_recognition
التعرف على الوجوه في صورة أو مجلد كامل للصور.
أولاً ، تحتاج إلى تزويد مجلد مع صورة واحدة لكل شخص تعرفه بالفعل. يجب أن يكون هناك ملف صورة واحد لكل شخص مع الملفات المسمى وفقًا لمن هو في الصورة:
بعد ذلك ، تحتاج إلى مجلد ثانٍ مع الملفات التي تريد تحديدها:
ثم في تشغيل Command face_recognition
، يمر في مجلد الأشخاص المعروفين والمجلد (أو الصورة الفردية) مع أشخاص غير معروفين ويخبرك من هو في كل صورة:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
هناك سطر واحد في الإخراج لكل وجه. البيانات مفصولة فاصلة مع اسم الملف واسم الشخص الموجود.
unknown_person
هو وجه في الصورة التي لا تتطابق مع أي شخص في مجلد الأشخاص المعروفين.
face_detection
يتيح لك أمر face_detection
العثور على الموقع (منسقات البكسل) لأي وجوه في صورة.
ما عليك سوى تشغيل Command face_detection
، أو تمرير مجلد من الصور للتحقق (أو صورة واحدة):
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
يطبع سطرًا واحدًا لكل وجه تم اكتشافه. الإحداثيات التي تم الإبلاغ عنها هي الإحداثيات العلوية واليمنى والسفلية واليسرى للوجه (بالبكسل).
إذا كنت تحصل على مباريات متعددة لنفس الشخص ، فقد يكون الأشخاص في صورك يبدو متشابهًا جدًا وأن هناك حاجة إلى قيمة تسامح أقل لجعل مقارنات الوجه أكثر صرامة.
يمكنك القيام بذلك مع المعلمة --tolerance
. قيمة التسامح الافتراضية هي 0.6 والأرقام الأدنى تجعل مقارنات الوجه أكثر صرامة:
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
إذا كنت ترغب في رؤية مسافة الوجه محسوبة لكل مباراة من أجل ضبط إعداد التسامح ، فيمكنك استخدام- --show-distance true
:
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
إذا كنت تريد ببساطة معرفة أسماء الأشخاص في كل صورة ولكن لا تهتم بأسماء الملفات ، فيمكنك القيام بذلك:
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ' , ' -f2
Barack Obama
unknown_person
يمكن التعرف على الوجه بالتوازي إذا كان لديك جهاز كمبيوتر به نوى متعددة من وحدة المعالجة المركزية. على سبيل المثال ، إذا كان نظامك يحتوي على 4 نوى وحدة المعالجة المركزية ، فيمكنك معالجة حوالي 4 أضعاف عدد الصور في نفس الوقت من الوقت باستخدام جميع نوى وحدة المعالجة المركزية الخاصة بك بالتوازي.
إذا كنت تستخدم Python 3.4 أو الأحدث ، فقم بالمرور في المعلمة A --cpus <number_of_cpu_cores_to_use>
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/
يمكنك أيضًا المرور في --cpus -1
لاستخدام جميع نوى وحدة المعالجة المركزية في نظامك.
يمكنك استيراد وحدة face_recognition
ثم معالجة الوجوه بسهولة مع بضعة خطوط من الكود. إنه سهل للغاية!
مستندات API: https://face-recognition.readthedocs.io.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image )
# face_locations is now an array listing the co-ordinates of each face!
انظر هذا المثال لتجربته.
يمكنك أيضًا الاشتراك في نموذج اكتشاف الوجه القائم على التعلم العميق أكثر دقة إلى حد ما.
ملاحظة: مطلوب تسارع GPU (عبر مكتبة CUDA في NVIDIA) للأداء الجيد مع هذا النموذج. ستحتاج أيضًا إلى تمكين دعم CUDA عند المرفق dlib
.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_locations = face_recognition . face_locations ( image , model = "cnn" )
# face_locations is now an array listing the co-ordinates of each face!
انظر هذا المثال لتجربته.
إذا كان لديك الكثير من الصور و GPU ، فيمكنك أيضًا العثور على وجوه على دفعات.
import face_recognition
image = face_recognition . load_image_file ( "my_picture.jpg" )
face_landmarks_list = face_recognition . face_landmarks ( image )
# face_landmarks_list is now an array with the locations of each facial feature in each face.
# face_landmarks_list[0]['left_eye'] would be the location and outline of the first person's left eye.
انظر هذا المثال لتجربته.
import face_recognition
picture_of_me = face_recognition . load_image_file ( "me.jpg" )
my_face_encoding = face_recognition . face_encodings ( picture_of_me )[ 0 ]
# my_face_encoding now contains a universal 'encoding' of my facial features that can be compared to any other picture of a face!
unknown_picture = face_recognition . load_image_file ( "unknown.jpg" )
unknown_face_encoding = face_recognition . face_encodings ( unknown_picture )[ 0 ]
# Now we can see the two face encodings are of the same person with `compare_faces`!
results = face_recognition . compare_faces ([ my_face_encoding ], unknown_face_encoding )
if results [ 0 ] == True :
print ( "It's a picture of me!" )
else :
print ( "It's not a picture of me!" )
انظر هذا المثال لتجربته.
جميع الأمثلة متوفرة هنا.
إذا كنت ترغب في إنشاء قابلة للتنفيذ مستقلة يمكن تشغيلها دون الحاجة إلى تثبيت python
أو face_recognition
، فيمكنك استخدام Pyinstaller. ومع ذلك ، فإنه يتطلب بعض التكوين المخصص للعمل مع هذه المكتبة. انظر هذه المسألة عن كيفية القيام بذلك.
face_recognition
إذا كنت تريد أن تتعلم كيف يعمل موقع الوجه والاعتراف بدلاً من الاعتماد على مكتبة Box Box ، فاقرأ مقالتي.
نظرًا لأن face_recognition
يعتمد على dlib
المكتوب في C ++ ، فقد يكون من الصعب نشر تطبيق ما باستخدامه على مزود استضافة سحابة مثل Heroku أو AWS.
لتسهيل الأمور ، هناك مثال Dockerfile في هذا الريبو يوضح كيفية تشغيل تطبيق تم تصميمه باستخدام face_recognition
في حاوية Docker. مع ذلك ، يجب أن تكون قادرًا على النشر في أي خدمة تدعم صور Docker.
يمكنك تجربة صورة Docker محليًا عن طريق التشغيل: docker-compose up --build
هناك أيضا العديد من صور Docker مسبقة.
يمكن لمستخدمي Linux مع GPU (برامج التشغيل> = 384.81) و Nvidia-Docker المثبتين تشغيل المثال على GPU: افتح ملف Docker-corm.yml وعدم التخلص من dockerfile: Dockerfile.gpu
ووقت runtime: nvidia
.
إذا واجهت مشاكل ، يرجى قراءة قسم الأخطاء الشائعة في الويكي قبل تقديم مشكلة github.