Panoptic segmentation

Deep Learning สำหรับภาพด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

โจทย์ Panoptic segmentation

ภาพต้นฉบับ

ภาพต้นฉบับ

Semantic segmentation

Semantic segmentation

Instance segmentation

Instance segmentation

Panoptic segmentation

Panoptic segmentation

Deep Learning สำหรับภาพด้วย PyTorch

ขั้นตอน Panoptic segmentation

  • การรวม semantic และ instance segmentation มีความซับซ้อน:

    • การซ้อนทับกัน
    • การกำหนด instance ID ที่ไม่ซ้ำกัน
  • ขั้นตอนการทำงาน:

    1. สร้าง semantic masks
    2. รวมเป็น mask เดียว
    3. กำหนด panoptic mask เริ่มต้นจาก semantic mask
    4. สร้าง instance masks
    5. วนซ้ำผ่าน instance masks และวาง object ที่ตรวจพบทับลงบน semantic mask
Deep Learning สำหรับภาพด้วย PyTorch

Semantic masks

model = UNet()

with torch.no_grad():
    semantic_masks = model(image_tensor) 
    print(semantic_masks.shape)
torch.Size([1, 3, 427, 640])
semantic_mask = torch.argmax(
  semantic_masks, dim=1
)
  • สร้าง instance ของโมเดล
  • สร้าง semantic masks สำหรับภาพ input
  • เลือกคลาสที่มีความน่าจะเป็นสูงสุดสำหรับแต่ละ pixel

Semantic mask

Deep Learning สำหรับภาพด้วย PyTorch

Instance masks

model = MaskRCNN()

with torch.no_grad(): instance_masks = model(image_tensor)[0]["masks"] print(instance_masks.shape)
torch.Size([80, 1, 427, 640])
  • โหลดโมเดล instance segmentation
  • สร้าง instance masks

Instance mask

Deep Learning สำหรับภาพด้วย PyTorch

Panoptic masks

panoptic_mask = torch.clone(semantic_mask)

instance_id = 3 for mask in instance_masks:
panoptic_mask[mask > 0.5] = instance_id
instance_id += 1
  • กำหนด panoptic mask เริ่มต้นจาก semantic_mask
  • วนซ้ำผ่าน instance masks
  • กำหนด panoptic mask เป็น instance ID เมื่อ mask > 0.5
  • เพิ่มตัวนับ instance ID

Panoptic mask

Deep Learning สำหรับภาพด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning สำหรับภาพด้วย PyTorch

Preparing Video For Download...