งานเครื่องมือฝังรูปภาพ MediaPipe ให้คุณสร้างการนำเสนอรูปภาพในรูปแบบตัวเลขซึ่งมีประโยชน์ในการทำงานต่างๆ เกี่ยวกับรูปภาพที่อิงตาม ML ฟังก์ชันการทำงานนี้มักใช้เพื่อเปรียบเทียบความคล้ายคลึงกันของรูปภาพ 2 รูปโดยใช้เทคนิคการเปรียบเทียบทางคณิตศาสตร์ เช่น ความคล้ายคลึงกันของโคไซน์ งานนี้ดำเนินการกับข้อมูลรูปภาพด้วยโมเดลแมชชีนเลิร์นนิง (ML) เป็นข้อมูลคงที่หรือสตรีมต่อเนื่อง และแสดงผลตัวเลขของข้อมูลรูปภาพเป็นรายการเวกเตอร์ของจุดสนใจที่มีมิติสูง หรือที่เรียกว่าการฝังเวกเตอร์ในรูปแบบจุดลอยตัวหรือเชิงปริมาณ
เริ่มต้นใช้งาน
เริ่มใช้งานนี้โดยทำตามคำแนะนำในการใช้งานสำหรับแพลตฟอร์มเป้าหมาย คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานเบื้องต้นของงานนี้ โดยใช้โมเดลที่แนะนำ และแสดงตัวอย่างโค้ดที่มีตัวเลือกการกำหนดค่าที่แนะนำ
- Android - ตัวอย่างโค้ด - คำแนะนำ
- Python - ตัวอย่างโค้ด - คำแนะนำ
- เว็บ - ตัวอย่างโค้ด - คำแนะนำ
รายละเอียดงาน
ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่าของงานนี้
ฟีเจอร์
- การประมวลผลรูปภาพอินพุต - การประมวลผลจะรวมถึงการหมุนรูปภาพ การปรับขนาด การทำให้เป็นมาตรฐาน และการแปลงพื้นที่สี
- ภูมิภาคที่สนใจ - ทำการฝังในพื้นที่ของรูปภาพแทนการฝังทั้งรูปภาพ
- การฝังการคำนวณความคล้ายคลึง - ฟังก์ชันยูทิลิตีในตัวเพื่อคำนวณความคล้ายคลึงกันโคไซน์ระหว่างเวกเตอร์จุดสนใจ 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 มิลลิวินาที |