两个框架均可以新建卷积层
mmdet调用并再次封装了pytorch
一、pytorch
torch新建卷积层,通过nn模块,通常是conv2d,batchnorm2d,relu三件套,即卷积、归一化、激活。
def dilate_conv(self):
layers=[]
layers.append(nn.Conv2d(64,64,kernel_size=3,stride=1,padding=1,dilation=1))
layers.append(nn.BatchNorm2d(64))
layers.append(nn.ReLU(inplace=True))
return nn.Sequential(*layers)
Conv2d的参数含义依次为:
输入特征通道,输出特征通道,卷积核尺寸,stride,pding,dilation
dilation用于设置膨胀卷积,默认值为1,dilation为1时即为普通卷积
BatchNormd的参数,通常只写一个,即输入通道数,输出和输入一样
relu不需要参数。
二、mmdet
mmdet新建卷积层通常用ConvModule模块
conv_module = ConvModule(
self.in_channel,
feat_channel,
3,
padding=1,
conv_cfg=dict(type='DCNv2') if self.use_dcn else None,
norm_cfg=dict(type='BN'))
该模块和nn三件套等效,包含了卷积、归一化、激活
上述代码中,特殊之处在于conv_cfg,这里设置的是DCNv2,即可变卷积
norm_cfg为归一化配置,这里也是batchnorm
激活层默认为relu,可以不写。