คู่มืองานการฝังรูปภาพ

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

ลองเลย

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

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

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

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

ฟีเจอร์

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

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

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

ชื่อตัวเลือก คำอธิบาย ช่วงของค่า ค่าเริ่มต้น
running_mode ตั้งค่าโหมดการทำงาน มี 3 โหมดดังนี้

IMAGE: โหมดสำหรับการป้อนข้อมูลรูปภาพเดียว

วิดีโอ: โหมดสำหรับเฟรมที่ถอดรหัสของวิดีโอ

LIVE_Stream: โหมดสำหรับสตรีมแบบสดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ ต้องมีการเรียกใช้ resultsListener เพื่อตั้งค่า Listener เพื่อรับผลลัพธ์แบบไม่พร้อมกัน
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
l2_normalize ดูว่าจะปรับเวกเตอร์ของฟีเจอร์ที่ส่งคืนด้วยค่าปกติ L2 หรือไม่ ใช้ตัวเลือกนี้เฉพาะเมื่อโมเดลยังไม่มี L2_NORMALIZATION TFLite Op แบบเนทีฟ ในกรณีส่วนใหญ่ ก็มีกรณีเช่นนี้อยู่แล้ว และระบบจะทำการปรับให้สอดคล้องตามมาตรฐาน L2 ผ่านการอนุมาน TFLite โดยไม่จำเป็นต้องใช้ตัวเลือกนี้ Boolean False
quantize ควรทำให้การฝังที่ส่งคืนแปลงเป็นไบต์ผ่านการกำหนดปริมาณแบบสเกลาร์ไหม การฝังมีสมมติฐานโดยนัยว่าเป็นหน่วยบรรทัดฐาน ดังนั้นมิติข้อมูลใดๆ ก็มีค่าเป็น [-1.0, 1.0] อย่างแน่นอน ในกรณีนี้ ให้ใช้ตัวเลือก l2_normalize Boolean False
result_callback ตั้งค่า Listener ผลลัพธ์ให้รับผลลัพธ์การฝังแบบไม่พร้อมกันเมื่อเครื่องมือฝังรูปภาพอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทำงานเป็น LIVE_STREAM เท่านั้น ไม่มีข้อมูล ไม่ได้ตั้งค่า

รูปแบบ

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

รุ่น MobileNetV3

กลุ่มโมเดลนี้ใช้สถาปัตยกรรม MobileNet V3 และได้รับการฝึกโดยใช้ข้อมูล ImageNet โมเดลนี้ใช้ตัวคูณ 0.75 สำหรับความลึก (จำนวนฟีเจอร์) ในเลเยอร์ Convolutional เพื่อปรับลดเวลาในการตอบสนองความแม่นยำ นอกจากนี้ MobileNet V3 ยังมีขนาดต่างกัน 2 ขนาด คือ ขนาดเล็กและขนาดใหญ่ เพื่อปรับเครือข่ายให้รองรับกรณีใช้งานที่ใช้ทรัพยากรต่ำหรือสูง

ชื่อโมเดล รูปร่างอินพุต ประเภทการหาปริมาณ ฉบับ
MobileNet-V3 (ขนาดเล็ก) 224 X 224 ไม่มี (Float32) ล่าสุด
MobileNet-V3 (ขนาดใหญ่) 224 X 224 ไม่มี (Float32) ล่าสุด

การเปรียบเทียบงาน

นี่คือการเปรียบเทียบงานสำหรับทั้งไปป์ไลน์ตามโมเดลที่ฝึกล่วงหน้าไว้ข้างต้น ผลของเวลาในการตอบสนองคือเวลาในการตอบสนองโดยเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU

ชื่อโมเดล เวลาในการตอบสนองของ CPU เวลาในการตอบสนองของ GPU
MobileNet-V3 (ขนาดเล็ก) 3.94 มิลลิวินาที 7.83 มิลลิวินาที
MobileNet-V3 (ขนาดใหญ่) 9.75 มิลลิวินาที 9.08 มิลลิวินาที