首页 > 编程知识 正文

efficientnet是什么,efficientnet模型

时间:2023-05-06 03:28:55 阅读:287075 作者:4305

EfficientNet网络解析 效果创新点模型结构组合缩放系数EfficientNet-B0网络结构MBConvSENet EfficientNet系列缩放尺度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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。