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

รูปภาพตัวอย่าง 2 รูปของไอศกรีมโคนที่มีข้อมูลการฝังตัวเลขของรูปภาพเป็นอาร์เรย์

งานโปรแกรมฝังรูปภาพ 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 มิลลิวินาที