งานตัวตรวจจับใบหน้า 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 | 
      ตั้งค่าโปรแกรมรับฟังผลลัพธ์ให้รับผลลัพธ์การตรวจจับแบบไม่พร้อมกันเมื่อเครื่องมือตรวจจับใบหน้าอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทํางานเป็น LIVE_STREAM เท่านั้น | 
      N/A | 
      Not set | 
    
โมเดล
โมเดลการตรวจจับใบหน้าอาจแตกต่างกันไปตามกรณีการใช้งานที่ต้องการ เช่น การตรวจจับระยะใกล้และระยะไกล นอกจากนี้ โมเดลมักจะมีการแลกเปลี่ยนระหว่างประสิทธิภาพ ความแม่นยำ ความละเอียด และข้อกำหนดด้านทรัพยากร และในบางกรณีอาจมีฟีเจอร์เพิ่มเติม
โมเดลที่แสดงในส่วนนี้คือตัวแปรของ BlazeFace ซึ่งเป็นโปรแกรมตรวจจับใบหน้าที่เบาและแม่นยำซึ่งเพิ่มประสิทธิภาพมาเพื่อการอนุมานด้วย GPU บนอุปกรณ์เคลื่อนที่ โมเดล BlazeFace เหมาะสำหรับแอปพลิเคชันต่างๆ เช่น การประมาณจุดสังเกตบนใบหน้า 3 มิติ การจัดประเภทการแสดงออก และการแบ่งกลุ่มบริเวณใบหน้า BlazeFace ใช้เครือข่ายการดึงข้อมูลฟีเจอร์ที่มีน้ำหนักเบาซึ่งคล้ายกับ MobileNetV1/V2
BlazeFace (ระยะใกล้)
โมเดลขนาดเบาสำหรับตรวจจับใบหน้า 1 หรือหลายใบหน้าในรูปภาพลักษณะเซลฟีจากกล้องสมาร์ทโฟนหรือเว็บแคม โมเดลนี้ได้รับการเพิ่มประสิทธิภาพสำหรับรูปภาพจากกล้องหน้าของโทรศัพท์ในระยะใกล้ สถาปัตยกรรมโมเดลใช้เทคนิคเครือข่าย Convolutive ของ Single Shot Detector (SSD) ที่มีตัวเข้ารหัสที่กำหนดเอง ดูข้อมูลเพิ่มเติมได้ที่บทความวิจัยเรื่องSingle Shot MultiBox Detector
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการแปลงค่าเป็นจำนวนเต็ม | การ์ดโมเดล | เวอร์ชัน | 
|---|---|---|---|---|
| BlazeFace (ระยะใกล้) | 128 x 128 | ลอย 16 | info | ล่าสุด | 
BlazeFace (ฟูลเรนจ์)
โมเดลที่ค่อนข้างเบาสําหรับการตรวจจับใบหน้าเดียวหรือหลายใบหน้าภายในรูปภาพจากกล้องสมาร์ทโฟนหรือเว็บแคม โมเดลนี้ได้รับการเพิ่มประสิทธิภาพสำหรับรูปภาพแบบเต็มช่วง เช่น รูปภาพที่ถ่ายด้วยกล้องด้านหลังของโทรศัพท์ สถาปัตยกรรมโมเดลใช้เทคนิคที่คล้ายกับเครือข่าย Convolutive ของ CenterNet ที่มีตัวเข้ารหัสที่กำหนดเอง
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการแปลงค่าเป็นจำนวนเต็ม | การ์ดโมเดล | เวอร์ชัน | 
|---|---|---|---|---|
| BlazeFace (ฟูลเรนจ์) | 128 x 128 | ลอย 16 | ข้อมูล | เร็วๆ นี้ | 
BlazeFace แบบเบาบาง (แบบเต็มช่วง)
รุ่น BlazeFace แบบเต็มรูปแบบเวอร์ชันเบากว่าซึ่งมีขนาดเล็กลงประมาณ 60% โมเดลนี้ได้รับการเพิ่มประสิทธิภาพสำหรับรูปภาพแบบเต็มช่วง เช่น รูปภาพที่ถ่ายด้วยกล้องหลังของโทรศัพท์ สถาปัตยกรรมโมเดลใช้เทคนิคที่คล้ายกับเครือข่าย Convolutive ของ CenterNet ที่มีตัวเข้ารหัสที่กำหนดเอง
| ชื่อโมเดล | รูปร่างอินพุต | ประเภทการแปลงค่าเป็นจำนวนเต็ม | การ์ดโมเดล | เวอร์ชัน | 
|---|---|---|---|---|
| BlazeFace แบบเบาบาง (แบบเต็มช่วง) | 128 x 128 | ลอย 16 | ข้อมูล | เร็วๆ นี้ | 
การเปรียบเทียบงาน
ต่อไปนี้คือการเปรียบเทียบประสิทธิภาพของงานสำหรับทั้งไปป์ไลน์โดยอิงตามโมเดลที่ผ่านการฝึกล่วงหน้าข้างต้น ผลลัพธ์เวลาในการตอบสนองคือเวลาในการตอบสนองโดยเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU
| ชื่อแบบจำลอง | เวลาในการตอบสนองของ CPU | เวลาในการตอบสนองของ GPU | 
|---|---|---|
| BlazeFace (ระยะใกล้) | 2.94 มิลลิวินาที | 7.41 มิลลิวินาที |