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)出力が得られます。