Shortcuts

特征金字塔网络

class torchvision.ops.FeaturePyramidNetwork(in_channels_list: List[int], out_channels: int, extra_blocks: Optional[ExtraFPNBlock] = None, norm_layer: Optional[Callable[[...], Module]] = None)[source]

该模块在一组特征图之上添加了一个FPN。这是基于 “用于目标检测的特征金字塔网络”

特征图目前应该按深度递增的顺序排列。

模型的输入预期是一个OrderedDict[Tensor],包含将在其上添加FPN的特征图。

Parameters:
  • in_channels_list (list[int]) – 传递给模块的每个特征图的通道数

  • out_channels (int) – FPN 表示的通道数

  • extra_blocks (ExtraFPNBlockNone) – 如果提供,将执行额外的操作。它预期会接收fpn特征、原始特征和原始特征的名称作为输入,并返回一个新的特征图列表及其对应的名称。

  • norm_layer (callable, optional) – 指定要使用的归一化层的模块。默认值:None

示例:

>>> m = torchvision.ops.FeaturePyramidNetwork([10, 20, 30], 5)
>>> # get some dummy data
>>> x = OrderedDict()
>>> x['feat0'] = torch.rand(1, 10, 64, 64)
>>> x['feat2'] = torch.rand(1, 20, 16, 16)
>>> x['feat3'] = torch.rand(1, 30, 8, 8)
>>> # compute the FPN on top of x
>>> output = m(x)
>>> print([(k, v.shape) for k, v in output.items()])
>>> # returns
>>>   [('feat0', torch.Size([1, 5, 64, 64])),
>>>    ('feat2', torch.Size([1, 5, 16, 16])),
>>>    ('feat3', torch.Size([1, 5, 8, 8]))]
forward(x: Dict[str, Tensor]) Dict[str, Tensor][source]

计算一组特征图的FPN。

Parameters:

x (OrderedDict[Tensor]) – 每个特征级别的特征图。

Returns:

FPN层后的特征图。

它们按分辨率从高到低排序。

Return type:

结果 (OrderedDict[Tensor])

get_result_from_inner_blocks(x: Tensor, idx: int) Tensor[source]

这相当于 self.inner_blocks[idx](x),但 torchscript 目前还不支持这个

get_result_from_layer_blocks(x: Tensor, idx: int) Tensor[source]

这相当于 self.layer_blocks[idx](x), 但 torchscript 目前还不支持这个