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

ตัวอย่างภาพถ่ายระยะใกล้ของผู้ชายข้างมาสก์รูปภาพที่แสดงรูปร่างของผู้ชาย

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

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

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

ลองใช้เลย

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

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

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

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

ฟีเจอร์

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

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

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

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

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

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

LIVE_STREAM: โหมดสตรีมแบบสดของข้อมูลอินพุต เช่น จากกล้อง ในโหมดนี้ คุณต้องเรียกใช้ resultListener เพื่อตั้งค่า 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 ตั้งค่าโปรแกรมรับฟังผลลัพธ์ให้รับผลลัพธ์การแบ่งกลุ่มแบบไม่พร้อมกันเมื่อเครื่องมือแบ่งกลุ่มรูปภาพอยู่ในโหมด LIVE_STREAM ใช้ได้เมื่อตั้งค่าโหมดการทํางานเป็น LIVE_STREAM เท่านั้น ไม่มี ไม่มี

โมเดล

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

โมเดลการแบ่งกลุ่มเซลฟี

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

ชื่อโมเดล รูปร่างอินพุต ประเภทการแปลงค่าเป็นจำนวนเต็ม การ์ดโมเดล เวอร์ชัน
SelfieSegmenter (สี่เหลี่ยมจัตุรัส) 256 x 256 ลอย 16 info ล่าสุด
SelfieSegmenter (แนวนอน) 144 x 256 ลอย 16 info ล่าสุด

โมเดลการแบ่งส่วนเส้นผม

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

0 - background
1 - hair
ชื่อโมเดล รูปร่างอินพุต ประเภทการแปลงค่าเป็นจำนวนเต็ม การ์ดโมเดล เวอร์ชัน
HairSegmenter 512 x 512 ไม่มี (float32) info ล่าสุด

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

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

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

โมเดล DeepLab-v3

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

ชื่อโมเดล รูปร่างอินพุต ประเภทการแปลงค่าเป็นจำนวนเต็ม เวอร์ชัน
DeepLab-V3 257 x 257 ไม่มี (float32) ล่าสุด

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

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

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