#今日论文推荐#gnConv打造新视觉主干家族:HorNet

#今日论文推荐#gnConv打造新视觉主干家族:HorNet

总结

  • 提出了递归门控卷积(gnConv),它通过门控卷积和递归设计来执行高阶空间交互,具有高度的灵活性和可定制性,兼容各种卷积变量,并将自注意的两阶交互扩展到任意阶,而不引入显著的额外计算。
  • gnConv可以作为一个即插即用的模块,以改进各种视觉Transformer和基于卷积的模型。在此基础上构建了一个新的通用视觉骨干家族,名为HorNet。

前言

  1. 标准的卷积运算并没有明确地考虑空间间的相互作用。
  2. 动态卷积和SE引入了动态权值,提高具有额外空间交互的卷积的建模能力。
  3. 自注意操作通过两个连续的矩阵乘法进行二阶空间交互。
  4. gnConv使用门控卷积和递归对的高效实现实现任意顺序的空间交互。

论文题目:HorNet: Efficient High-Order Spatial Interactions with Recursive Gated Convolutions
详细解读:https://www.aminer.cn/research_report/62ffaae07cb68b460f07258ficon-default.png?t=M7J4https://www.aminer.cn/research_report/62ffaae07cb68b460f07258f
AMiner链接:https://www.aminer.cn/?f=cs

class HorNet(nn.Module): # HorNet # hornet by iscyy/yoloair def __init__(self, index, in_chans, depths, dim_base, drop_path_rate=0.,layer_scale_init_value=1e-6, gnconv=[ partial(gnconv, order=2, s=1.0/3.0), partial(gnconv, order=3, s=1.0/3.0), partial(gnconv, order=4, s=1.0/3.0), partial(gnconv, order=5, s=1.0/3.0), # GlobalLocalFilter ], ): super().__init__() dims = [dim_base, dim_base * 2, dim_base * 4, dim_base * 8] self.index = index self.downsample_layers = nn.ModuleList() # stem and 3 intermediate downsampling conv layers hornet by iscyy/air stem = nn.Sequential( nn.Conv2d(in_chans, dims[0], kernel_size=4, stride=4), HorLayerNorm(dims[0], eps=1e-6, data_format="channels_first") ) self.downsample_layers.append(stem) for i in range(3): downsample_layer = nn.Sequential( HorLayerNorm(dims[i], eps=1e-6, data_format="channels_first"), nn.Conv2d(dims[i], dims[i+1], kernel_size=2, stride=2), ) self.downsample_layers.append(downsample_layer) self.stages = nn.ModuleList() # 4 feature resolution stages, each consisting of multiples bind residual blocks dummy dp_rates=[x.item() for x in torch.linspace(0, drop_path_rate, sum(depths))] if not isinstance(gnconv, list): gnconv = [gnconv, gnconv, gnconv, gnconv] else: gnconv = gnconv assert len(gnconv) == 4 cur = 0 for i in range(4): stage = nn.Sequential( *[HorBlock(dim=dims[i], drop_path=dp_rates[cur + j], layer_scale_init_value=layer_scale_init_value, gnconv=gnconv[i]) for j in range(depths[i])]# hornet by iscyy/air ) self.stages.append(stage) cur += depths[i] self.apply(self._init_weights)
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值