ก่อให้เกิดการประมาณค่า

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

เริ่ม

หากคุณยังใหม่กับ TensorFlow Lite และกำลังทำงานกับ Android หรือ iOS ให้สำรวจแอปพลิเคชันตัวอย่างต่อไปนี้ที่สามารถช่วยคุณเริ่มต้นได้

ตัวอย่าง Android ตัวอย่าง iOS

หากคุณคุ้นเคยกับ TensorFlow Lite APIs ให้ดาวน์โหลดโมเดล PoseNet เริ่มต้นและไฟล์สนับสนุน

ดาวน์โหลดรุ่นเริ่มต้น

หากคุณต้องการลองโพสต์การประมาณค่าบนเว็บเบราว์เซอร์ให้ตรวจสอบที่ เก็บ TensorFlow JS GitHub

คำอธิบายแบบจำลอง

มันทำงานอย่างไร

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

โมเดล PoseNet ใช้ภาพจากกล้องที่ผ่านการประมวลผลเป็นอินพุตและเอาต์พุตข้อมูลเกี่ยวกับจุดสำคัญ จุดสำคัญที่ตรวจพบจะจัดทำดัชนีโดยรหัสชิ้นส่วนโดยมีคะแนนความเชื่อมั่นระหว่าง 0.0 ถึง 1.0 คะแนนความเชื่อมั่นบ่งชี้ความน่าจะเป็นที่มีจุดสำคัญอยู่ในตำแหน่งนั้น

ข้อต่อต่างๆของร่างกายที่ตรวจพบโดยโมเดล PoseNet มีดังต่อไปนี้:

Id ส่วน
0 จมูก
1 leftEye
2 rightEye
3 ซ้าย
4 rightEar
5 leftShoulder
6 rightShoulder
7 ซ้ายข้อศอก
8 ขวาข้อศอก
9 leftWrist
10 rightWrist
11 ซ้าย
12 ขวา
13 leftKnee
14 rightKnee
15 ซ้าย
16 ขวา

ตัวอย่างผลลัพธ์แสดงไว้ด้านล่าง:

ภาพเคลื่อนไหวแสดงการประมาณท่าทาง

เกณฑ์มาตรฐานประสิทธิภาพ

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

การก้าวออกของเอาต์พุตจะกำหนดว่าเอาต์พุตจะถูกลดขนาดลงเมื่อเทียบกับขนาดภาพอินพุตเท่าใด มีผลต่อขนาดของเลเยอร์และเอาต์พุตของโมเดล

ยิ่งความคืบหน้าของเอาต์พุตสูงขึ้นความละเอียดของเลเยอร์ในเครือข่ายและเอาต์พุตก็จะยิ่งเล็กลงและความแม่นยำตาม ในการนำไปใช้งานนี้การก้าวออกของเอาต์พุตอาจมีค่า 8, 16 หรือ 32 กล่าวอีกนัยหนึ่งคือการก้าวออกเป็น 32 จะทำให้ได้ประสิทธิภาพที่เร็วที่สุด แต่มีความแม่นยำต่ำที่สุดในขณะที่ 8 จะให้ความแม่นยำสูงสุด แต่ประสิทธิภาพที่ช้าที่สุด ค่าเริ่มต้นที่แนะนำคือ 16

ภาพต่อไปนี้แสดงให้เห็นว่าขาออกของเอาต์พุตกำหนดว่าขนาดเอาต์พุตจะลดขนาดลงเท่าใดเมื่อเทียบกับขนาดภาพอินพุต การก้าวออกที่สูงขึ้นจะเร็วขึ้น แต่ส่งผลให้ความแม่นยำลดลง

ความละเอียดของเอาต์พุตและแผนที่ความร้อน

ตัวเลขมาตรฐานประสิทธิภาพถูกสร้างขึ้นด้วยเครื่องมือที่ อธิบายไว้ที่นี่

ชื่อรุ่น ขนาดโมเดล อุปกรณ์ GPU ซีพียู
Posenet 12.7 ล้านบาท พิกเซล 3 (Android 10) 12 มิลลิวินาที 31 มิลลิวินาที *
พิกเซล 4 (Android 10) 12 มิลลิวินาที 19 มิลลิวินาที *
iPhone XS (iOS 12.4.1) 4.8 มิลลิวินาที 22 มิลลิวินาที **

* 4 เธรดที่ใช้

** 2 เธรดที่ใช้บน iPhone เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

อ่านเพิ่มเติมและแหล่งข้อมูล

  • ดู โพสต์บล็อก นี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการประมาณท่าทางโดยใช้ TensorFlow Lite
  • ดู โพสต์บล็อก นี้เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการประมาณท่าทางโดยใช้ TensorFlow JS
  • อ่านบทความ PoseNet ที่นี่

นอกจากนี้ตรวจสอบกรณีการใช้งานเหล่านี้ของการประมาณค่าโพสต์