การแบ่งส่วนรูปภาพเป็นกระบวนการแบ่งพาร์ติชันรูปภาพดิจิทัลออกเป็นหลายส่วน (ชุดของพิกเซล หรือที่เรียกว่าวัตถุรูปภาพ) เป้าหมายของการแบ่งส่วนคือการทำให้ง่ายขึ้นและ/หรือเปลี่ยนการแสดงรูปภาพเป็นสิ่งที่มีความหมายและวิเคราะห์ได้ง่ายขึ้น
รูปภาพต่อไปนี้แสดงผลลัพธ์ของโมเดลการแบ่งส่วนรูปภาพบน Android ตัวแบบจะสร้างหน้ากากเหนือวัตถุเป้าหมายด้วยความแม่นยำสูง
เริ่ม
หากคุณเพิ่งเริ่มใช้ TensorFlow Lite และกำลังทำงานกับ Android หรือ iOS ขอแนะนำให้คุณสำรวจตัวอย่างแอปพลิเคชันต่อไปนี้ที่สามารถช่วยคุณเริ่มต้นได้
คุณสามารถใช้ API แบบสำเร็จรูปจาก TensorFlow Lite Task Library เพื่อรวมโมเดลการแบ่งส่วนรูปภาพภายในโค้ดเพียงไม่กี่บรรทัด คุณยังสามารถรวมโมเดลโดยใช้ TensorFlow Lite Interpreter Java API
ตัวอย่าง Android ด้านล่างสาธิตการใช้งานสำหรับทั้งสองวิธีเป็น lib_task_api และ lib_interpreter ตามลำดับ
หากคุณกำลังใช้แพลตฟอร์มอื่นที่ไม่ใช่ Android หรือ iOS หรือคุณคุ้นเคยกับ TensorFlow Lite API แล้ว คุณสามารถดาวน์โหลดโมเดลการแบ่งกลุ่มรูปภาพเริ่มต้นของเราได้
คำอธิบายแบบจำลอง
DeepLab เป็นโมเดลการเรียนรู้เชิงลึกล้ำสมัยสำหรับการแบ่งส่วนรูปภาพเชิงความหมาย โดยมีเป้าหมายเพื่อกำหนดป้ายกำกับเชิงความหมาย (เช่น คน สุนัข แมว) ให้กับทุกพิกเซลในภาพอินพุต
มันทำงานอย่างไร
การแบ่งส่วนรูปภาพเชิงความหมายจะคาดการณ์ว่าแต่ละพิกเซลของรูปภาพจะเชื่อมโยงกับคลาสใดคลาสหนึ่งหรือไม่ ซึ่งตรงกันข้ามกับ การตรวจจับวัตถุ ซึ่งตรวจจับวัตถุในพื้นที่สี่เหลี่ยม และ การจัดประเภทรูปภาพ ซึ่งจัดประเภทรูปภาพโดยรวม
การใช้งานปัจจุบันมีคุณสมบัติดังต่อไปนี้:
- DeepLabv1: เราใช้ Convolutional Convolutions เพื่อควบคุมความละเอียดอย่างชัดเจนในการคำนวณการตอบสนองของฟีเจอร์ภายใน Deep Convolutional Neural Networks
- DeepLabv2: เราใช้ atrous spatial pyramid pooling (ASPP) เพื่อแบ่งกลุ่มวัตถุอย่างแข็งแกร่งในหลายมาตราส่วนด้วยตัวกรองที่อัตราการสุ่มตัวอย่างหลายอัตราและขอบเขตการมองเห็นที่มีประสิทธิภาพ
- DeepLabv3: เราเพิ่มโมดูล ASPP ด้วยคุณสมบัติระดับภาพ [5, 6] เพื่อเก็บข้อมูลช่วงที่ยาวขึ้น นอกจากนี้เรายังรวมพารามิเตอร์แบทช์นอร์มัลไลซ์ [7] เพื่ออำนวยความสะดวกในการฝึกอบรม โดยเฉพาะอย่างยิ่ง เราใช้การโน้มน้าวใจอย่างหนักเพื่อดึงคุณลักษณะของเอาต์พุตที่ก้าวของเอาต์พุตต่างๆ ในระหว่างการฝึกอบรมและการประเมินผล ซึ่งช่วยให้การฝึก BN ที่เอาต์พุต stride = 16 มีประสิทธิภาพสูงและบรรลุผลการทำงานที่สูงที่เอาต์พุต stride = 8 ระหว่างการประเมิน
- DeepLabv3+: เราขยาย DeepLabv3 เพื่อรวมโมดูลตัวถอดรหัสที่เรียบง่ายแต่มีประสิทธิภาพเพื่อปรับแต่งผลลัพธ์การแบ่งส่วนโดยเฉพาะตามขอบเขตของวัตถุ นอกจากนี้ ในโครงสร้างตัวเข้ารหัส-ตัวถอดรหัสนี้ เราสามารถควบคุมความละเอียดของคุณสมบัติตัวเข้ารหัสที่แยกออกมาได้ตามอำเภอใจ โดยการบิดเบี้ยวอย่างเข้มงวดเพื่อแลกกับความแม่นยำและรันไทม์
มาตรฐานประสิทธิภาพ
ตัวเลขเปรียบเทียบประสิทธิภาพสร้างขึ้นด้วยเครื่องมือที่ อธิบายไว้ที่นี่
ชื่อรุ่น | ขนาดรุ่น | อุปกรณ์ | GPU | ซีพียู |
---|---|---|---|---|
Deeplab v3 | 2.7 Mb | พิกเซล 3 (แอนดรอยด์ 10) | 16ms | 37ms* |
พิกเซล 4 (แอนดรอยด์ 10) | 20ms | 23ms* | ||
iPhone XS (iOS 12.4.1) | 16ms | 25ms** |
* ใช้ 4 เธรด
** ใช้ 2 เธรดบน iPhone เพื่อผลลัพธ์ประสิทธิภาพที่ดีที่สุด