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