Face Detection هي تقنية رؤية حاسوبية لإيجاد وتحديد مواقع الوجوه البشرية في الصور الرقمية وتدفقات الفيديو. على عكس Face Recognition (التعرف على الهوية)، يحدد Face Detection فقط وجود الوجه وحدوده — bounding box و keypoints (العينين، الأنف، الفم). في تطوير التطبيقات المحمولة، يُستخدم Face Detection في ML Kit و ARKit و Vision Framework و OpenCV. وفقًا Google ML Kit، 2025، يتم كشف الوجوه في 5–15 مللي ثانية على الأجهزة الحديثة بدقة 98%.
الرئيسية
Face Detection هي مهمة رؤية حاسوبية لتحديد وجود وموقع الوجوه البشرية في الصورة. يقوم الخوارزم بإرجاع bounding box (مستطيل حول الوجه) و confidence score (احتمالية أن يكون وجهًا). الخوارزميات الحديثة تُرجع أيضًا facial landmarks — النقاط الرئيسية (العينين، الحاجبين، الأنف، الفم، محيط الوجه). Face Detection هي الخطوة الأولى للعديد من مهام التعلم الآلي: التعرف على الأشخاص، مرشحات الواقع المعزز، تحليل الانتباه.
تاريخ الخوارزميات بدأ مع Viola-Jones (2001) — سلسلة من ميزات Haar على CPU. في العقد 2010، هيمنت HOG + SVM (Histogram of Oriented Gradients). منذ 2016، جميع الخوارزميات الحديثة تعتمد على الشبكات العصبية التلافيفية (CNN): MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. خوارزميات CNN على GPU توفر دقة 95–99% مقابل 85–90% للطرق التقليدية. وفقًا لمعيار WiderFace (2025)، يحقق RetinaFace mAP بنسبة 96.3% على أصعب مجموعة فرعية.
MTCNN (Multi-Task Cascaded CNN) هو كاشف تقليدي ثلاثي المراحل: P-Net (شبكة الاقتراح) تجد المرشحين، R-Net (شبكة التصفية) تصفيهم، O-Net (شبكة المخرجات) تحسن bounding box وتخرج landmarks. يعمل MTCNN على CPU بسرعة 30–50 مللي ثانية لكل إطار بدقة 640x480. للأجهزة المحمولة، يوفر MTCNN توازنًا مثاليًا بين السرعة والدقة بدون GPU.
| الخوارزم | الدقة (WiderFace) | السرعة (640x480) | المنصة |
|---|---|---|---|
| RetinaFace | 96.3% | 15 مللي ثانية (GPU) | Android, iOS |
| MTCNN | 91.2% | 30–50 مللي ثانية (CPU) | متعددة المنصات |
| ML Kit | 98.0% | 5–15 مللي ثانية (GPU/NPU) | Android, iOS |
| OpenCV Haar | 82.5% | 5–10 مللي ثانية (CPU) | متعددة المنصات |
Face Detection في الوقت الفعلي يتطلب 30+ إطارًا في الثانية للفيديو. هذا قابل للتحقيق على الهواتف الذكية الحديثة بفضل NPU (وحدة المعالجة العصبية) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU. تؤدي NPU الكشف في 2–5 مللي ثانية باستهلاك طاقة 50–100 ملي واط، بينما تستهلك GPU 500–2000 ملي واط. للكشف المستمر (الكاميرا تعمل دائمًا)، NPU هي الخيار العملي الوحيد دون ارتفاع حرارة الجهاز.
ML Kit Face Detection هو أكثر SDK شيوعًا لكشف الوجوه على الأجهزة المحمولة. يقدم ML Kit وضعين: وضع المحيط (468 نقطة لمحيط الوجه للتراكب الدقيق للأقنعة) ووضع التصنيف (كشف المشاعر: ابتسامة، عيون مفتوحة، فم مفتوح). يتم دمج الأوضاع في FaceDetectorOptions. يستخدم ML Kit الشبكة العصبية MobileNetV2-SSD من Google مع تحسين عبر NNAPI/GPU Delegate.
إعداد ML Kit Face Detection: setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (النقاط الرئيسية), setContourMode (نقاط المحيط), setClassificationMode (المشاعر). لأقصى سرعة استخدم FAST + LANDMARKS_ONLY + بدون محيط. لمرشحات AR — ACCURATE + ALL_CONTOURS. وفقًا لـ Google (2025)، وضع FAST يعطي دقة 98% عند 5 مللي ثانية، ACCURATE — 99% عند 15 مللي ثانية.
// ML Kit Face Detection with contours
val options = FaceDetectorOptions.Builder()
.setContourMode(FaceDetectorOptions.ContourMode.ALL)
.setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
.setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
.enableTracking()
.build()
val detector = FaceDetection.getClient(options)
detector.process(inputImage)
.addOnSuccessListener { faces ->
faces.forEach { face ->
val trackingId = face.trackingId
val smile = face.smilingProbability
val leftEyeOpen = face.leftEyeOpenProbability
}
}
Face Tracking في ML Kit — ميزة فريدة لتدفقات الفيديو. يتم تعيين tracking ID (رقم صحيح) لكل وجه مكتشف، والذي يظل بين الإطارات. هذا يسمح بربط كائنات AR بوجه معين دون إعادة كشف. يستخدم المتتبع Optical Flow ويحتفظ بالمعرف حتى مع إغلاق جزئي للوجه. يتم إعادة تعيين tracking ID عندما يغادر الوجه الإطار لأكثر من ثانية واحدة.
Apple Vision Framework هو إطار عمل أصلي لنظام iOS لـ Face Detection يعمل عبر Core ML على Apple Neural Engine. يوفر Vision: VNDetectFaceRectanglesRequest (bounding box فقط) و VNDetectFaceLandmarksRequest (مع نقاط المحيط). Vision Framework مضمن في iOS منذ iOS 11 ولا يتطلب SDK إضافية — إنه جزء من Foundation.
مزايا Vision Framework: اعتماد صفري على مكتبات الطرف الثالث، يعمل عبر Apple Neural Engine (ANE) على رقائق A12+، معالجة تلقائية لاتجاه الصورة عبر exifOrientation، دعم CIDetectorAccuracy لضبط السرعة/الدقة. يُرجع Vision: VNFaceObservation مع bounding box (إحداثيات طبيعية 0..1) و landmarks (VNFaceLandmarkRegion2D).
Vision مقابل ML Kit على iOS: Vision أسرع على الأجهزة القديمة (A12–A15) لأنه يستخدم محركات Apple العصبية الأصلية. يستخدم ML Kit نماذج Google وقد يكون أكثر دقة على الزوايا المعقدة (الملف الجانبي، الإمالة القوية). للكشف البسيط (كاميرا، صور) — استخدم Vision. لمرشحات AR وأقنعة المحيط — استخدم ML Kit (468 نقطة مقابل 76 نقطة في Vision).
import Vision
let request = VNDetectFaceRectanglesRequest { request, error in
guard let observations = request.results as? [VNFaceObservation] else { return }
for face in observations {
let rect = face.boundingBox // normalized 0..1
let confidence = face.confidence
}
}
let handler = VNImageRequestHandler(
cgImage: cgImage, orientation: .up, options: [:]
)
try handler.perform([request])
VNDetectFaceLandmarksRequest هو الإصدار الموسع للنقاط الرئيسية. يُرجع VNFaceLandmarkRegion2D لكل مجموعة نقاط: leftEye, rightEye, nose, faceContour, innerLips, outerLips. كل مجموعة عبارة عن مصفوفة من CGPoint (طبيعية). لا يُرجع Vision 468 نقطة مثل ML Kit — فقط 76 نقطة رئيسية. للأقنعة الدقيقة للوجه، ML Kit أفضل؛ للكشف الأساسي، Vision كافٍ.
OpenCV Haar Cascade هو خوارزم Face Detection تقليدي يعتمد على سلسلة من ميزات Haar (Viola-Jones, 2001). على الرغم من قدمه، لا يزال Haar Cascade يُستخدم في المشاريع محدودة الموارد: Raspberry Pi, أجهزة IoT, الأنظمة المضمنة. لا يتطلب الخوارزم GPU أو NPU — يعمل على أي CPU بسرعة 5–15 مللي ثانية لكل إطار بدقة VGA.
LBP Cascade (Local Binary Patterns) هو بديل لـ Haar Cascade في OpenCV. LBP أسرع (2–5 مللي ثانية) وأقل حساسية للإضاءة، ولكنه ينتج نتائج إيجابية كاذبة أكثر. Haar أكثر دقة (85–90% مقابل 80–85% لـ LBP)، ولكنه حساس للوهج والظلال. لتطبيقات المحمول، OpenCV Face Detection أقل شأنًا من طرق الشبكات العصبية في الدقة، لكنه يتفوق في التوافق — يعمل على أي جهاز.
// OpenCV Face Detection via CascadeClassifier
val cascadeFile = File(context.filesDir, "haarcascade_frontalface_default.xml")
val faceDetector = CascadeClassifier(cascadeFile.absolutePath)
val gray = Mat()
Imgproc.cvtColor(colorFrame, gray, Imgproc.COLOR_RGBA2GRAY)
val faces = MatOfRect()
faceDetector.detectMultiScale(gray, faces)
faces.toList().forEach { rect ->
// rect = face bounding box
}
قيود OpenCV: معدل إيجابية كاذبة عالٍ (حتى 15%)، أداء ضعيف مع زوايا الملف الجانبي (>30° — تنخفض الدقة إلى 50%)، عدم وجود landmarks بدون نموذج إضافي، لا تتبع بين الإطارات. لتطبيقات المحمول الحديثة، OpenCV Face Detection هو حل احتياطي للأجهزة بدون Google Play Services (Huawei, Amazon Fire). للسيناريوهات الرئيسية — استخدم ML Kit أو Vision.
Face Detection — تحديد وجود وموقع الوجه في الصورة. النتيجة: bounding box ونقاط رئيسية. Face Recognition — التعرف على شخص من خلال وجهه: تحديد أن هذا الوجه ينتمي لفرد معين. يستخدم Face Recognition embeddings (متجه أرقام يمثل وجهًا) ويقارنها بقاعدة بيانات الوجوه المعروفة. Face Detection هي خطوة أولى إلزامية لـ Face Recognition.
تقنيات Face Recognition: FaceNet (Google, 2015) — triplet loss لتدريب embeddings بحجم 128–512 قيمة عائمة، ArcFace (2019) — additive angular margin loss، أفضل دقة (99.83% على LFW). لتطبيقات المحمول، يتطلب Face Recognition نموذج TFLite مخصص — لا يوفر ML Kit API جاهز للتعرف على الهوية (فقط الكشف).
الخصوصية على الأجهزة المحمولة: Face Detection آمن — لا يخزن بيانات المستخدم. يتطلب Face Recognition تخزين embeddings أو صور للمقارنة. تطلب Apple موافقة صريحة من المستخدم على Face Recognition وتحظر استخدامه للإعلانات. Google ML Kit لا يتضمن Face Recognition عن قصد لتجنب مخاطر الخصوصية. للكشف بدون تحديد هوية — لا توجد قيود.
| الخاصية | Face Detection | Face Recognition |
|---|---|---|
| النتيجة | أين الوجه في الصورة | لمن ينتمي الوجه |
| الخوارزميات | MTCNN, RetinaFace, ML Kit | FaceNet, ArcFace, DeepFace |
| التخزين | غير مطلوب | قاعدة بيانات embeddings |
| الخصوصية | مخاطر منخفضة | قيود GDPR, CCPA |
Face Liveness Detection — تحقق إضافي للتأكد من أن الوجه حقيقي (ليس صورة/فيديو). يستخدم تحليل حركة العين (blink detection)، التعابير الدقيقة، خريطة العمق (كاميرا ثلاثية الأبعاد). Liveness Detection إلزامية للتطبيقات المصرفية والدفع. لا يحتوي ML Kit على liveness مدمج — استخدم نموذجًا مخصصًا أو Google Play Integrity API للتحقق.
مرشحات AR والأقنعة — التطبيق الأكثر شيوعًا لـ Face Detection. بناءً على نقاط محيط الوجه (468 نقطة)، يتم تراكب أقنعة ثلاثية الأبعاد، قبعات، نظارات، شوارب. ML Kit Face Detection + SceneKit (iOS) أو Filament (Android) ينشئ تجربة AR في الوقت الفعلي. Snapchat و Instagram يستخدمان كاشفاتهما الخاصة القائمة على MobileNet + MTCNN. لمرشحات AR المخصصة، ML Kit ومحرك ثلاثي الأبعاد كافيان.
محررات الصور والتنقيح — يحدد Face Detection منطقة الوجه للتصحيح التلقائي: موازنة لون البشرة، إزالة العيوب، تحسين العيون والأسنان. يوفر OpenCV + ML Kit Face Detection إحداثيات لـ Selective Gaussian Blur (تنعيم البشرة) وتباين العيون. التطبيقات الواقعية — Facetune, BeautyPlus, YouCam Makeup.
مراقبة الانتباه — تحديد اتجاه النظر (gaze detection). يُرجع Face Detection bounding box و landmarks للعينين. يحدد موضع حدقة العين بالنسبة للعين أين ينظر المستخدم: إلى الشاشة، يسارًا، يمينًا، لأعلى. يُستخدم في التعليم الإلكتروني (مراقبة أن الطالب يشاهد المحاضرة)، الإعلانات (مقاييس الانتباه)، مساعدي السائقين (مراقبة التعب).
// ARKit + Vision for AR filter
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
guard let face = req.results?.first as? VNFaceObservation else { return }
if let leftEye = face.landmarks?.leftEye {
// AR object overlay on left eye
}
}
let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}
الطب والعافية — يُستخدم Face Detection لتحليل عدم تناسق الوجه (تشخيص الاضطرابات العصبية)، تقدير النبض من الاهتزازات الدقيقة للجلد (تصوير التحجم الضوئي عبر الكاميرا)، تحديد ترطيب البشرة. يوفر ML Kit Face Detection + OpenCV دقة كافية للفحص الأولي بدون شهادة طبية. للطب الإنتاجي، مطلوب شهادة FDA/CE.
الأسئلة المتكررة
Face Detection — يجد وجهًا في الصورة ويُرجع حدوده (إحداثيات المستطيل). Face Recognition — يحدد لمن ينتمي الوجه من خلال المقارنة مع قاعدة بيانات الوجوه المعروفة. الكشف هو الخطوة الأولى للتعرف. ML Kit و Vision Framework يوفران فقط Face Detection. للتعرف، تحتاج نموذج TFLite مخصص (FaceNet, ArcFace) + قاعدة بيانات embeddings على الجهاز.
ML Kit Face Detection هو الأسرع على الأجهزة الحديثة (5–15 مللي ثانية لكل إطار) بفضل NNAPI/GPU Delegate. Apple Vision Framework أسرع على iOS (A12+ عبر ANE) — 3–10 مللي ثانية. OpenCV Haar Cascade — 5–10 مللي ثانية على CPU، لكن دقة أقل (82% مقابل 98% لـ ML Kit). على الأجهزة المزودة بـ NPU (Snapdragon 8 Gen 3, Apple A17 Pro) يقوم ML Kit و Vision بالكشف في 2–5 مللي ثانية.
ML Kit و Vision Framework يعملان بشكل صحيح مع النظارات (بما في ذلك الداكنة) والكمامات الطبية. تنخفض دقة الكشف مع الكمامة من 98% إلى 90–92%، لكن الوجه يظل مكتشفًا من خلال الجزء العلوي (العينين، الحاجبين، الجبهة). تصبح نقاط المحيط (محيط الوجه) أقل دقة — للكمامات استخدم وضع التصنيف فقط (ابتسامة، عيون مفتوحة) بدون محيط.
نعم، Face Detection في الوقت الفعلي مدعوم من جميع SDK الحديثة. ML Kit — حتى 60 إطارًا في الثانية بدقة 480p عبر CameraX Analyzer. Apple Vision — حتى 30 إطارًا في الثانية على iOS عبر AVFoundation. للوقت الفعلي استخدم وضع FAST، وقلل الدقة إلى 480p، وفعل face tracking (ML Kit) للحفاظ على المعرف بين الإطارات دون إعادة كشف كل إطار.
لا، جميع SDK الحديثة لـ Face Detection تعمل بالكامل على الجهاز. يقوم ML Kit بتنزيل النموذج عبر Google Play Services عند التشغيل الأول (إذا تم تحديد وضع التحميل)، وبعد ذلك يعمل دون اتصال. Apple Vision Framework — مدمج في iOS، لا يتطلب الإنترنت. OpenCV — بدون اتصال بالكامل. لواجهات برمجة التطبيقات السحابية (Google Cloud Vision, AWS Rekognition) الإنترنت مطلوب، لكنها لا تُستخدم في تطبيقات المحمول للكشف في الوقت الفعلي.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.