パノプティックセグメンテーション

PyTorch で学ぶ画像向け Deep Learning

Michal Oleszak

Machine Learning Engineer

パノプティックセグメンテーションの課題

元画像

元画像

セマンティックセグメンテーション

セマンティックセグメンテーション

インスタンスセグメンテーション

インスタンスセグメンテーション

パノプティックセグメンテーション

パノプティックセグメンテーション

PyTorch で学ぶ画像向け Deep Learning

パノプティックセグメンテーションの手順

  • セマンティックとインスタンスの統合は複雑になり得る:

    • 重なり
    • インスタンスIDの一意性確保
  • ワークフロー:

    1. セマンティックマスクを生成
    2. 単一マスクに統合
    3. パノプティックマスクをセマンティックマスクで初期化
    4. インスタンスマスクを生成
    5. インスタンスマスクを反復し、検出物体をセマンティックマスクに重ねる
PyTorch で学ぶ画像向け Deep Learning

セマンティックマスク

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 で学ぶ画像向け Deep Learning

インスタンスマスク

model = MaskRCNN()

with torch.no_grad(): instance_masks = model(image_tensor)[0]["masks"] print(instance_masks.shape)
torch.Size([80, 1, 427, 640])
  • インスタンスセグメンテーションモデルを読み込む
  • インスタンスマスクを生成

インスタンスマスク

PyTorch で学ぶ画像向け Deep Learning

パノプティックマスク

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 で学ぶ画像向け Deep Learning

Passons à la pratique !

PyTorch で学ぶ画像向け Deep Learning

Preparing Video For Download...