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 เป็นขั้นตอนแรกสำหรับงาน ML มากมาย: การรู้จำบุคคล, ฟิลเตอร์ AR, การวิเคราะห์ความสนใจ
ประวัติของอัลกอริทึม เริ่มต้นด้วย 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 (Proposal Network) ค้นหาผู้สมัคร, R-Net (Refine Network) กรองพวกมัน, O-Net (Output Network) ปรับแต่ง 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+ FPS สำหรับวิดีโอ ซึ่งทำได้บนสมาร์ทโฟนสมัยใหม่ด้วย NPU (Neural Processing Unit) — 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 และคง ID ไว้แม้ใบหน้าถูกบดบังบางส่วน tracking ID จะถูกรีเซ็ตเมื่อใบหน้าออกจากเฟรมนานกว่า 1 วินาที
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 vs ML Kit บน iOS: Vision เร็วกว่าบนอุปกรณ์รุ่นเก่า (A12–A15) เพราะใช้ Apple Neural Engine ดั้งเดิม 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 ค่า float, 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 — การตรวจสอบเพิ่มเติมเพื่อให้แน่ใจว่าใบหน้าเป็นของจริง (ไม่ใช่รูปภาพ/วิดีโอ) ใช้การวิเคราะห์การเคลื่อนไหวของดวงตา (การตรวจจับการกระพริบตา), สีหน้าเล็กน้อย, แผนที่ความลึก (กล้อง 3 มิติ) Liveness Detection จำเป็นสำหรับแอปพลิเคชันธนาคารและการชำระเงิน ML Kit ไม่มี liveness ในตัว — ใช้โมเดลแบบกำหนดเองหรือ Google Play Integrity API สำหรับการตรวจสอบ
ฟิลเตอร์ AR และมาสก์ — การใช้งาน Face Detection ที่ได้รับความนิยมมากที่สุด จากจุดเส้นขอบใบหน้า (468 จุด) จะวางซ้อนมาสก์ 3 มิติ, หมวก, แว่นตา, หนวด ML Kit Face Detection + SceneKit (iOS) หรือ Filament (Android) สร้างประสบการณ์ AR แบบเรียลไทม์ Snapchat และ Instagram ใช้ตัวตรวจจับของตัวเองบนพื้นฐาน MobileNet + MTCNN สำหรับฟิลเตอร์ AR แบบกำหนดเอง ML Kit และเอ็นจิ้น 3 มิติก็เพียงพอ
โปรแกรมแก้ไขภาพและรีทัช — Face Detection ระบุพื้นที่ใบหน้าสำหรับการแก้ไขอัตโนมัติ: การปรับสมดุลสีผิว, การลบจุดบกพร่อง, การปรับปรุงดวงตาและฟัน OpenCV + ML Kit Face Detection ให้พิกัดสำหรับ Selective Gaussian Blur (การทำให้ผิวเรียบเนียน) และคอนทราสต์ดวงตา แอปพลิเคชันจริง — Facetune, BeautyPlus, YouCam Makeup
การตรวจสอบความสนใจ — การกำหนดทิศทางการมอง (gaze detection) Face Detection คืนค่า bounding box และ landmarks ของดวงตา ตำแหน่งของรูม่านตาสัมพันธ์กับดวงตากำหนดว่าผู้ใช้กำลังมองที่ไหน: จอภาพ, ซ้าย, ขวา, บน ใช้ใน e-learning (ตรวจสอบว่านักเรียนดูการบรรยายหรือไม่), การโฆษณา (เมตริกความสนใจ), ผู้ช่วยขับขี่ (ตรวจสอบความเหนื่อยล้า)
// 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 ใช้สำหรับวิเคราะห์ความไม่สมมาตรของใบหน้า (การวินิจฉัยความผิดปกติทางระบบประสาท), การประมาณชีพจรจากการสั่นสะเทือนเล็กๆ ของผิวหนัง (photoplethysmography ผ่านกล้อง), การกำหนดความชุ่มชื้นของผิวหนัง 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 FPS ที่ 480p ผ่าน CameraX Analyzer Apple Vision — สูงถึง 30 FPS บน iOS ผ่าน AVFoundation สำหรับเรียลไทม์ ให้ใช้โหมด FAST, ลดความละเอียดเป็น 480p, และเปิด face tracking (ML Kit) เพื่อเก็บ ID ระหว่างเฟรมโดยไม่ต้องตรวจจับแต่ละเฟรมซ้ำ
ไม่, SDK Face Detection มือถือสมัยใหม่ทั้งหมดทำงานบนอุปกรณ์อย่างสมบูรณ์ ML Kit ดาวน์โหลดโมเดลผ่าน Google Play Services ในครั้งแรกที่เริ่มใช้ (หากเลือกโหมดดาวน์โหลด) หลังจากนั้นทำงานออฟไลน์ Apple Vision Framework — สร้างใน iOS, ไม่ต้องใช้อินเทอร์เน็ต OpenCV — ออฟไลน์สมบูรณ์ สำหรับ API บนคลาวด์ (Google Cloud Vision, AWS Rekognition) ต้องการอินเทอร์เน็ต แต่ไม่ได้ใช้ในแอปมือถือสำหรับการตรวจจับแบบเรียลไทม์
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ