Res2Net模块介绍与tensorflow实现

1. 引言

    在很多计算机视觉任务中,由于同一张图像中的物体往往会有不一样的尺寸,因此,我们经常需要提取图像中不同尺度的特征来提高模型的效果,在以往的经验中,我们知道可以通过堆叠不同的CNN层、采用不同size的卷积核、残差连接等来实现。在本文中,我们将介绍一种更加细粒度的方法——Res2Net,该方法是2019年由程明明等人提出来的一种新模块,通过简单修改ResNet中的Bottleneck block,就可以实现对图像进行多尺度特征提取,该方法由于是对Bottleneck block进行修改,因此,对于以往很多模型结构,只需要替换其block就可以应用该方法,因此,其适用性和便利性更强,作者通过实验也发现该方法在很多视觉任务上都达到了SOTA。论文地址如下:

2. Res2Net模块介绍

    如下图所示,我们知道,Bottleneck block的结构采用 1 × 1 、 3 × 3 、 1 × 1 1 \times 1、3 \times 3、1 \times 1 1×13×31×1三层卷积层,这里每一层都带有relu激活函数,最后一层在relu之前带有残差连接,Res2Net的block结构与该结构非常相似,只是修改了中间 3 × 3 3 \times 3 3×3的卷积层,具体的修改步骤如下:

  1. 首先,引入一个新的参数scale,表示将feature map分为多少组,简记为 s s s;
  2. 接着,对于第一层 1 × 1 1 \times 1 1×1卷积层的输出特征,假设其通道数为 n n n,Res2Net将其按照通道数均分为 s s s组特征,每一组特征的通道数为 w w w,即 n = s × w n=s \times w n=s×w,比如下图中分为4组,记均分后每一组特征为 x i x_{i} xi,其中 i ∈ { 1 , 2 , … , s } i \in\{1,2, \ldots, s\} i{ 1,2,,s};
  3. 接着,对于原来Bottleneck block第二层的卷积核,也类似2步骤,将其分为 s s s组,每一组的输出通道为 w w w,记每一组的卷积操作为 K i ( ) \mathbf{K}_{i}( ) Ki()
  4. 对于分组后的每一组特征 x i x_{i} xi,除了第一个组不带有卷积操作外,其他组都对应卷积操作 K i ( ) \mathbf{K}_{i}( ) Ki(),其中 i ∈ { 2 , … , s } i \in\{2, \ldots, s\} i{ 2,,s},记 y i y_{i} yi为卷积操作 K i ( ) \mathbf{K}_{i}( ) Ki()的输出,则从第二组开始,每一次卷积操作 K i ( ) \mathbf{K}_{i}( ) Ki()前,都会将上一组的输出 y i − 1 y_{i-1} yi1
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值