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

ผู้คน 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 ตั้งค่าโปรแกรมรับฟังผลลัพธ์ให้รับผลลัพธ์การตรวจจับแบบไม่พร้อมกันเมื่อเครื่องมือตรวจจับใบหน้าอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทํางานเป็น 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 มิลลิวินาที