คำแนะนำในการตรวจจับใบหน้า

คน 3 คนที่มีใบหน้าไฮไลต์ด้วยกรอบล้อมรอบ

งานตรวจจับใบหน้าของ MediaPipe ช่วยให้คุณตรวจจับใบหน้าในรูปภาพหรือวิดีโอได้ คุณสามารถใช้ งานนี้เพื่อระบุตำแหน่งใบหน้าและลักษณะใบหน้าภายในเฟรมได้ งานนี้ใช้โมเดล แมชชีนเลิร์นนิง (ML) ที่ทำงานกับรูปภาพเดี่ยวหรือสตรีมรูปภาพ ต่อเนื่อง เอาต์พุตของงานคือตำแหน่งใบหน้าพร้อมกับจุดสำคัญบนใบหน้าต่อไปนี้ ตาซ้าย ตาขวา ปลายจมูก ปาก ติ่งหูซ้าย และ ติ่งหูขวา

ลองเลย

เริ่มต้นใช้งาน

เริ่มใช้ฟีเจอร์นี้โดยทำตามคำแนะนำในการติดตั้งใช้งานรายการใดรายการหนึ่งต่อไปนี้สำหรับแพลตฟอร์มเป้าหมาย คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานพื้นฐานของงานนี้ ซึ่งรวมถึงโมเดลที่แนะนำและตัวอย่างโค้ดพร้อมตัวเลือกการกำหนดค่าที่แนะนำ

รายละเอียดงาน

ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่า ของงานนี้

ฟีเจอร์

  • การประมวลผลรูปภาพอินพุต - การประมวลผลรวมถึงการหมุนรูปภาพ การปรับขนาด การทําให้เป็นมาตรฐาน และการแปลงพื้นที่สี
  • เกณฑ์คะแนน - กรองผลลัพธ์ตามคะแนนการคาดการณ์
อินพุตของงาน เอาต์พุตของงาน
เครื่องตรวจจับใบหน้ารับอินพุตเป็นข้อมูลประเภทใดประเภทหนึ่งต่อไปนี้
  • ภาพนิ่ง
  • เฟรมวิดีโอที่ถอดรหัสแล้ว
  • ฟีดวิดีโอสด
เครื่องมือตรวจหาใบหน้าจะแสดงผลลัพธ์ต่อไปนี้
  • กรอบล้อมรอบสำหรับใบหน้าที่ตรวจพบในเฟรมรูปภาพ
  • พิกัดของจุดสังเกตใบหน้า 6 จุดสำหรับใบหน้าที่ตรวจพบแต่ละใบหน้า

ตัวเลือกการกำหนดค่า

งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้

ชื่อตัวเลือก คำอธิบาย ช่วงค่า ค่าเริ่มต้น
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 มิลลิวินาที