(beta)torch_npu.contrib.DCNv2

[!NOTICE]
该接口计划废弃,可以使用torch_npu.contrib.ModulationDeformConv接口进行替换。

产品支持情况

产品 是否支持
Atlas A3 训练系列产品
Atlas A2 训练系列产品
Atlas 训练系列产品
Atlas 推理系列产品

功能说明

应用基于NPU的调制可变形2D卷积操作。ModulationDeformConv的实现主要是基于mmcv的实现进行设计和重构。

函数原型

torch_npu.contrib.DCNv2(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, deformable_groups=1, bias=True, pack=True)

参数说明

  • in_channelsint):输入图像的channel数量。
  • out_channelsint):卷积输出channel的数量。
  • kernel_sizeint, tuple):卷积核的尺寸。
  • strideint, tuple):卷积的stride,默认值为1。
  • paddingint or tuple):对输入图像两侧添加0填充,默认值为0。
  • dilationint or tuple):卷积核元素间距,默认值为1。
  • groupsint):输入通道和输出通道的组数量,默认值为1。
  • deformable_groupsint):可变形分区数量。
  • biasbool):设置为True将对output添加bias,默认值为False。
  • packbool):设置为True则将在模型中添加conv_offset和mask,默认值为True。

约束说明

ModulationDeformConv仅实现fp32数据类型下的操作。注意,conv_offset中的权重和偏置必须初始化为0。

调用示例

>>> import torch
>>> import torch_npu
>>> x = torch.randn((2, 2, 5, 5), dtype=torch.float32).npu()
>>> x.requires_grad = True
>>> model = torch_npu.contrib.DCNv2(2, 2, 3, 2, 1).npu()
>>> output = model(x)
>>> output.sum().backward()