HumanProteinAtlasコンペ

タスクの内容

こんにちは。私は初心者なので、私の質問は非常に基本的なものに見えるかもしれません。
私は主催者から提供されたデータを持っています。そこで、セグメンテーションマスクを生成した後、
そのマスクはグランドトゥルースとして機能するのでしょうか?
インスタンス・セグメンテーションとシングルセル・セグメンテーションの違いは何ですか?
私の理解では、インスタンスセグメンテーションでは、セルとラベルを瞬時にマッピングできるということでしょうか?


これらは同じだと思います。
セルを分割して、それぞれのセルにラベルを割り当てる必要があります。
その意味では、今回の競技課題(シングルセルセグメンテーション)は、インスタンスセグメンテーションです。
通常のインスタンスセグメンテーションとの唯一の違いは、セグメント情報とセルレベルのラベルが学習データとして与えられておらず、
画像レベルのラベルのみが与えられていることです。

そのため、この課題は弱教師付きインスタンス・セグメンテーションと呼ばれます。


OKです。主催者が画像を提供してくれました。
私たちの仕事は、HPAのセグメンテーションを使用して、
レーニング時に使用するグランドトゥルースを生成することです。私の理解は正しいでしょうか?


はい、そのような方法があります。
それ以外にも、弱い教師を使った方法を試すこともできます。

インスタンス・セグメンテーション・マスクのエンコード

インスタンス・セグメンテーション・マスクをエンコードするpython関数の例は以下の通りです。

import base64
import numpy as np
from pycocotools import _mask as coco_mask
import typing as t
import zlib


def encode_binary_mask(mask: np.ndarray) -> t.Text:
  """Converts a binary mask into OID challenge encoding ascii text."""

  # check input mask --
  if mask.dtype != np.bool:
    raise ValueError(
        "encode_binary_mask expects a binary mask, received dtype == %s" %
        mask.dtype)

  mask = np.squeeze(mask)
  if len(mask.shape) != 2:
    raise ValueError(
        "encode_binary_mask expects a 2d mask, received shape == %s" %
        mask.shape)

  # convert input mask to expected COCO API input --
  mask_to_encode = mask.reshape(mask.shape[0], mask.shape[1], 1)
  mask_to_encode = mask_to_encode.astype(np.uint8)
  mask_to_encode = np.asfortranarray(mask_to_encode)

  # RLE encode mask --
  encoded_mask = coco_mask.encode(mask_to_encode)[0]["counts"]

  # compress and base64 encoding --
  binary_str = zlib.compress(encoded_mask, zlib.Z_BEST_COMPRESSION)
  base64_str = base64.b64encode(binary_str)
  return base64_str

CAM

画像のどの領域が特定のラベル予測に貢献したかを確認するアプローチの1つ。

qiita.com