たとえば、U-Net でセマンティック セグメンテーションを行う場合、ラベル データをワンホット エンコードされたテンソルとして提供するのが一般的な方法のようです。別の SO の質問で、ユーザーは、これは通常カテゴリ値を表すラベルが原因であると指摘しました。それらを1つのレイヤー内のクラスラベルとして(グレースケール強度値として)ネットワークに供給すると、問題が発生します。
ただし、別のブログ投稿で、著者はラベルが
「[...] ピクセル強度がクラス ID [...] を表すグレースケール画像として [取得] されることがあります。 ...] 1 つのホット ベクター表現は、[グレースケール エンコーディング フォーマット] より多くのメモリを [使用] します。"
私のハードウェアは非常に限られているため、ラベルを n 層 (n はセグメント化するクラスの数) ではなく 1 層のグレースケール テンソルとしてエンコードすると、メモリ使用量が少なくなることを期待しています。ただし、ブログの著者は次のようにも述べています。
「使用する深層学習フレームワークが [グレースケール形式] のように、ラベル データをクラス ID として受け入れたとしても、そのデータは舞台裏でワンホット エンコーディングに変換されます。」
これは、結局のところ、メモリの節約にはならないということですか?
価値がある場合、データセットリーダーでこれを実装するにはどうすればよいですか? また、グレースケールのラベル付けが実際に実践されている実装にも遭遇していません。したがって、セマンティック セグメンテーションにグレースケール ラベルを使用している実装へのリンクにも感謝します!
私は PyTorch を使用しており、私のコードはこの実装に基づいていますが、セグメント化するクラスが 3 つあるという違いがあります。
提案/リンクは大歓迎です!