งานตรวจจับใบหน้าของ MediaPipe ช่วยให้คุณตรวจจับใบหน้าในรูปภาพหรือวิดีโอได้ คุณสามารถใช้ งานนี้เพื่อระบุตำแหน่งใบหน้าและลักษณะใบหน้าภายในเฟรมได้ งานนี้ใช้โมเดล แมชชีนเลิร์นนิง (ML) ที่ทำงานกับรูปภาพเดี่ยวหรือสตรีมรูปภาพ ต่อเนื่อง เอาต์พุตของงานคือตำแหน่งใบหน้าพร้อมกับจุดสำคัญบนใบหน้าต่อไปนี้ ตาซ้าย ตาขวา ปลายจมูก ปาก ติ่งหูซ้าย และ ติ่งหูขวา
เริ่มต้นใช้งาน
เริ่มใช้ฟีเจอร์นี้โดยทำตามคำแนะนำในการติดตั้งใช้งานรายการใดรายการหนึ่งต่อไปนี้สำหรับแพลตฟอร์มเป้าหมาย คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานพื้นฐานของงานนี้ ซึ่งรวมถึงโมเดลที่แนะนำและตัวอย่างโค้ดพร้อมตัวเลือกการกำหนดค่าที่แนะนำ
- Android - ตัวอย่าง โค้ด - คู่มือ
- Python - ตัวอย่าง โค้ด - คู่มือ
- เว็บ - ตัวอย่าง โค้ด - คู่มือ
- iOS - ตัวอย่าง โค้ด - คู่มือ
รายละเอียดงาน
ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่า ของงานนี้
ฟีเจอร์
- การประมวลผลรูปภาพอินพุต - การประมวลผลรวมถึงการหมุนรูปภาพ การปรับขนาด การทําให้เป็นมาตรฐาน และการแปลงพื้นที่สี
- เกณฑ์คะแนน - กรองผลลัพธ์ตามคะแนนการคาดการณ์
| อินพุตของงาน | เอาต์พุตของงาน |
|---|---|
เครื่องตรวจจับใบหน้ารับอินพุตเป็นข้อมูลประเภทใดประเภทหนึ่งต่อไปนี้
|
เครื่องมือตรวจหาใบหน้าจะแสดงผลลัพธ์ต่อไปนี้
|
ตัวเลือกการกำหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้
| ชื่อตัวเลือก | คำอธิบาย | ช่วงค่า | ค่าเริ่มต้น |
|---|---|---|---|
running_mode |
ตั้งค่าโหมดการทำงานสำหรับงาน มี 3 โหมด
ดังนี้ รูปภาพ: โหมดสำหรับอินพุตรูปภาพเดียว วิดีโอ: โหมดสำหรับเฟรมที่ถอดรหัสแล้วของวิดีโอ LIVE_STREAM: โหมดสำหรับไลฟ์สดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ ต้องเรียกใช้ resultListener เพื่อตั้งค่า Listener ให้รับผลลัพธ์แบบไม่พร้อมกัน |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
min_detection_confidence |
คะแนนความเชื่อมั่นขั้นต่ำสำหรับการตรวจหาใบหน้าที่ถือว่าสำเร็จ | Float [0,1] |
0.5 |
min_suppression_threshold |
เกณฑ์การระงับที่ไม่ใช่ค่าสูงสุดขั้นต่ำสำหรับการตรวจหาใบหน้าเพื่อให้ถือว่าซ้อนทับกัน | Float [0,1] |
0.3 |
result_callback |
ตั้งค่า Listener ผลลัพธ์เพื่อรับผลการตรวจหา
แบบไม่พร้อมกันเมื่อเครื่องตรวจจับใบหน้าอยู่ในโหมดไลฟ์สด
ใช้ได้เฉพาะเมื่อตั้งค่าโหมดการวิ่งเป็น LIVE_STREAM เท่านั้น |
N/A |
Not set |
โมเดล
โมเดลการตรวจจับใบหน้าอาจแตกต่างกันไปตามกรณีการใช้งานที่ต้องการ เช่น การตรวจจับระยะใกล้และระยะไกล นอกจากนี้ โมเดลมักจะมีการแลกเปลี่ยน ระหว่างประสิทธิภาพ ความแม่นยำ ความละเอียด และข้อกำหนดด้านทรัพยากร และใน บางกรณีก็มีฟีเจอร์เพิ่มเติมด้วย
โมเดลที่แสดงในส่วนนี้เป็นโมเดลที่ดัดแปลงมาจาก BlazeFace ซึ่งเป็นเครื่องตรวจจับใบหน้าที่มีน้ำหนักเบาและ แม่นยำซึ่งได้รับการเพิ่มประสิทธิภาพสำหรับการอนุมาน GPU บนอุปกรณ์เคลื่อนที่ โมเดล BlazeFace เหมาะสำหรับแอปพลิเคชันต่างๆ เช่น การประมาณคีย์พอยต์ใบหน้า 3 มิติ การแยกประเภทการแสดงออก และการแบ่งกลุ่มภูมิภาคใบหน้า BlazeFace ใช้เครือข่ายการแยกฟีเจอร์ที่มีน้ำหนักเบา ซึ่งคล้ายกับ MobileNetV1/V2
BlazeFace (ระยะสั้น)
โมเดลน้ำหนักเบาสำหรับตรวจจับใบหน้าเดียวหรือหลายใบหน้าภายในรูปภาพที่คล้ายเซลฟี จากกล้องสมาร์ทโฟนหรือเว็บแคม โมเดลได้รับการเพิ่มประสิทธิภาพสำหรับ รูปภาพจากกล้องหน้าของโทรศัพท์ในระยะใกล้ สถาปัตยกรรมโมเดลใช้เทคนิคเครือข่าย Convolutional ของ Single Shot Detector (SSD) ที่มีตัวเข้ารหัส ที่กำหนดเอง ดูข้อมูลเพิ่มเติมได้ในงานวิจัยเกี่ยวกับ Single Shot MultiBox Detector
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการหาปริมาณ | การ์ดโมเดล | เวอร์ชัน |
|---|---|---|---|---|
| BlazeFace (ระยะสั้น) | 128 x 128 | float 16 | ข้อมูล | ล่าสุด |
BlazeFace (ช่วงเต็ม)
โมเดลที่มีน้ำหนักเบาพอสมควรสำหรับการตรวจจับใบหน้าเดียวหรือหลายใบหน้าภายใน รูปภาพจากกล้องสมาร์ทโฟนหรือเว็บแคม โมเดลนี้ได้รับการเพิ่มประสิทธิภาพสำหรับรูปภาพแบบเต็มช่วง เช่น รูปภาพที่ถ่ายด้วยกล้องหลังของโทรศัพท์ สถาปัตยกรรมโมเดล ใช้เทคนิคที่คล้ายกับเครือข่าย CenterNet แบบ Convolutional ที่มี ตัวเข้ารหัสที่กำหนดเอง
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการหาปริมาณ | การ์ดโมเดล | เวอร์ชัน |
|---|---|---|---|---|
| BlazeFace (ช่วงเต็ม) | 128 x 128 | float 16 | ข้อมูล | ล่าสุด |
BlazeFace Sparse (Full Range)
BlazeFace เวอร์ชันที่เบากว่ารุ่นปกติแบบเต็มช่วง ซึ่งมีขนาดเล็กกว่าประมาณ 60% โมเดลนี้ได้รับการเพิ่มประสิทธิภาพสำหรับรูปภาพแบบเต็มช่วง เช่น รูปภาพที่ถ่ายด้วย กล้องหลังของโทรศัพท์ สถาปัตยกรรมโมเดลใช้เทคนิคที่คล้ายกับเครือข่าย Convolutional ของ CenterNet ที่มี ตัวเข้ารหัสที่กำหนดเอง
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการหาปริมาณ | การ์ดโมเดล | เวอร์ชัน |
|---|---|---|---|---|
| BlazeFace Sparse (full-range) | 128 x 128 | float 16 | ข้อมูล | ล่าสุด |
การเปรียบเทียบงาน
ต่อไปนี้คือเกณฑ์มาตรฐานของงานสำหรับทั้งไปป์ไลน์โดยอิงตามโมเดลที่ฝึกไว้ล่วงหน้าข้างต้น ผลลัพธ์เวลาในการตอบสนองคือเวลาในการตอบสนองเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU
| ชื่อแบบจำลอง | เวลาในการตอบสนองของ CPU | เวลาในการตอบสนองของ GPU |
|---|---|---|
| BlazeFace (ระยะสั้น) | 2.94 มิลลิวินาที | 7.41 มิลลิวินาที |