วิธีที่เป็นเวกเตอร์เพื่อใช้มาสก์ 3 มิติกับ RGB ใน pytorch

Aug 18 2020

ฉันมีเทนเซอร์ HxWx3 ที่แสดงภาพ RGB และเทนเซอร์ HxWx3 (บูลีน) เป็นอินพุต สันนิษฐานว่าสำหรับแต่ละ (i, j) ในเทนเซอร์มาสก์มีค่าจริงเพียงค่าเดียว (นั่นคือค่าหนึ่งของ R \ G \ B เปิดอยู่) ฉันต้องการใช้มาสก์กับรูปภาพเพื่อให้ได้ค่า HxW (หรือ HxWx1) เทนเซอร์ V โดยที่ V [i, j] = 'ค่า R \ G \ B ที่ตรงกันตามมาสก์'

การใช้ปัญหาในการใช้ไบนารีมาสก์กับภาพ RGB ด้วยตัวเลขฉันสามารถทำได้ดังต่อไปนี้:

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

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

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

แต่ตามที่ระบุไว้ฉันต้องการ HxW สลัวเดียวไม่ใช่ HxWx3

ภาพประกอบ:

คำตอบ

4 Mercury Aug 18 2020 at 18:31

สมมติว่าสำหรับ i แต่ละค่า j จะคงไว้เพียงค่า R / G / B เดียวคุณสามารถทำได้:

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

สิ่งนี้ควรให้เอาต์พุต (HxW) ที่คุณต้องการ