インスタンスマスクを重ねる
前の演習でセマンティックマスクを作成できましたね。次は、インスタンスセグメンテーションモデルが物体を特定した位置で、その上にインスタンスマスクを書き込みましょう。
作業スペースに用意されている学習済みの MaskRCNN を使ってインスタンスセグメンテーションのマスクを生成します。続いて、これらのマスクをループで処理し、各マスクについて、高い確信度で物体が検出された部分をセマンティックマスクの上に重ねます。
torch はすでにインポートされています。
この演習はコースの一部です
PyTorch で学ぶ画像向け Deep Learning
演習の手順
semantic_maskをクローンしてpanoptic_maskを初期化します。- インスタンスマスクを反復処理する for ループを定義し、イテレータ変数は
maskとします。 - 各インスタンスマスクについて、値が
0.5より大きい位置では、現在のinstance_idで panoptic マスクを上書きします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Instantiate model and produce instance masks
model = MaskRCNN()
with torch.no_grad():
instance_masks = model(image_tensor)[0]["masks"]
# Initialize panoptic mask as semantic_mask
panoptic_mask = ____
# Iterate over instance masks
instance_id = 3
for ____ in ____:
# Set panoptic mask to instance_id where mask > 0.5
panoptic_mask[____] = ____
instance_id += 1
# Display panoptic mask
plt.imshow(panoptic_mask.squeeze(0))
plt.axis("off")
plt.show()