งานโปรแกรมฝังรูปภาพ MediaPipe ช่วยให้คุณสร้างการนําเสนอรูปภาพที่เป็นตัวเลขได้ ซึ่งมีประโยชน์ในการทํางานต่างๆ เกี่ยวกับรูปภาพซึ่งใช้ ML ฟังก์ชันการทำงานนี้มักใช้ในการเปรียบเทียบความคล้ายคลึงกันของรูปภาพ 2 รูปโดยใช้เทคนิคการเปรียบเทียบทางคณิตศาสตร์ เช่น ความคล้ายคลึงของ Cosine งานนี้จะดำเนินการกับข้อมูลรูปภาพด้วยโมเดลแมชชีนเลิร์นนิง (ML) เป็นข้อมูลแบบคงที่หรือสตรีมแบบต่อเนื่อง และแสดงผลข้อมูลรูปภาพที่เป็นตัวเลขเป็นรายการเวกเตอร์ฟีเจอร์มิติสูง หรือที่เรียกว่าเวกเตอร์การฝัง ในรูปแบบทศนิยมหรือรูปแบบเชิงปริมาณ
เริ่มต้นใช้งาน
เริ่มใช้แท็บงานนี้โดยทําตามคําแนะนําการใช้งานแพลตฟอร์มเป้าหมายข้อใดข้อหนึ่งต่อไปนี้ คู่มือเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานพื้นฐานของงานนี้โดยใช้โมเดลที่แนะนำ รวมถึงแสดงตัวอย่างโค้ดที่มีตัวเลือกการกําหนดค่าที่แนะนํา
รายละเอียดงาน
ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่าของงานนี้
ฟีเจอร์
- การประมวลผลรูปภาพอินพุต - การประมวลผลประกอบด้วยการหมุนรูปภาพ การปรับขนาด การทำให้เป็นมาตรฐาน และการแปลงพื้นที่สี
- พื้นที่สนใจ - ทำการฝังในบริเวณของรูปภาพแทนทั้งรูปภาพ
- การคํานวณความคล้ายคลึงของข้อมูลเชิงลึก - ฟังก์ชันยูทิลิตีในตัวสําหรับคํานวณความคล้ายคลึงของโคไซน์ระหว่างเวกเตอร์ฟีเจอร์ 2 รายการ
- การแปลงค่าเป็นจำนวนเต็ม - รองรับการแปลงค่าเป็นจำนวนเต็มสเกลาร์สำหรับเวกเตอร์ลักษณะ
อินพุตงาน | เอาต์พุตของงาน |
---|---|
อินพุตอาจเป็นประเภทข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้
|
เครื่องมือฝังรูปภาพจะแสดงรายการการฝังต่อไปนี้
|
ตัวเลือกการกําหนดค่า
งานนี้มีตัวเลือกการกำหนดค่าต่อไปนี้
ชื่อตัวเลือก | คำอธิบาย | ช่วงของค่า | ค่าเริ่มต้น |
---|---|---|---|
running_mode |
ตั้งค่าโหมดการทํางานสําหรับงาน โดยโหมดมี 3 แบบ ดังนี้ รูปภาพ: โหมดสำหรับอินพุตรูปภาพเดียว วิดีโอ: โหมดสำหรับเฟรมที่ถอดรหัสของวิดีโอ LIVE_STREAM: โหมดสตรีมแบบสดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ คุณต้องเรียกใช้ resultListener เพื่อตั้งค่า Listener เพื่อรับผลลัพธ์แบบไม่พร้อมกัน |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
l2_normalize |
กำหนดว่าจะปรับค่าเวกเตอร์ฟีเจอร์ที่แสดงผลด้วย L2 หรือไม่ ใช้ตัวเลือกนี้เฉพาะในกรณีที่โมเดลไม่มีการดำเนินการ L2_NORMALIZATION ของ TFLite เดิมอยู่แล้ว ซึ่งในกรณีส่วนใหญ่จะเป็นเช่นนั้นอยู่แล้ว และระบบจะทำการแปลง L2 ผ่านการอนุมาน TFLite โดยไม่จำเป็นต้องใช้ตัวเลือกนี้ | Boolean |
False |
quantize |
ควรแปลงการฝังที่แสดงผลเป็นไบต์ผ่านการแปลงเชิงสเกลหรือไม่ ระบบจะถือว่าการฝังมีรูปแบบเป็นหน่วยโดยปริยาย และรับประกันว่ามิติข้อมูลใดๆ จะมีค่าอยู่ในช่วง [-1.0, 1.0] ใช้ตัวเลือก l2_normalize หากไม่ใช่กรณีนี้ | Boolean |
False |
result_callback |
ตั้งค่าโปรแกรมรับฟังผลลัพธ์ให้รับผลการฝังแบบไม่พร้อมกันเมื่อโปรแกรมฝังรูปภาพอยู่ในโหมดสตรีมแบบสด ใช้ได้เมื่อตั้งค่าโหมดการทํางานเป็น LIVE_STREAM เท่านั้น |
ไม่มี | ไม่ได้ตั้งค่า |
โมเดล
โปรแกรมฝังรูปภาพต้องดาวน์โหลดและจัดเก็บโมเดลการฝังรูปภาพไว้ในไดเรกทอรีโปรเจ็กต์ เริ่มต้นด้วยโมเดลเริ่มต้นที่แนะนําสําหรับแพลตฟอร์มเป้าหมายเมื่อคุณเริ่มพัฒนาด้วยงานนี้ โดยปกติแล้วโมเดลอื่นๆ ที่พร้อมใช้งานจะประนีประนอมระหว่างประสิทธิภาพ ความแม่นยำ ความละเอียด และข้อกำหนดด้านทรัพยากร และในบางกรณีอาจมีฟีเจอร์เพิ่มเติม
โมเดล MobileNetV3
ตระกูลโมเดลนี้ใช้สถาปัตยกรรม MobileNet V3 และได้รับการฝึกโดยใช้ข้อมูล ImageNet โมเดลนี้ใช้ตัวคูณ 0.75 สำหรับความลึก (จํานวนฟีเจอร์) ในชั้น Conv เพื่อปรับสมดุลความแม่นยํากับเวลาในการตอบสนอง นอกจากนี้ 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 มิลลิวินาที |