تتيح لك مهمة "أداة رصد الوجوه" في MediaPipe رصد الوجوه في صورة أو فيديو. يمكنك استخدام هذه المهمة لتحديد مواقع الوجوه وملامح الوجه ضمن إطار معيّن. تستخدم هذه المهمة نموذج تعلُّم آلي يعمل مع صور فردية أو بث مستمر من الصور. تعرض المهمة مواقع الوجوه، بالإضافة إلى النقاط الرئيسية التالية في الوجه: العين اليسرى والعين اليمنى وطرف الأنف والفم والنتوء أمام الأذن اليسرى والنتوء أمام الأذن اليمنى.
توضّح لك هذه التعليمات كيفية استخدام "أداة رصد الوجوه" لتطبيقات الويب وتطبيقات JavaScript. لمزيد من المعلومات حول إمكانات هذه المهمة ونماذجها وخيارات الضبط ، يُرجى الاطّلاع على النظرة العامة.
مثال للرمز
يوفّر رمز المثال الخاص بـ "أداة رصد الوجوه" عملية تنفيذ كاملة لهذه المهمة في JavaScript كمرجع لك. يساعدك هذا الرمز في اختبار هذه المهمة والبدء في إنشاء تطبيقك الخاص لرصد الوجوه. يمكنك عرض مثال "أداة رصد الوجوه" وتشغيله وتعديله باستخدام متصفّح الويب فقط.
الإعداد
يوضّح هذا القسم الخطوات الرئيسية لإعداد بيئة التطوير خصيصًا لاستخدام "أداة رصد الوجوه". للحصول على معلومات عامة حول إعداد بيئة تطوير الويب وJavaScript، بما في ذلك متطلبات إصدار النظام الأساسي، يُرجى الاطّلاع على دليل الإعداد للويب.
حِزم JavaScript
يتوفّر رمز "أداة رصد الوجوه" من خلال حزمة MediaPipe @mediapipe/tasks-vision
NPM. يمكنك
العثور على هذه المكتبات وتنزيلها باتّباع التعليمات الواردة في دليل إعداد النظام الأساسي
.
يمكنك تثبيت الحِزم المطلوبة من خلال NPM باستخدام الأمر التالي:
npm install @mediapipe/tasks-vision
إذا أردت استيراد رمز المهمة من خلال خدمة شبكة توصيل محتوى (CDN)، أضِف الرمز التالي في العلامة `<head>` في ملف HTML:
<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.mjs"
crossorigin="anonymous"></script>
</head>
الطراز
تتطلّب مهمة "أداة رصد الوجوه" في MediaPipe نموذجًا مدرَّبًا متوافقًا مع هذه المهمة. لمزيد من المعلومات حول النماذج المدرَّبة المتاحة لـ "أداة رصد الوجوه"، يُرجى الاطّلاع على قسم "النماذج" في النظرة العامة على المهمة.
اختَر نموذجًا ونزِّله، ثم خزِّنه في دليل مشروعك:
<dev-project-root>/app/shared/models/
إنشاء المهمة
استخدِم إحدى دوال createFrom...() في "أداة رصد الوجوه" لإعداد المهمة لتشغيل عمليات الاستنتاج. استخدِم الدالة createFromModelPath() مع مسار نسبي أو مطلق إلى ملف النموذج المدرَّب.
إذا كان نموذجك محمّلاً في الذاكرة، يمكنك استخدام الطريقة createFromModelBuffer().
يوضّح مثال الرمز البرمجي أدناه كيفية استخدام الدالة createFromOptions() لإعداد المهمة. تتيح لك الدالة createFromOptions تخصيص "أداة رصد الوجوه" باستخدام خيارات الضبط. لمزيد من المعلومات حول خيارات الضبط
، يُرجى الاطّلاع على خيارات الضبط.
يوضّح الرمز البرمجي التالي كيفية إنشاء المهمة وضبطها باستخدام خيارات مخصّصة:
const vision = await FilesetResolver.forVisionTasks(
// path/to/wasm/root
"https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
const facedetector = await FaceDetector.createFromOptions(
vision,
{
baseOptions: {
modelAssetPath: "path/to/model"
},
runningMode: runningMode
});
خيارات الضبط
تتضمّن هذه المهمة خيارات الضبط التالية لتطبيقات الويب وJavaScript:
| اسم الخيار | الوصف | نطاق القيمة | القيمة التلقائية |
|---|---|---|---|
option_var_1_web_js |
يضبط وضع التشغيل للمهمة. هناك وضعان:
modes: IMAGE: الوضع المخصّص لإدخالات الصور الفردية VIDEO: الوضع المخصّص للإطارات التي تم فك ترميزها من فيديو أو بث مباشر لبيانات الإدخال، مثل البيانات الواردة من كاميرا |
{IMAGE, VIDEO} |
IMAGE |
minDetectionConfidence |
الحد الأدنى لنتيجة الثقة لرصد الوجه كي يُعتبر ناجحًا | Float [0,1] |
0.5 |
minSuppressionThreshold |
الحد الأدنى لغير الحد الأقصى من عتبة الإخفاء لرصد الوجه كي يُعتبر متداخلاً | Float [0,1] |
0.3 |
إعداد البيانات
يمكن لـ "أداة رصد الوجوه" رصد الوجوه في الصور بأي تنسيق متوافق مع المتصفّح المضيف. تعالج المهمة أيضًا عملية المعالجة المسبقة لبيانات الإدخال، بما في ذلك تغيير الحجم والتدوير وتسوية القيم. لرصد الوجوه في الفيديوهات، يمكنك استخدام واجهة برمجة التطبيقات لمعالجة إطار واحد بسرعة في كل مرة، باستخدام الطابع الزمني للإطار لتحديد وقت ظهور الوجوه داخل الفيديو.
تشغيل المهمة
تستخدم "أداة رصد الوجوه" الطريقتَين detect() (مع وضع التشغيل image) وdetectForVideo() (مع وضع التشغيل video) لتشغيل عمليات الاستنتاج. تعالج المهمة البيانات وتحاول رصد الوجوه، ثم تعرض النتائج.
يتم تشغيل طلبات الطريقتَين detect() وdetectForVideo() في "أداة رصد الوجوه" بشكل متزامن وتحظر سلسلة التعليمات الخاصة بواجهة المستخدم. إذا رصدت وجوهًا في إطارات الفيديو من كاميرا الجهاز، يحظر كل رصد سلسلة التعليمات الرئيسية. يمكنك منع ذلك من خلال تنفيذ عاملي ويب لتشغيل الطريقتَين detect() وdetectForVideo() على سلسلة تعليمات أخرى.
يوضّح الرمز البرمجي التالي كيفية تنفيذ المعالجة باستخدام نموذج المهمة:
صورة
const image = document.getElementById("image") as HTMLImageElement; const faceDetectorResult = faceDetector.detect(image);
فيديو
await faceDetector.setOptions({ runningMode: "video" }); let lastVideoTime = -1; function renderLoop(): void { const video = document.getElementById("video"); if (video.currentTime !== lastVideoTime) { const detections = faceDetector.detectForVideo(video); processResults(detections); lastVideoTime = video.currentTime; } requestAnimationFrame(() => { renderLoop(); }); }
للحصول على عملية تنفيذ أكثر اكتمالاً لتشغيل مهمة "أداة رصد الوجوه"، يُرجى الاطّلاع على الـ مثال.
التعامل مع النتائج وعرضها
تنشئ "أداة رصد الوجوه" عنصر نتيجة لرصد الوجوه لكل عملية رصد. يحتوي عنصر النتيجة على الوجوه بإحداثيات الصورة والوجوه بإحداثيات العالم.
في ما يلي مثال على بيانات الإخراج من هذه المهمة:
FaceDetectionResult:
Detections:
Detection #0:
BoundingBox:
origin_x: 126
origin_y: 100
width: 463
height: 463
Categories:
Category #0:
index: 0
score: 0.9729152917861938
NormalizedKeypoints:
NormalizedKeypoint #0:
x: 0.18298381567001343
y: 0.2961040139198303
NormalizedKeypoint #1:
x: 0.3302789330482483
y: 0.29289937019348145
... (6 keypoints for each face)
Detection #1:
BoundingBox:
origin_x: 616
origin_y: 193
width: 430
height: 430
Categories:
Category #0:
index: 0
score: 0.9251380562782288
NormalizedKeypoints:
NormalizedKeypoint #0:
x: 0.6151331663131714
y: 0.3713381886482239
NormalizedKeypoint #1:
x: 0.7460576295852661
y: 0.38825345039367676
... (6 keypoints for each face)
تعرض الصورة التالية تمثيلاً مرئيًا لنتائج المهمة:
للاطّلاع على الصورة بدون مربّعات الإحاطة، يُرجى الاطّلاع على الصورة الأصلية.
يوضّح رمز المثال الخاص بـ "أداة رصد الوجوه" كيفية عرض الـ نتائج التي يتم إرجاعها من المهمة، يُرجى الاطّلاع على الـ مثال