【问题标题】:How to crop features outside an image region using pytorch?如何使用pytorch裁剪图像区域外的特征?
【发布时间】:2019-06-18 11:07:13
【问题描述】:

我们可以使用 ROI-Pool/ROI-Align 来裁剪图像区域(矩形)内部的子特征。

我想知道如何裁剪该区域外部的特征。
换句话说,如何将(特征图)inside矩形区域的值设置为零,但该区域outside的值保持不变。

【问题讨论】:

    标签: deep-learning pytorch object-detection


    【解决方案1】:

    我不确定这种 ROI 对齐的想法是否完全正确。 ROI pool 和 align 用于获取在原始输入空间(即像素空间)中识别的多个不同大小的感兴趣区域,并从(名义上)卷积网络计算的特征中输出一组相同大小的特征裁剪。

    不过,作为对您问题的简单回答,您只需创建一个与特征图具有相同维度的掩码张量,并将此掩码的 ROI 内的值设置为零,然后将掩码相乘通过特征图。这将抑制 ROI 内的所有值。这个掩码的创建应该相当简单。我使用 for 循环来避免思考,但也可能有更有效的方法。

    feature_maps                                          # batch_size x num_feature maps x width x height
    
    mask = torch.ones(torch.shape(feature_maps[0,0,:,:]))  
    for ROI in ROIs:                                      # assuming each ROI is [xmin ymin xmax ymax]
         mask[ROI[0]:ROI[2],ROI[1]:ROI[3]] = 0
    
    mask = mask.unsqueeze(0).unsqueeze(0)                 # 1 x 1 x width x height
    mask = mask.repeat(batch_size,num_feature_maps,1,1)   # batch_size x num_feature maps x width x height
    output = torch.mul(mask,feature_maps)
    

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多