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