pytorchのRGBに3次元マスクを適用するベクトル化された方法

Aug 18 2020

RGB画像を表すHxWx3テンソルと、入力としてHxWx3マスク(ブール)テンソルがあります。マスクテンソルの各(i、j)に対して、真の値が1つだけあると想定されます(つまり、R \ G \ Bの1つがオンになっています)。画像にマスクを適用して、HxW(またはHxWx1)テンソルVを生成します。ここで、V [i、j] = 'マスクに応じて一致するR \ G \ B値'です。

numpyを使用してRGB画像にバイナリマスクを適用する際の問題を使用して、次のことを達成できました。

>>> X*mask
tensor([[[ 9., 10.],
         [ 0.,  0.]],

        [[ 0.,  0.],
         [ 0., 20.]],

        [[ 0.,  0.],
         [30.,  0.]]])

しかし、述べたように、結果としてHxWx3ではなく単一の薄暗いHxWが必要です。

図:

回答

4 Mercury Aug 18 2020 at 18:31

各i、jについて、単一のR / G / B値のみが保持されると仮定すると、次のように簡単に実行できます。

(X*mask).sum(axis=2)

これにより、目的の(HxW)出力が得られます。