คู่มือการแบ่งกลุ่มรูปภาพ

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

  • บุคคลและพื้นหลัง
  • เส้นผมของบุคคลเท่านั้น
  • ผม ใบหน้า ผิวหนัง เสื้อผ้า และเครื่องประดับของบุคคล

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

ลองเลย

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

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

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

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

ฟีเจอร์

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

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

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

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

รูปภาพ: โหมดสำหรับอินพุตรูปภาพเดียว

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

LIVE_STREAM: โหมดสำหรับสตรีมแบบสดของอินพุต เช่น ข้อมูลจากกล้อง ในโหมดนี้ resultsListener ต้องเป็น ถูกเรียกให้ตั้งค่า Listener เพื่อรับผลลัพธ์ แบบไม่พร้อมกัน
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask หากตั้งค่าเป็น True เอาต์พุตจะมีมาสก์การแบ่งกลุ่ม เป็นรูปภาพ uint8 โดยที่ค่าพิกเซลแต่ละค่าจะระบุหมวดหมู่ที่ชนะ {True, False} False
output_confidence_masks หากตั้งค่าเป็น True เอาต์พุตจะมีมาสก์การแบ่งกลุ่ม เป็นภาพค่าจำนวนลอยตัว โดยที่ค่าจำนวนลอยตัวแต่ละค่าแสดงความเชื่อมั่น ตารางคะแนนของหมวดหมู่ {True, False} True
display_names_locale ตั้งค่าภาษาของป้ายกำกับที่จะใช้กับชื่อที่แสดงซึ่งระบุไว้ใน ข้อมูลเมตาของโมเดลงาน (หากมี) ค่าเริ่มต้นคือ en สำหรับ ภาษาอังกฤษ คุณเพิ่มป้ายกำกับที่แปลแล้วลงในข้อมูลเมตาของโมเดลที่กำหนดเองได้ โดยใช้ TensorFlow Lite Metadata Writer API รหัสภาษา en
result_callback ตั้งค่า Listener ผลลัพธ์เพื่อรับผลลัพธ์การแบ่งกลุ่ม แบบไม่พร้อมกันเมื่อตัวแบ่งกลุ่มรูปภาพอยู่ในโหมด LIVE_STREAM ใช้ได้เมื่อตั้งค่าโหมดวิ่งเป็น LIVE_STREAM เท่านั้น ไม่มี ไม่มี

โมเดล

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

รูปแบบการแบ่งกลุ่มเซลฟี

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

ชื่อโมเดล รูปร่างอินพุต ประเภทการกำหนดปริมาณ การ์ดโมเดล เวอร์ชัน
กล้องเซลฟี (สี่เหลี่ยมจัตุรัส) 256 x 256 ทศนิยม 16 ข้อมูล ล่าสุด
กล้องเซลฟี (แนวนอน) 144 X 256 ทศนิยม 16 ข้อมูล ล่าสุด

โมเดลการแบ่งกลุ่มผม

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

0 - background
1 - hair
ชื่อโมเดล รูปร่างอินพุต ประเภทการกำหนดปริมาณ การ์ดโมเดล เวอร์ชัน
HairSegmenter 512 X 512 ไม่มี (Float 32) ข้อมูล ล่าสุด

โมเดลการแบ่งกลุ่มลูกค้าเซลฟีแบบหลายคลาส

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

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
ชื่อโมเดล รูปร่างอินพุต ประเภทการกำหนดปริมาณ การ์ดโมเดล เวอร์ชัน
SelfieMulticlass (256 x 256) 256 x 256 ไม่มี (Float 32) ข้อมูล ล่าสุด

โมเดล DeepLab-v3

โมเดลนี้จะระบุกลุ่มต่างๆ สำหรับหมวดหมู่ต่างๆ รวมถึงพื้นหลัง คน แมว สุนัข และไม้กระถาง โมเดลนี้ใช้ปิระมิดเชิงพื้นที่แบบอะตอม เพื่อเก็บข้อมูลช่วงได้ยาวขึ้น สำหรับข้อมูลเพิ่มเติม โปรดดู DeepLab-v3

ชื่อโมเดล รูปร่างอินพุต ประเภทการกำหนดปริมาณ เวอร์ชัน
DeepLab-V3 257 X 257 ไม่มี (Float 32) ล่าสุด

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

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

ชื่อแบบจำลอง เวลาในการตอบสนองของ CPU เวลาในการตอบสนองของ GPU
กล้องเซลฟี (สี่เหลี่ยมจัตุรัส) 33.46 มิลลิวินาที 35.15 มิลลิวินาที
กล้องเซลฟี (แนวนอน) 34.19 มิลลิวินาที 33.55 มิลลิวินาที
HairSegmenter 57.90 มิลลิวินาที 52.14 มิลลิวินาที
SelfieMulticlass (256 x 256) 217.76 มิลลิวินาที 71.24 มิลลิวินาที
DeepLab-V3 123.93 มิลลิวินาที 103.30 มิลลิวินาที