每日Attention学习17——Multi-Kernel Inverted Residual

模块出处

[ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation


模块名称

Multi-Kernel Inverted Residual (MKIR)


模块作用

超轻量编码器块


模块结构

在这里插入图片描述
在这里插入图片描述


模块特点
  • 类Inverted Residual操作。在MKDC之前,使用一组Conv-BN-ReLU提升通道数。在MKDC之后,使用一组Conv-BN降低或维持通道数。该操作最早在mobilenet v2中实现。
  • 使用不同kernel size的深度卷积以进行多尺度特征提取。深度卷积相比于标准卷积而言计算量更小。
  • 使用ReLU6激活函数替代ReLU。相比于ReLU,ReLU6会将结果约束在0~6之间,更适用于轻量级的低精度(如int8)计算。
  • 多个branch的特征使用add进行融合而非concat。concat会增大通道数带来更大的计算开销。
  • 融合特征使用channel shuffle以鼓励不同branch特征间的进一步交互,类似于1×1卷积。

模块代码
import torch
import torch.nn as nn
import torch.nn.functional as F


def gcd(a, b):
    while b:
        a, b = b, a % b
    return a


def channel_shuffle(x, groups):
    batchsize, num_channels, height, width = x.data.size()
    channels_per_group = num_channels // groups
    x = x.view(batchsize, groups, 
               channels_per_group, height, width)
    x = torch.transpose(x, 1, 2).contiguous()
    x = x.view(batchsize, -1, height, width) 
    return x


class MultiKernelDepthwiseConv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值