全景式分割

使用 PyTorch 進行影像深度學習

Michal Oleszak

Machine Learning Engineer

全景式分割的挑戰

原始影像

原始影像

語意分割

語意分割

實例分割

實例分割

全景式分割

全景式分割

使用 PyTorch 進行影像深度學習

全景式分割流程

  • 結合語意與實例分割不易:

    • 重疊
    • 確保唯一的實例 ID
  • 我們的流程:

    1. 產生語意遮罩
    2. 合併為單一遮罩
    3. 以語意遮罩初始化全景遮罩
    4. 產生實例遮罩
    5. 迭代實例遮罩,將偵測到的物件覆蓋到語意遮罩上
使用 PyTorch 進行影像深度學習

語意遮罩

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
)
  • 建立模型實例
  • 產生輸入影像的語意遮罩
  • 為每個像素選最高機率的類別

語意遮罩

使用 PyTorch 進行影像深度學習

實例遮罩

model = MaskRCNN()

with torch.no_grad(): instance_masks = model(image_tensor)[0]["masks"] print(instance_masks.shape)
torch.Size([80, 1, 427, 640])
  • 載入實例分割模型
  • 產生實例遮罩

實例遮罩

使用 PyTorch 進行影像深度學習

全景遮罩

panoptic_mask = torch.clone(semantic_mask)

instance_id = 3 for mask in instance_masks:
panoptic_mask[mask > 0.5] = instance_id
instance_id += 1
  • semantic_mask 初始化全景遮罩
  • 迭代所有實例遮罩
  • 在 mask > 0.5 的位置設為對應實例 ID
  • 實例 ID 計數器遞增

全景遮罩

使用 PyTorch 進行影像深度學習

一起來練習吧!

使用 PyTorch 進行影像深度學習

Preparing Video For Download...