EfficientNet网络解析

效果

EfficientNet网络在ImageNet数据集上和其它网络的准确率和模型大小图如下:
在这里插入图片描述

创新点

1.模型可同时在宽度、深度和图片分辨率进行参数调整,提出了组合缩放系数,相比于单方面精度提升;
2.根据算力不同,提出了B0-B7的缩放尺度;
3.利用16个Block块,交叉使用3x3和5x5的卷积核进行特征提取。

模型结构

组合缩放系数

在这里插入图片描述
EfficientNet使用了组合缩放系数,用单一的组合缩放系数 ϕ \phi ϕ,同时缩放宽度w、深度d和图片分辨率r,其缩放基数分别为 α \alpha α β \beta β γ \gamma γ。在约束条件下,作者发现,在Efficient-B0上最好的参数是 α \alpha α=1.2、 β \beta β=1.1、 γ \gamma γ=1.15。

层数depth方向的次幂为1,分辨率resolution (WxH) 和通道width(C0xC1) 方向为平方,当模型d 深度、宽度和分辨率统一缩放 ϕ \phi ϕ时,最终的计算量大约增加2 ϕ \phi ϕ
在这里插入图片描述
相比单维度的参数调整,组合效果如下:
在这里插入图片描述
在这里插入图片描述

EfficientNet-B0网络结构

1.该网络结构 = 16个MBConv + 2个Conv + 1个Global average pooling + 1个FC分类层;
2.该网络利用了移动翻转瓶颈卷积(mobile inverted bottleneck convolution,MBConv)模块,还引入了压缩与激发网络(Squeeze-and-Excitation Network,SENet)的注意力思想。

网络整体结构如下:
在这里插入图片描述
基线B0的16个Block结构如下:

BlockArgs(kernel_size=3, num_repeat=1, input_filters=32, output_filters=16,
          expand_ratio=1, id_skip=True, strides=[1, 1], se_ratio=0.25),
          
BlockArgs(kernel_size=3, num_repeat=2, input_filters=16, output_filters=24,
          expand_ratio=6, id_skip=True, strides=[2, 2], se_ratio=0.25),
          
BlockArgs(kernel_size=5, num_repeat=2, input_filters=24, output_filters=40,
          expand_ratio=6, id_skip=True, strides=[2, 2], se_ratio=0.25),
          
BlockArgs(kernel_size=3, num_repeat=3, input_filters=40, output_filters=80,
          expand_ratio=6, id_skip=True, strides=[2, 2], se_ratio=0.25),
          
BlockArgs(kernel_size=5, num_repeat=3, input_filters=80, output_filters=112,
          expand_ratio=6, id_skip=True, strides=[1, 1], se_ratio=0.25),
          
BlockArgs(kernel_size=5, num_repeat=4, input_filters=112, output_filters=192,
          expand_ratio=6, id_skip=True, strides=[2, 2], se_ratio=0.25),
          
BlockArgs(kernel_size=3, num_repeat=1, input_filters=192, output_filters=320,
          expand_ratio=6, id_skip=True, strides=[1, 1], se_ratio=0.25)

MBConv

移动翻转瓶颈卷积(mobile inverted bottleneck convolution,MBConv),类似于 MobileNetV2 和 MnasNet,由深度可分离卷积Depthwise Convolution和SENet构成。

每个MBConv的网络结构如下:
MBConv = 1x1升维 + Depthwise Convolution + SENet + 1x1降维 + add
在这里插入图片描述

SENet

该网络为压缩与激发网络(Squeeze-and-Excitation Network,SENet),即注意力机制。该思想由Momenta公司提出,并发于2017CVPR。SENet网络的创新点在于关注channel之间的关系,希望模型可以自动学习到不同channel特征的重要程度。

其中第一个FC层降维,降维系数为r,然后ReLU激活,最后的FC层恢复原始的维度。
在这里插入图片描述
SENet添加位置示意:
在这里插入图片描述
代码实现

num_reduced_filters = max(1, int(block_args.input_filters * block_args.se_ratio))
se_tensor = layers.GlobalAveragePooling2D(name=prefix + 'se_squeeze')(x)

target_shape = (1, 1, filters) if backend.image_data_format() == 'channels_last' else (filters, 1, 1)
se_tensor = layers.Reshape(target_shape, name=prefix + 'se_reshape')(se_tensor)

se_tensor = layers.Conv2D(num_reduced_filters, 1,
                          activation=activation,
                          padding='same',
                          use_bias=True,
                          kernel_initializer=CONV_KERNEL_INITIALIZER,
                          name=prefix + 'se_reduce')(se_tensor)
se_tensor = layers.Conv2D(filters, 1,
                          activation='sigmoid',
                          padding='same',
                          use_bias=True,
                          kernel_initializer=CONV_KERNEL_INITIALIZER,
                          name=prefix + 'se_expand')(se_tensor)

x = layers.multiply([x, se_tensor], name=prefix + 'se_excite')

EfficientNet系列缩放尺度

在B0网络的基础上,根据width_coefficient、depth_coefficient对Block块的参数进行缩放,其中,width_coefficient决定了filters的大小,即网络的channel;depth_coefficient决定了num_repeat的大小,即网络的深度。

从左至右分别为width, depth, resolution, dropout
'efficientnet-b0': (1.0, 1.0, 224, 0.2),
'efficientnet-b1': (1.0, 1.1, 240, 0.2),
'efficientnet-b2': (1.1, 1.2, 260, 0.3),
'efficientnet-b3': (1.2, 1.4, 300, 0.3),
'efficientnet-b4': (1.4, 1.8, 380, 0.4),
'efficientnet-b5': (1.6, 2.2, 456, 0.4),
'efficientnet-b6': (1.8, 2.6, 528, 0.5),
'efficientnet-b7': (2.0, 3.1, 600, 0.5),

EfficientNet系列表现

EfficientNet Performance Results on ImageNet
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值